# CVE-2026-22778: vLLM leaks a heap address when PIL throws an error - Exploited (CISA KEV): no - Published: 2026-02-02 - CVSS: 9.8 CRITICAL (v3.1) - EPSS: 18.3% (97th percentile) - CWE: CWE-532 vLLM is an inference and serving engine for large language models (LLMs). From 0.8.3 to before 0.14.1, when an invalid image is sent to vLLM's multimodal endpoint, PIL throws an error. vLLM returns this error to the client, leaking a heap address. With this leak, we reduce ASLR from 4 billion guesses to ~8 guesses. This vulnerability can be chained a heap overflow with JPEG2000 decoder in OpenCV/FFmpeg to achieve remote code execution. This vulnerability is fixed in 0.14.1. ## Edge WAF coverage (claimed by vendors, not measured) | Vendor | Status | First rule | Days after publication | |---|---|---|---| | Cloudflare | No public claim | — | — | | AWS | No public claim | — | — | | Microsoft Azure | No public claim | — | — | | Google Cloud | No public claim | — | — | | Fastly | Before feed history | — | — | | F5 | Rule published | 2026-09-16 | 226 | | Akamai | No public source | — | — | | OWASP CRS | No public claim | — | — | ### F5 - 2026-09-16 · new · rule 200009381 > Added: signature 200009381 "vLLM Information Disclosure" (Information Leakage, risk High), systems: Other Web Server. References: CVE-2026-22778. Source: https://docs.cloud.f5.com/docs-v2/platform/changelogs/security-details-changelog ## Our test (measured) - OWASP Core Rule Set 4.25.0, paranoia level 1, anomaly threshold 5, default CRS settings: partial (1 of 2 requests blocked), template CVE-2026-22778, 2026-11-02 - OWASP Core Rule Set 4.25.0, paranoia level 2, anomaly threshold 5, default CRS settings: partial (1 of 2 requests blocked), template CVE-2026-22778, 2026-11-02 "No public claim" means no vendor statement names this CVE; "Before feed history" means the CVE is older than the vendor feed. In both cases generic rules may still block it. HTML: https://cve.vigilbase.com/cve/CVE-2026-22778 · JSON: https://cve.vigilbase.com/api/v1/cves/CVE-2026-22778