jQuery UI vulnerable to XSS when refreshing a checkboxradio with an HTML-like initial text labelGHSA-h6gj-6jjq-h8g9
MEDIUMFix: jquery/jquery-ui@8cc5baeGHSA-h6gj-6jjq-h8g9 is a medium-severity (CVSS 6.1) Cross-site Scripting (XSS) vulnerability in org.webjars.npm:jquery-ui. 1 public exploit or proof-of-concept reference is indexed, so weaponization risk is real. A fix is available for org.webjars.npm:jquery-ui — see the affected versions and patch details below.
Exploitation Status
Proof-of-concept exploit code exists
- CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.
Exploitation and automatability from CISA’s SSVC triage for GHSA-h6gj-6jjq-h8g9.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.
jquery-uinpmDescription
Impact
Initializing a checkboxradio widget on an input enclosed within a label makes that parent label contents considered as the input label. If you call .checkboxradio( "refresh" ) on such a widget and the initial HTML contained encoded HTML entities, they will erroneously get decoded. This can lead to potentially executing JavaScript code.
For example, starting with the following initial secure HTML:
<label>
<input id="test-input">
<img src=x onerror="alert(1)">
</label>
and calling:
$( "#test-input" ).checkboxradio();
$( "#test-input" ).checkboxradio( "refresh" );
will turn the initial HTML into:
<label>
<!-- some jQuery UI elements -->
<input id="test-input">
<img src=x onerror="alert(1)">
</label>
and the alert will get executed.
Patches
The bug has been patched in jQuery UI 1.13.2.
Workarounds
To remediate the issue, if you can change the initial HTML, you can wrap all the non-input contents of the label in a span:
<label>
<input id="test-input">
<span><img src=x onerror="alert(1)"></span>
</label>
References
https://blog.jqueryui.com/2022/07/jquery-ui-1-13-2-released/
For more information
If you have any questions or comments about this advisory, search for a relevant issue in the jQuery UI repo. If you don't find an answer, open a new issue.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| ☕Maven | org.webjars.npm:jquery-ui | all versions | 1.13.2org.webjars.npm:jquery-ui:1.13.2 |
| 📦npm | jquery-ui | all versions | 1.13.2npm install jquery-ui@1.13.2 |
| .NETNuGet | jQuery.UI.Combined | all versions | 1.13.2dotnet add package jQuery.UI.Combined --version 1.13.2 |
| 💎RubyGems | jquery-ui-rails | all versions | 8.0.0bundle update jquery-ui-rails --conservative |
Affected Products
debian linuxdebianjquery ui checkboxradiodrupalfedorafedoraprojectjquery uijqueryuih300s firmwarenetapph410c firmwarenetappResearch use only. For defensive security, authorized penetration testing, and academic research only. Never execute exploit code against systems without explicit written authorization.
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for org.webjars.npm:jquery-ui, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update org.webjars.npm:jquery-ui to 1.13.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-h6gj-6jjq-h8g9 is resolved across your whole dependency graph.
Workarounds
Escape or sanitise the affected output on the server side rather than relying on client-side filtering, and add a Content-Security-Policy that blocks inline script execution so injected markup cannot run even if it reaches the page.
Frequently Asked Questions
Is GHSA-h6gj-6jjq-h8g9 in your dependencies?
Find it across Maven, npm, NuGet, including transitive dependencies.