CVE-2021-41182
Medium · 6.5CVSS
6.5
EPSS
39.4%
Published
Oct 26, 2021
CISA due date
—
Cloudanix analysis
A widely used web interface component lets attackers run harmful code inside users' browsers if sites have not updated to newer versions.
- Exploitation
- Requires User Interaction
- Attacker needs
- None
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Library
- Class
- XSS
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
Cross-site scripting flaw in jQuery UI allows arbitrary JavaScript execution through unsanitized title option values passed to dialog widgets.
Why it matters to the business
Attackers can steal session tokens, perform actions on behalf of users, or deface web interfaces in any application using the affected library versions, increasing breach risk and support costs across many sites.
How an attack unfolds
An attacker identifies a page using a vulnerable jQuery UI version, supplies a malicious title containing script tags or event handlers to a dialog constructor, and induces a user action that opens the dialog so the payload executes in the victim's browser context.
How to fix it
Upgrade jquery/jquery-ui to commit 6d072c596a81d99a77fc36c14caf3eb3a803689e, drupal/drupal to commit c991d5749144c851b71aa7be721715d7e346526f, and wordpress (Debian 4.0) to 2.0.10-1etch1 or later; remove or replace any remaining vulnerable copies of jquery-ui.js.
How to confirm the fix worked
Verify the deployed jquery-ui source or minified file matches a fixed commit hash, run dependency scanners against package manifests, and confirm dialog initialization no longer renders raw HTML from the title option.
Typical attack path
- Scan target application to confirm presence and version of jquery-ui
- Craft payload that injects executable script via the dialog title option
- Deliver payload through user-controlled input or URL parameters
- Trigger dialog rendering in the victim's browser session
- Execute malicious script to exfiltrate data or perform unauthorized actions
How to detect it
Search web server and application logs for requests containing script tags or event handlers in parameters that feed dialog title options; inspect browser console errors or network requests triggered by dialog open events for unexpected script execution.
- jquery-ui.js containing unpatched dialog title handling before commit 6d072c596a81d99a77fc36c14caf3eb3a803689e
- dialog title values containing <script> or on* event handlers in access logs
What your security team should do
- Prioritize upgrade of all jquery-ui instances within 48 hours given exploit availability and EPSS score of 0.39
- Scan codebases and CDN references for the vulnerable library versions listed
- Implement content security policy headers to limit script execution from unexpected sources
- Review and sanitize all inputs passed to jQuery UI dialog options
- Monitor vulnerability feeds for any new threat actor campaigns targeting this family
The record
jQuery-UI is the official jQuery user interface library. Prior to version 1.13.0, accepting the value of the `altField` option of the Datepicker widget from untrusted sources may execute untrusted code. The issue is fixed in jQuery UI 1.13.0. Any string value passed to the `altField` option is now treated as a CSS selector. A workaround is to not accept the value of the `altField` option from untrusted sources.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.webjars.npm:jquery-ui | 0 | 1.13.0 |
| NuGet | jQuery.UI.Combined | 0 | 1.13.0 |
| RubyGems | jquery-ui-rails | 0 | 7.0.0 |
| npm | jquery-ui | 0 | 1.13.0 |
| Bitnami | drupal | 7.0.0 | 7.86.0 |
| Debian:10 | jqueryui | 0 | 1.12.1+dfsg-5+deb10u1 |
| Debian:10 | otrs2 | 0 | 6.0.16-2+deb10u1 |
| Debian:11 | jqueryui | 0 | 1.12.1+dfsg-8+deb11u1 |
| Debian:11 | otrs2 | 0 | No fix |
| Debian:12 | jqueryui | 0 | 1.13.0+dfsg-1 |
| Debian:13 | jqueryui | 0 | 1.13.0+dfsg-1 |
| Debian:14 | jqueryui | 0 | 1.13.0+dfsg-1 |
| Debian:9 | drupal7 | 0 | 7.52-2+deb9u17 |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-backend | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-dbscripts | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-health-check-bundler | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-restapi | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-setup | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-setup-base | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-setup-plugin-cinderlib | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-setup-plugin-imageio | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-setup-plugin-ovirt-engine | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-setup-plugin-ovirt-engine-common | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-setup-plugin-vmconsole-proxy-helper | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-setup-plugin-websocket-proxy | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-tools | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-tools-backup | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-ui-extensions | 0 | 0:1.3.3-1.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-vmconsole-proxy-helper | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-webadmin-portal | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-engine-websocket-proxy | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | ovirt-web-ui | 0 | 0:1.8.1-2.el8ev |
| Red Hat:rhev_manager:4.4:el8 | python3-ovirt-engine-lib | 0 | 0:4.5.0.7-0.9.el8ev |
| Red Hat:rhev_manager:4.4:el8 | rhvm | 0 | 0:4.5.0.7-0.9.el8ev |
| SUSE:OpenStack Cloud 9 | ardana-barbican | 0 | 9.0+git.1644879908.8a641c1-3.13.1 |
| SUSE:OpenStack Cloud 9 | grafana | 0 | 6.7.4-3.26.1 |
| SUSE:OpenStack Cloud 9 | openstack-barbican | 0 | 7.0.1~dev24-3.14.1 |
| SUSE:OpenStack Cloud 9 | openstack-cinder | 0 | 13.0.10~dev24-3.34.2 |
| SUSE:OpenStack Cloud 9 | openstack-heat-gbp | 0 | 14.0.1~dev4-3.9.1 |
| SUSE:OpenStack Cloud 9 | openstack-horizon-plugin-gbp-ui | 0 | 14.0.1~dev3-3.9.1 |
| SUSE:OpenStack Cloud 9 | openstack-ironic | 0 | 11.1.5~dev18-3.28.2 |
| SUSE:OpenStack Cloud 9 | openstack-keystone | 0 | 14.2.1~dev9-3.28.2 |
| SUSE:OpenStack Cloud 9 | openstack-neutron | 0 | 13.0.8~dev206-3.40.1 |
| SUSE:OpenStack Cloud 9 | openstack-neutron-gbp | 0 | 14.0.1~dev33-3.31.1 |
| SUSE:OpenStack Cloud 9 | python-Pillow | 0 | 5.2.0-3.17.1 |
| SUSE:OpenStack Cloud 9 | python-XStatic-jquery-ui | 0 | 1.13.0.1-4.3.1 |
| SUSE:OpenStack Cloud 9 | python-lxml | 0 | 4.2.4-3.3.1 |
| SUSE:OpenStack Cloud 9 | release-notes-suse-openstack-cloud | 0 | 9.20220413-3.30.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-barbican | 0 | 7.0.1~dev24-3.35.2 |
| SUSE:OpenStack Cloud 9 | venv-openstack-cinder | 0 | 13.0.10~dev24-3.38.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-designate | 0 | 7.0.2~dev2-3.35.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-glance | 0 | 17.0.1~dev30-3.33.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-heat | 0 | 11.0.4~dev4-3.35.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-horizon | 0 | 14.1.1~dev11-4.39.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-ironic | 0 | 11.1.5~dev18-4.33.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-keystone | 0 | 14.2.1~dev9-3.36.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-magnum | 0 | 7.2.1~dev1-4.35.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-manila | 0 | 7.4.2~dev60-3.41.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-monasca | 0 | 2.7.1~dev10-3.37.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-monasca-ceilometer | 0 | 1.8.2~dev3-3.35.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-neutron | 0 | 13.0.8~dev206-6.39.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-nova | 0 | 18.3.1~dev91-3.39.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-octavia | 0 | 3.2.3~dev7-4.35.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-sahara | 0 | 9.0.2~dev15-3.35.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-swift | 0 | 2.19.2~dev48-2.30.1 |
| SUSE:OpenStack Cloud Crowbar 9 | grafana | 0 | 6.7.4-3.26.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-barbican | 0 | 7.0.1~dev24-3.14.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-cinder | 0 | 13.0.10~dev24-3.34.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-heat-gbp | 0 | 14.0.1~dev4-3.9.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-horizon-plugin-gbp-ui | 0 | 14.0.1~dev3-3.9.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-ironic | 0 | 11.1.5~dev18-3.28.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-keystone | 0 | 14.2.1~dev9-3.28.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-neutron | 0 | 13.0.8~dev206-3.40.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-neutron-gbp | 0 | 14.0.1~dev33-3.31.1 |
| SUSE:OpenStack Cloud Crowbar 9 | python-Pillow | 0 | 5.2.0-3.17.1 |
| SUSE:OpenStack Cloud Crowbar 9 | python-XStatic-jquery-ui | 0 | 1.13.0.1-4.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | python-lxml | 0 | 4.2.4-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | release-notes-suse-openstack-cloud | 0 | 9.20220413-3.30.1 |
| SUSE:OpenStack Cloud Crowbar 9 | rubygem-sinatra | 0 | 1.4.6-4.3.1 |
| Ubuntu:20.04:LTS | jqueryui | 0 | 1.12.1+dfsg-5ubuntu0.20.04.1 |
| Ubuntu:22.04:LTS | jqueryui | 0 | 1.13.1+dfsg-1 |
| Ubuntu:Pro:14.04:LTS | jqueryui | 0 | 1.10.1+dfsg-1ubuntu0.14.04.1~esm1 |
| Ubuntu:Pro:16.04:LTS | jqueryui | 0 | 1.10.1+dfsg-1ubuntu0.16.04.1~esm1 |
| Ubuntu:Pro:18.04:LTS | jqueryui | 0 | 1.12.1+dfsg-5ubuntu0.18.04.1~esm3 |
| Ubuntu:Pro:20.04:LTS | jqueryui | 0 | 1.12.1+dfsg-5ubuntu0.20.04.1 |
| packagist | drupal/drupal | 7.0 | No fix |
Related vulnerabilities
- CVE-2021-41184 jQuery-UI is the official jQuery user interface library. Also affects org.webjars.npm:jquery-ui
- CVE-2021-41183 jQuery-UI is the official jQuery user interface library. Also affects org.webjars.npm:jquery-ui
- CVE-2016-7103 Cross-site scripting (XSS) vulnerability in jQuery UI before 1.12.0 might allow remote… Also affects org.webjars.npm:jquery-ui
- CVE-2010-5312 Cross-site scripting (XSS) vulnerability in jquery.ui.dialog.js in the Dialog widget in… Also affects org.webjars.npm:jquery-ui
- GHSA-83v7-c2cf-p9c2 Drupal core allows Forceful Browsing Also affects drupal
- GHSA-h89p-5896-f4q8 Drupal core allows Content Spoofing Also affects drupal
- GHSA-mhpg-hpj5-73r2 Drupal core allows Exploiting Incorrectly Configured Access Control Security Levels Also affects drupal
- GHSA-m6vv-vcj8-w8m7 Drupal core allows Object Injection Also affects drupal