CVE-2026-58186
CVE-2026-58186 is a cache poisoning vulnerability in Apache Traffic Server's webp_transform plugin, and it reveals a structural flaw that goes beyond this specific plugin. The webp_transform plugin decodes image content and serves it with Content-Type headers that the ATS host treats as authoritative—the caching layer accepts whatever the plugin claims about the content type without verification. This is the core vulnerability: the plugin API contract allows transformation plugins to make security-critical metadata claims that the host architecture accepts as trusted. An attacker who can influence what the plugin transforms—typically through crafted requests with specific Accept headers or by controlling input to the transformation pipeline—can poison the cache with content that carries a legitimate-looking Content-Type header but contains something else entirely. Because ATS sits as middleware between clients and origins, often in CDN or enterprise caching layers, this poisoned content gets served to every user hitting that cache entry, not just a single request. The blast radius is inherently larger than the same vulnerability in a leaf service. This is at least the third CVE in four years involving ATS plugins that perform content transformation with cache interaction, all following the same pattern: unsafe content handling where the plugin's metadata claims go unverified. The API design fundamentally allows this—it was not built with 'plugins as attack surface' in mind. Your immediate actions: First, determine if the webp_transform plugin is enabled in your ATS deployment. If it is, upgrading to 10.1.4 is the direct fix, but verify what the patch actually addresses. If it only adds validation before decoding (rejecting malformed input before the decoder runs), that's a localized fix—it addresses this attack vector but leaves the underlying trust model intact, meaning future plugins could reintroduce the same flaw. If it enforces Content-Type verification against actual content after transformation, that's more robust because it constrains the blast radius at the caching layer even if another code path still decodes unsafely. Beyond patching, audit any other transformation plugins you have running. Each one that sets Content-Type headers is operating under the same implicit trust contract. Treat plugin-set headers as untrusted input requiring validation in your threat model. If you run ATS as shared infrastructure serving multiple tenants or origins, understand that cache poisoning in the transformation layer can cross isolation boundaries—examine whether your cache keying strategy provides sufficient separation.
Reviewed through automated stages and approved by a human before publication.