German Cybersecurity researchers from Cologne University & the University of Hamburg coined a new class of web cache poisoning attack dubbed CPDoS that let an attacker force a particular website to deliver an error page instead of the legitimate one.
Web caching is a key component of modern architecture, the cache promotes the performance of the website and offers additional protection such as DoS attack.
According to researchers, a simple request is sufficient to replace the genuine content in the cache by an error page and the attack remains under the radar as web application firewalls scan for huge irregular network traffic.
How the CPDoS Attack works
CPDoS expanded as Cache-Poisoned Denial-of-Service, exploits the semantic gap between the shared cache and the origin server.
The attacker can initiate the attack by sending an HTTP request with a malicious header targeting a specific victim domain. The request will get processed by intermediate cache and remains undetected.
Then the cache request will be forwarded to the origin server and the origin server provokes error because of malicious header.
The origin server returns with an error message and the error will get stored in the cache instead of the legitimate content.
If the attack is successful then the attacker will retrieve an error page in response and the Legitimate users reaching the website will get the cached error page.
Three Variations of CPDoS
Attackers can send the Malformed request in the following three types.
HTTP Header Oversize (HHO)
The HHO attack works by sending a larger header than the size supported by the origin server, the attack works in the case that web application uses a cache that accepts a larger header size limit than the origin server limit.
HTTP Meta Character (HMC)
With the HMC CPDoS attack, instead of sending the oversized header, the attacker bypasses the cache bypassing invalid meta characters, e.g., control characters such as line break/carriage return (\n), line feed (\r) or bell (\a).
HTTP Method Override (HMO) Attack
HTTP Method Override (HMO) method used by attackers to override the blocked requests such as DELETE, PUT and PATCH.
If the error page was injected then the CDN will distribute the error page to all of the edge locations within the CDN.
“We analyze the caching behavior of error pages of fifteen web caching solutions and contrast them to the HTTP specifications . We identify one proxy cache product and five CDN services that are vulnerable to CPDoS.”
With the analysis, researchers found that one proxy cache product and five CDN services that are vulnerable to CPDoS.
Researchers published a paper titled “Your Cache Has Fallen: Cache-Poisoned Denial-of-Service Attack” with complete details.
The vulnerability was reported to the affected vendors.
Amazon confirms the vulnerability in CloudFront and fixed the issue by stopping caching error pages with the status code 400 Bad Request by default.
Microsoft Fixed the Vulnerability CVE-2019-0941, by changing the way requests processed by filters.
Play 1 developers confirmed the issue and fixed by providing a security patch that limits the XHTTP-Method-Override header.
Researchers contacted other vendors including Flask, but no response from them, so the Flask-based web applications are still vulnerable to CPDoS.
- HTTP pages to be cached according to the policies of the HTTP standard.
- WAF to be deployed in front of the cache to block malicious requests.
- Another effective method is to exclude error pages from caching.