HTTP Request Smuggling: When Servers Disagree About a Request

HTTP request smuggling exploits differences between servers. Learn how to test for this weakness and reduce exposure.
HTTP request smuggling exploits differences between servers. Learn how to test for this weakness and reduce exposure.

HTTP request smuggling occurs when two systems disagree about where an HTTP request ends. An attacker can exploit this gap to make a front-end server and a back-end server interpret the same traffic differently. This can bypass security controls, expose other users’ requests, or enable attacks against internal applications. Testing how systems handle HTTP requests helps prove whether this weakness is exploitable.

What Is HTTP Request Smuggling?

HTTP request smuggling is a web application attack that targets differences in how servers process HTTP requests.

Many websites use more than one system to handle incoming traffic. A front-end server, reverse proxy, or load balancer may receive a request before passing it to an application server.

Each system needs to agree on where one request ends and the next begins.

However, problems can arise when these systems interpret the same request differently.

For example, a front-end server may treat a request as one complete message, while the back-end server reads part of it as the start of another request.

An attacker may use this difference to send an extra request through the connection.

The front-end server may not recognise that second request as a separate message. As a result, security rules applied at the front end may not cover the request that reaches the back end.

The core weakness is a disagreement between systems about how to read HTTP traffic.

This attack is particularly relevant to websites that use reverse proxies, load balancers, content delivery networks, and application servers.

For a technical explanation, see PortSwigger’s Web Security Academy guide to HTTP request smuggling.

How HTTP Request Smuggling Works

To understand the attack, consider a website with two layers.

The first layer receives requests from the internet. It applies security rules and forwards approved traffic to the application server.

The second layer processes those requests and generates responses.

Under normal conditions, both systems agree on the message boundaries. Each request reaches the correct destination and receives the expected response.

Request smuggling becomes possible when the systems use different rules to decide where a request ends.

How HTTP marks the end of a request

HTTP provides different ways to describe the length of a request body.

Two important headers are:

  • Content-Length: Specifies the length of the message body in bytes.
  • Transfer-Encoding: Can specify how the message body is transferred, including chunked transfer coding.

Problems can arise if a front-end server and a back-end server handle these headers differently.

For example, one system might use the declared content length, while another might follow the transfer encoding.

The systems may then disagree about which bytes belong to the current request.

That disagreement creates an opportunity for an attacker to influence how the back-end server processes subsequent traffic.

The exact behaviour depends on the server software, proxy configuration, protocol, and connection handling.

Common Types of HTTP Request Smuggling

Security researchers commonly describe request smuggling using three main categories.

CL.TE request smuggling

In this pattern, the front-end server uses Content-Length, while the back-end server uses Transfer-Encoding.

Because the systems follow different rules, they may disagree about the end of the request.

An attacker may exploit that difference to make the back end process unexpected data as another request.

TE.CL request smuggling

This pattern reverses the order of interpretation.

The front-end server follows Transfer-Encoding, while the back-end server uses Content-Length.

If the two systems calculate the message boundary differently, part of the traffic may remain unprocessed by one system and be interpreted differently by the other.

TE.TE request smuggling

In this pattern, both systems support transfer encoding, but they interpret or process it differently.

Differences in how they handle the header may allow an attacker to make one system follow a different message boundary from the other.

These labels describe common technical patterns. They do not mean every server pair is vulnerable. Exploitation depends on the specific implementations and configurations involved.

What Can an Attacker Achieve?

HTTP request smuggling can have serious consequences because it targets the connection between systems that process web traffic.

The impact depends on the application architecture, the attacker’s access, and the behaviour of the affected servers.

Bypass front-end security controls

A front-end proxy may inspect requests and block certain paths or request patterns.

However, if the back-end server interprets the traffic differently, an attacker may be able to send a request that does not pass through the expected security checks.

This can undermine controls that rely on the front end accurately interpreting every request.

Access restricted functionality

Some applications use a front-end proxy to restrict access to internal routes or administrative functions.

If the back end receives a request that the front end did not recognise correctly, the attacker may be able to reach functionality that should remain restricted.

Whether this is possible depends on the application’s routing and access controls.

Interfere with other users’ requests

Some request smuggling attacks can affect requests that other users send over a shared connection.

For example, an attacker may cause part of one request to be interpreted as part of another user’s request.

Depending on the application, this can lead to unexpected responses, access to data, or other harmful effects.

Enable further attacks

Request smuggling may also help attackers reach other weaknesses in a web application.

For example, it may support access control bypasses or attacks against internal application routes.

However, request smuggling does not automatically grant access to sensitive data or internal systems. The result depends on what the attacker can reach and what the application permits.

Why Traditional Security Scans May Miss It

Automated scanners are useful for finding known vulnerabilities and common configuration problems.

However, HTTP request smuggling often depends on the way several systems process the same traffic.

A scanner may identify the web application and inspect its responses without proving that the front-end and back-end servers disagree about request boundaries.

Testing must therefore examine the complete request path.

Security teams should consider:

  • Which systems process incoming HTTP traffic
  • How each system handles request length and transfer encoding
  • Whether the systems interpret message boundaries consistently
  • Whether unusual requests produce different results at each layer
  • Whether a parsing difference allows an unexpected request to reach the application
  • Whether the behaviour can be reproduced safely

This is where web application security testing can help. The goal is to test how the application behaves under controlled conditions, rather than relying only on a list of potential weaknesses.

How to Reduce HTTP Request Smuggling Risk

Preventing request smuggling starts with making sure all systems agree on how to process HTTP messages.

Keep server software updated

Use supported versions of reverse proxies, load balancers, web servers, and application frameworks.

Apply security updates promptly. Review vendor guidance for request parsing and HTTP protocol handling.

Make request parsing consistent

Review how each layer handles message length, transfer encoding, and malformed requests.

Where possible, configure systems to reject ambiguous or invalid HTTP messages rather than allowing different components to interpret them differently.

Avoid unsafe connection reuse

Some request smuggling attacks rely on servers reusing connections between requests.

Review how the front end manages back-end connections. Ensure the connection handling model is appropriate for the application and does not allow leftover data to affect a later request.

Review proxy and application boundaries

Document the systems that handle incoming requests, including CDNs, reverse proxies, load balancers, and application servers.

Then test how traffic passes between these layers. A secure front end cannot guarantee safe request handling if the back end interprets the same traffic differently.

Test after changes

Changes to proxy settings, server software, and application routing can introduce new parsing differences.

Retest affected systems after major changes. In addition, investigate any unexpected differences in how front-end and back-end systems process requests.

Continuous service validation can support an ongoing approach to checking whether security weaknesses remain exploitable as environments change.

How to Validate HTTP Request Smuggling

A suspected parsing difference is not enough to prove that an application is vulnerable.

Validation needs to establish whether the front end and back end interpret a request differently and whether that difference creates a real security impact.

A controlled test should answer four questions:

  1. Do the front-end and back-end systems interpret the request boundaries differently?
  2. Can an attacker influence that difference through an HTTP request?
  3. Does the difference allow unexpected traffic to reach the application or affect another request?
  4. What security impact can the behaviour produce?

Testing should take place in an authorised environment. Request smuggling tests can affect shared connections, application behaviour, and other users’ requests.

Where possible, use a dedicated test environment. If production testing is necessary, agree on strict controls to prevent unintended impact.

The final report should document the affected systems, the conditions required for exploitation, the evidence collected, and the steps needed to fix the issue.

After remediation, repeat the test to confirm that the systems now handle requests consistently.

From Parsing Differences to Proven Exposure

HTTP request smuggling shows how a small difference in request handling can create a larger security weakness.

The front-end and back-end systems may each appear to work correctly on their own. However, when they interpret the same traffic differently, attackers may find a way around the expected request flow.

For this reason, security teams need to examine how the complete web stack handles HTTP traffic.

Finding exposed applications is an important first step. However, attack surface management also needs to support a clear understanding of which weaknesses create meaningful exposure.

The goal is to identify the issue, prove whether it is exploitable, fix the underlying cause, and test again.

Frequently Asked Questions

What is HTTP request smuggling?

HTTP request smuggling is a web application attack that exploits differences in how front-end and back-end servers interpret HTTP requests. An attacker may use those differences to send unexpected requests through security controls or affect how the application processes traffic.

What causes HTTP request smuggling?

It commonly occurs when front-end and back-end systems disagree about request boundaries. Differences in how they handle Content-Length, Transfer-Encoding, or malformed requests can create this problem. The risk depends on the server software, configuration, and connection handling.

How can organisations prevent HTTP request smuggling?

Organisations should update server software, configure consistent HTTP parsing, reject ambiguous requests, and review proxy and connection handling. They should also test the full request path after changes to confirm that front-end and back-end systems interpret requests consistently.

Can a vulnerability scanner find HTTP request smuggling?

A scanner may identify signs of a potential request smuggling issue, but it may not prove the impact. Validation needs to establish whether the systems interpret requests differently and whether an attacker can exploit that difference to affect application behaviour or bypass controls.

Request an Attack Insights Demo

Discover exposed web applications, validate weaknesses, and focus remediation on the issues attackers can actually exploit.

Request an Attack Insights demo

Public cloud storage can expose sensitive data. Learn how to validate access, assess impact and confirm that remediation closes the exposure.

Fake websites and profiles can exploit customer trust. Learn how to identify brand impersonation and respond to digital abuse.

HTTP request smuggling exploits differences between servers. Learn how to test for this weakness and reduce exposure.

External Attack Surface

Discover and monitor every internet-facing asset you own.

Detect new CVEs and exposures as they appear.

Find misconfigurations across AWS, Azure and GCP.

Prove your security controls actually work.

Threat & Digital Risk

Our public threat intelligence platform, in real time.

Spot leaked credentials and targeted threats early.

AI-driven prioritisation that cuts through the noise.

Protect your brand, data and people beyond the perimeter.

API & Email Security

Discover and test externally exposed APIs.

Stop spoofing with SPF, DKIM and DMARC checks.

Dashboards and board-ready security reporting.

Continuously test your public web applications.

Stream validated findings to your SIEM, SOAR and ticketing tools.

Explore

See the full Attack Insights platform.

See Attack Insights in action.