fix(920100): drop HTTP/0.9 GET support from request line validation#4621
Conversation
remove the GET-without-protocol alternative from the regex assembly. HTTP/0.9 is obsolete per RFC 9110 and the dedicated alternative was the only one that did not require a protocol suffix in the request line. GET requests with proper HTTP/1.x or HTTP/2 protocol versions remain covered by the generic method alternative.
|
📊 Quantitative test results for language: |
There was a problem hiding this comment.
Pull request overview
This PR removes HTTP/0.9-style GET request-line support from rule 920100 to align request-line validation with RFC 9110 and existing protocol-version enforcement behavior in the 920xxx ruleset.
Changes:
- Removes the HTTP/0.9
GET /...(no protocol suffix) alternative fromregex-assembly/920100.ra. - Regenerates/simplifies the compiled 920100 request-line regex in
REQUEST-920-PROTOCOL-ENFORCEMENT.conf. - Updates
crs-setup.conf.exampleto remove the HTTP/0.9 “legacy clients” example and document that HTTP/0.9 is no longer supported.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf | Updates the compiled REQUEST_LINE validation regex for rule 920100 after removing HTTP/0.9 support. |
| regex-assembly/920100.ra | Drops the standalone HTTP/0.9 GET request-line pattern from the regex assembly source. |
| crs-setup.conf.example | Removes the HTTP/0.9 example for tx.allowed_http_versions and adds a note clarifying current support. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Max Leske <250711+theseion@users.noreply.github.com>
|
Now, there is the suggestion from @airween to backport this change to LTS v4.25.x. For those who think this is a good idea, please add your 👍 here. |
|
Of course HTTP/0.9 it must be dropped, in the security perspective |
what
regex-assembly/920100.rarules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf(shorter, simpler)crs-setup.conf.exampleand add a note that HTTP/0.9 is no longer supportedwhy
tx.allowed_http_versionsby default, but rule 920100 accepted HTTP/0.9 request-line syntaxcrs-setup.conf.examplelegacy hint would have led users to a half-working configuration (HTTP/0.9 allowed at the protocol level, but blocked at the request-line level)refs
ai disclosure
.raedit, regenerating the compiled regex viacrs-toolchain regex update 920100, drafting thecrs-setup.conf.examplecomment update, drafting this PR descriptioncrs-toolchain regex compare/generate, inspected diff); confirmed all 16 existing regression tests for 920100 still pass; verified the removed HTTP/0.9 behavior manually by sendingGET /\r\n\r\nviancand confirming rule 920100 now fires (log entry present); cross-checked rule 920430's defaulttx.allowed_http_versionsto confirm consistency; read RFC 9110 to verify HTTP/0.9 status