cloudflare / cloudflare/pingora

Never send incorrect requests to upstream servers, ever.

Open
#674 5 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
27.4k
Forks
1.7k
Avg merge
6h 22m
Merged PRs (30d)
3

Description

## What is the problem your feature solves, or the need it fulfills?

HTTP/1.1 has an endless history of request smuggling attacks. See .

## Describe the solution you'd like

Pingora should ensure that no matter what a client sends to it, requests sent to upstream servers _always_ strictly conform to the HTTP RFCs. This means:

- Only permitted characters in field names and values.
- No leading or trailing whitespace in field values.
- All other requirements from the standards are met, at least with regards to fields that can affect request framing.

Furthermore, there should be exactly one space between the fields of the request line and exactly one space after the colon in the fields. Trailiers should not be allowed to contain anything that might affect framing.

If Pingora is itself behind a reverse proxy, then Pingora needs to enforce these checks on _incoming_ requests, too.

## Describe alternatives you've considered

Potentially be vulnerable to request smuggling attacks in the future.

## Additional context

- https://http1mustdie.com
- https://portswigger.net/research/http1-must-die

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.