Http11Probe

Version Case β€” HTTP/1.1 Compliance

Test ID COMP-VERSION-CASE
Category Compliance
Scored Yes
RFC RFC 9112 Β§2.3
RFC Level MUST
Expected 400 or connection close

What it sends

A GET request with lowercase http/1.1 instead of HTTP/1.1.

GET / http/1.1\r\n
Host: localhost:8080\r\n
\r\n

What the RFC says

"HTTP-version is case-sensitive." β€” RFC 9112 Β§2.3

"HTTP-version = HTTP-name '/' DIGIT '.' DIGIT" β€” RFC 9112 Β§2.3

"HTTP-name = %x48.54.54.50 ; 'HTTP'" β€” RFC 9112 Β§2.3

The ABNF specifies the exact octets H, T, T, P β€” only uppercase matches.

Why it matters

A server that accepts http/1.1 as valid is performing case-insensitive comparison on the HTTP version, which violates the protocol specification. While unlikely to cause security issues on its own, lenient parsing of protocol-level tokens can mask deeper parsing inconsistencies that smuggling attacks exploit.

Verdicts

  • Pass β€” Server rejects with 400 or closes the connection
  • Fail β€” Server accepts the request

Sources

Http11Probe β€” HTTP/1.1 compliance & smuggling testerSource on GitHub