Skip to content

security(static): upgrade jQuery 1.12.4 → 3.7.1, drop unreferenced 3.3.1 bundle#3378

Closed
deacon-mp wants to merge 1 commit into
masterfrom
security/jquery-upgrade-cve-2020-11023
Closed

security(static): upgrade jQuery 1.12.4 → 3.7.1, drop unreferenced 3.3.1 bundle#3378
deacon-mp wants to merge 1 commit into
masterfrom
security/jquery-upgrade-cve-2020-11023

Conversation

@deacon-mp
Copy link
Copy Markdown
Contributor

Summary

`static/jquery/jquery.js` was jQuery 1.12.4 (released 2016), loaded by `templates/core.html` on every page of the operator UI. Affected by:

CVE Issue Fixed in jQuery
CVE-2015-9251 XSS via cross-domain Ajax responses 3.0
CVE-2019-11358 prototype pollution in `$.extend` 3.4
CVE-2020-11022 XSS via HTML-manipulation methods (`.html()`, `.append()`, `.clone()`, `.before()`, etc.) 3.5
CVE-2020-11023 XSS via `` elements in HTML manipulation 3.5

`static/jquery/jquery.min.js` was a stale 3.3.1 copy not referenced by any template (verified with `grep -r 'jquery.min' templates/ static/ caldera/`); deleted rather than upgraded.

`jquery.multi-select.js` (v0.9.12) is unchanged — it's compatible with jQuery 3.x.

Fix

Replaced `jquery.js` with jQuery 3.7.1 (current stable), downloaded from `code.jquery.com` and cross-verified against `cdn.jsdelivr.net`:

```
SHA-256 78a85aca2f0b110c29e0d2b137e09f0a1fb7a8e554b499f740d6744dc8962cfe
size 285,314 bytes
```

Test plan

  • Hard-refresh `/gui` (or whatever the operator UI URL is) and confirm no JS console errors.
  • Smoke-test the multi-select dropdowns (used in adversary / ability / source selection screens) — these depend on `jquery.multi-select.js` which sits on top of jQuery; if v0.9.12 has any jQuery 3.x incompatibility we'd see it here.
  • Smoke-test the agent table, ability search, operation flow — basic Ajax round-trips.

Refs

…3.1 bundle

static/jquery/jquery.js was jQuery 1.12.4 (2016), loaded by templates/core.html
on every page of the operator UI. Affected by:

  * CVE-2015-9251 — XSS via cross-domain Ajax responses (fixed in jQuery 3.0)
  * CVE-2019-11358 — prototype pollution in $.extend (fixed in 3.4)
  * CVE-2020-11022 — XSS via HTML manipulation methods (.html, .append, etc.)
  * CVE-2020-11023 — XSS via <option> elements in HTML manipulation
                     (the latter two fixed in 3.5)

Replaced with jQuery 3.7.1 (current stable), downloaded from code.jquery.com
and cross-verified against cdn.jsdelivr.net:

  SHA-256 78a85aca2f0b110c29e0d2b137e09f0a1fb7a8e554b499f740d6744dc8962cfe

static/jquery/jquery.min.js was a stale 3.3.1 copy not referenced by any
template (verified with `grep -r 'jquery.min'`); deleted rather than upgraded.

jquery.multi-select.js (v0.9.12) is unchanged — it works against jQuery 3.x.

Reported externally on 2026-05-18.
@deacon-mp deacon-mp requested a review from Copilot May 18, 2026 23:16
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@deacon-mp
Copy link
Copy Markdown
Contributor Author

Heads-up — there is significant overlap with existing PRs and I want to flag it before this auto-merges or someone reviews it without context:

If #3356 lands soon, #3378 is throwaway. If #3356 is non-trivial to land (it touches 14k lines of operator UI), #3378 is a tactical bridge that closes all four CVEs without disturbing call sites.

Maintainers' call. Happy to close this in favour of #3356 if that's the chosen direction, or in favour of #3352 if the goal is the minimal back-port. I am not pushing for #3378 specifically — flagging the trade-off so the right one ships.

@deacon-mp
Copy link
Copy Markdown
Contributor Author

Closing in favour of #3356 (full removal of first-party jQuery, replacing with vanilla JS) per maintainer direction. #3356 is the strategic fix; this PR was a tactical-upgrade bridge that becomes unnecessary once #3356 lands.

If #3356 stalls and the jQuery 1.12.4 CVEs (CVE-2015-9251 / CVE-2019-11358 / CVE-2020-11022 / CVE-2020-11023) need to be closed sooner, this branch can be re-opened or its commit (54cac060) cherry-picked.

@deacon-mp deacon-mp closed this May 18, 2026
@deacon-mp deacon-mp deleted the security/jquery-upgrade-cve-2020-11023 branch May 18, 2026 23:18
@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants