CVE-2024-21485 json
Dash apps vulnerable to Cross-site Scripting
published 2024-02-02 2 y ago modified 2026-07-20 3 mo ago also GHSA-547x-748v-vp6p , PYSEC-2024-35 , PYSEC-2026-219 , PYSEC-2026-220 , EUVD-2024-0032
- cvss
- 6.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 1.5%
- EPSS 1.5% chance of exploitation in 30 days, percentile 74%
- public exploits
- 0
- none known, plus a Nuclei check
Summary
Versions of the package dash-core-components before 2.13.0; versions of the package dash-core-components before 2.0.0; versions of the package dash before 2.15.0; versions of the package dash-html-components before 2.0.0; versions of the package dash-html-components before 2.0.16 are vulnerable to Cross-site Scripting (XSS) when the href of the a tag is controlled by an adversary. An authenticated attacker who stores a view that exploits this vulnerability could steal the data that's visible to another user who opens that view - not just the data already included on the page, but they could also, in theory, make additional requests and access other data accessible to this user. In some cases, they could also steal the access tokens of that user, which would allow the attacker to act as that user, including viewing other apps and resources hosted on the same server. **Note:** This is only exploitable in Dash apps that include some mechanism to store user input to be reloaded by a different user.
Patch / fix
- npm dash-core-components 2.13.0
- pypi dash-html-components 2.0.0
- pypi dash-core-components 2.0.0
- pypi dash 2.13.0, 2.15.0
- npm dash-html-components 2.0.16
- n/a dash-core-components 2.0.0, 2.13.0
- n/a dash 2.15.0
- n/a dash-html-components 2.0.0, 2.0.16
- github.com/plotly/dash@9920073 commit
- github.com/plotly/dash#2732 pull request
- github.com/plotly/dash/releases/tag/v2.15.0 release
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 18 mo ago
Exploit prediction
1.49% chance of exploitation in the next 30 days, higher than 74% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- Nuclei template Dash Framework - Cross-site Scripting nuclei detection template
- security.snyk.io https://security.snyk.io/vuln/SNYK-JS-DASHCORECOMPONENTS-6183084 referenced PoC, tagged "exploit" by a source, unverified
- security.snyk.io https://security.snyk.io/vuln/SNYK-PYTHON-DASHCORECOMPONENTS-6226334 referenced PoC, tagged "exploit" by a source, unverified
- security.snyk.io https://security.snyk.io/vuln/SNYK-PYTHON-DASH-6226335 referenced PoC, tagged "exploit" by a source, unverified
- security.snyk.io https://security.snyk.io/vuln/SNYK-PYTHON-DASHHTMLCOMPONENTS-6226336 referenced PoC, tagged "exploit" by a source, unverified
- security.snyk.io https://security.snyk.io/vuln/SNYK-JS-DASHHTMLCOMPONENTS-6226337 referenced PoC, tagged "exploit" by a source, unverified
- github.com https://github.com/plotly/dash/issues/2729 referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:L/A:N/E:P |
| CNA | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:L/A:N |
| NVD | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| GitHub | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:L/A:N |
| OSV | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | dash-core-components | <2.13.0 |
2.13.0 |
| pypi | dash-html-components | <2.0.0 |
2.0.0 |
| pypi | dash-core-components | <2.0.0 |
2.0.0 |
| pypi | dash | <2.15.0 <2.13.0 >=2.14.0, <2.15.0 |
2.15.0 2.13.0 |
| npm | dash-html-components | <2.0.16 |
2.0.16 |
Affected products
- n/a dash-core-components
- n/a dash
- n/a dash-html-components
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
-
github.com
/plotly/dash/pull/2732
web, issue-tracking, patch, report
-
github.com
/plotly/dash/commit/9920073c9a8619ae8f90fcec1924f2f3a4332a8c
web, patch
-
security.snyk.io
/vuln/SNYK-JS-DASHCORECOMPONENTS-6183084
web, exploit, third-party-advisory, evidence
-
security.snyk.io
/vuln/SNYK-PYTHON-DASHCORECOMPONENTS-6226334
web, exploit, third-party-advisory, evidence
-
security.snyk.io
/vuln/SNYK-PYTHON-DASH-6226335
web, exploit, third-party-advisory, evidence
-
security.snyk.io
/vuln/SNYK-PYTHON-DASHHTMLCOMPONENTS-6226336
web, exploit, third-party-advisory, evidence
-
security.snyk.io
/vuln/SNYK-JS-DASHHTMLCOMPONENTS-6226337
web, exploit, third-party-advisory, evidence
-
github.com
/plotly/dash/issues/2729
web, exploit, issue-tracking, evidence, report
-
github.com
/plotly/dash/releases/tag/v2.15.0
web, release-notes
-
nvd.nist.gov
/vuln/detail/CVE-2024-21485
advisory
-
github.com
/advisories/GHSA-547x-748v-vp6p
advisory
-
github.com
/plotly/dash
package
-
github.com
/pypa/advisory-database/tree/main/vulns/dash-core-components/PYSEC-2026-219.yaml
web
-
github.com
/pypa/advisory-database/tree/main/vulns/dash-html-components/PYSEC-2026-220.yaml
web
-
github.com
/pypa/advisory-database/tree/main/vulns/dash/PYSEC-2024-35.yaml
web
Sources
- CVE List CVE-2024-21485
- GitHub Advisory GHSA-547x-748v-vp6p
- NVD CVE-2024-21485
- OSV PYSEC-2024-35
- OSV PYSEC-2026-219
- OSV PYSEC-2026-220
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.