{"id":"CVE-2026-114054","kind":"vulnerability","aliases":["CVE-2026-114054"],"related":[],"title":"vLLM: cache key collisions let authenticated users read other requests' media","description":"vLLM before 0.31.0 contains a cache aliasing vulnerability that allows authenticated attackers to collide shared cache keys by supplying caller-controlled values such as EXIF ImageID or cache_salt. Attackers can set a UUID EXIF ImageID to receive another request's cached processed media, or match cache_salt to a LoRA name to reuse first-block KV state.","summary":"vLLM before 0.31.0 builds shared cache keys from caller-controlled values such as an EXIF ImageID or cache_salt. An authenticated attacker can craft a value that matches another request's cache entry and receive that request's processed media or reuse its first-block KV state.","severity":"high","cvss":7.1,"epss":0.00275,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ai-tooling","llm-inference","multi-tenant","self-hosted","vllm"],"not_affected_if":["no-untrusted-callers","single-tenant"],"how_to_check":"- Check the installed version with `pip show vllm` or `python -c \"import vllm; print(vllm.__version__)\"`, and flag anything below `0.31.0`.\n- Check whether the API server accepts `cache_salt` or multimodal image inputs from untrusted callers.","fix":"- Upgrade vLLM to `0.31.0` or later.\n- Until upgraded, restrict API access to trusted callers and do not expose `cache_salt` or EXIF-based image input to other tenants.","status":"open","published_at":"2026-10-21T01:17:28+00:00","first_seen_at":"2026-10-23T21:57:27+00:00","triaged_at":"2026-10-25T03:32:05+00:00","updated_at":"2026-10-25T03:32:05+00:00","category":"ai-tooling","confidence":0.6,"triage":{"at":"2026-10-25T03:32:05Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade vLLM to `0.31.0` or later.\n- Until upgraded, restrict API access to trusted callers and do not expose `cache_salt` or EXIF-based image input to other tenants.","reach":"network","title":"vLLM: cache key collisions let authenticated users read other requests' media","impact":"medium","summary":"vLLM before 0.31.0 builds shared cache keys from caller-controlled values such as an EXIF ImageID or cache_salt. An authenticated attacker can craft a value that matches another request's cache entry and receive that request's processed media or reuse its first-block KV state.","category":"ai-tooling","nicknames":[],"who_cares":["vllm","self-hosted","llm-inference","multi-tenant"],"confidence":0.6,"needs_auth":"yes","worst_case":"attacker reads another request's processed media or reuses cached KV state","analyst_note":"Confirm which vLLM code paths (multimodal EXIF ImageID handling, cache_salt prefix caching) are affected and whether a config flag disables them; check the NVD entry for the CVSS vector.","how_to_check":"- Check the installed version with `pip show vllm` or `python -c \"import vllm; print(vllm.__version__)\"`, and flag anything below `0.31.0`.\n- Check whether the API server accepts `cache_salt` or multimodal image inputs from untrusted callers.","needs_analyst":true,"not_affected_if":["single-tenant","no-untrusted-callers"],"who_is_affected":"Teams that run vLLM as a multi-user or multi-tenant inference server where authenticated callers can send multimodal inputs or set cache_salt. A single-tenant deployment where every caller is trusted is at much lower risk. unknown beyond that.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000662,"input_tokens":3389,"output_tokens":647,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-114054':14A,17A '-2026':13A,16A '0.31.0':33B,82C 'ai':19B 'ai-tool':18B 'alias':86C 'allow':89C 'anoth':60B,119C 'attack':53B,91C,110C 'authent':6A,52B,90C 'block':77B,137C 'build':34B 'cach':2A,36B,49B,63B,85C,95C,108C,122C,127C 'caller':40B,100C 'caller-control':39B,99C 'collid':93C 'collis':4A 'contain':83C 'control':41B,101C 'craft':55B 'cve':12A,15A 'entri':64B 'exif':46B,105C,115C 'first':76B,136C 'first-block':75B,135C 'host':29B 'imageid':47B,106C,116C 'infer':23B 'key':3A,37B,96C 'kv':78B,138C 'let':5A 'llm':22B 'llm-infer':21B 'lora':131C 'match':59B,126C 'media':11A,71B,124C 'multi':25B 'multi-ten':24B 'name':132C 'process':70B,123C 'read':8A 'receiv':66B,118C 'request':10A,61B,68B,120C 'reus':73B,134C 'salt':50B,109C,128C 'self':28B 'self-host':27B 'set':112C 'share':35B,94C 'state':79B,139C 'suppli':98C 'tenant':26B 'tool':20B 'user':7A 'uuid':114C 'valu':42B,57B,102C 'vllm':1A,30B,31B,80C 'vulner':87C","nicknames":[],"mitigations":[],"who_affected":"Teams that run vLLM as a multi-user or multi-tenant inference server where authenticated callers can send multimodal inputs or set cache_salt. A single-tenant deployment where every caller is trusted is at much lower risk. unknown beyond that.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T01:17:28+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-114054","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114054","severity":null,"published_at":"2026-10-21T01:17:28+00:00","modified_at":"2026-10-22T15:44:59+00:00","first_seen_at":"2026-10-23T21:57:27+00:00","fetched_at":"2026-10-23T22:29:01+00:00","note":null},{"source":"epss","external_id":"CVE-2026-114054","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-114054","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T13:15:55+00:00","fetched_at":"2026-10-24T13:15:55+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}