HTTP Desynchronization (Desync) Attack
Explore Pynt's documentation on HTTP desynchronization security tests! Understand how Pynt identifies and mitigates desync vulnerabilities to ensure robust protection for your APIs.
At a Glance: 🔄 HTTP De-synchronization (Desync) Attack
A de-synchronization vulnerability occurs when servers or components in an API ecosystem interpret HTTP requests inconsistently, especially regarding headers like Content-Length
and Transfer-Encoding
. This mismatch allows attackers to "smuggle" malicious requests through the front-end server to the back-end server without detection. These attacks can lead to unauthorized actions, data leakage, or even denial of service. To mitigate these risks, ensure strict validation and uniform interpretation of HTTP headers across all components.
Introduction
HTTP de-synchronization (commonly known as HTTP request smuggling) is a security vulnerability that exploits inconsistencies in how HTTP requests are parsed by front-end and back-end servers. When a server interprets the boundaries of HTTP requests differently, attackers can inject a malicious payload that is processed by one server but hidden from another.
This vulnerability can lead to various outcomes, such as bypassing security controls, extracting sensitive data, or disrupting the application's normal behavior. It typically arises in API gateways, proxies, or load balancers that handle HTTP traffic between components.
What are the common mistakes made by developers?
Inconsistent Parsing of HTTP Headers: Failing to enforce uniform interpretation of HTTP headers like
Content-Length
andTransfer-Encoding
between front-end and back-end servers.Allowing Ambiguous Headers: Accepting ambiguous or conflicting headers, such as requests containing both
Content-Length
andTransfer-Encoding
, without resolving conflicts.Neglecting Request Queue Validation: Overlooking how request queues are processed by intermediary components, enabling attackers to smuggle additional requests.
Trusting User-Supplied Input: Allowing unvalidated input in headers or payloads increases the risk of maliciously crafted requests.
How can I fix HTTP desynchronization issues?
Header Validation
Reject requests with ambiguous or conflicting headers (e.g., both
Content-Length
andTransfer-Encoding
headers).Enforce strict validation of HTTP headers to ensure compliance with RFC standards.
Uniform Parsing Rules
Ensure consistent interpretation of headers and request boundaries across all API components, including proxies, gateways, and back-end servers.
Disable Chunked Encoding (if unnecessary)
If your application does not require
Transfer-Encoding: chunked
, disable it to minimize parsing complexity.
Test cases in this category
This test case queries excessive number of elements:
[MC001] HTTP Desync Attack
Last updated