Skip to content

Add HTTP Request Smuggling detection via Nuclei templates (#303)#2598

Open
FaizanAnwar01 wants to merge 5 commits into
CERT-Polska:mainfrom
FaizanAnwar01:feat/http-request-smuggling
Open

Add HTTP Request Smuggling detection via Nuclei templates (#303)#2598
FaizanAnwar01 wants to merge 5 commits into
CERT-Polska:mainfrom
FaizanAnwar01:feat/http-request-smuggling

Conversation

@FaizanAnwar01

Copy link
Copy Markdown
Contributor

Description

Adds generic HTTP Request Smuggling detection to Artemis using custom Nuclei templates, as requested by @kazet in #303

Changes

  • NEW: [http-request-smuggling-clte.yaml] — CL.TE variant detection
  • NEW: [http-request-smuggling-tecl.yaml] — TE.CL variant detection
  • NEW: [http-request-smuggling-tete.yaml] — TE.TE obfuscation detection (3 probes: duplicate header, trailing space, invalid value)
  • MODIFIED: [pl_PL.py] — Added Polish translations for all 3 templates

No Python code changes required — templates are auto-loaded via the existing nuclei_templates_custom/ directory mechanism.

Detection Method

All templates use Nuclei's unsafe: true mode with the rawhttp library to send malformed HTTP requests that exploit disagreements in how front-end and back-end servers parse request boundaries. The "GPOST" probe technique is used: if a smuggled G prefix gets prepended to a subsequent POST request, the server returns an error for the unrecognized GPOST method — confirming the vulnerability.

False Positive Mitigation

This was the primary design concern, following @kazet's guidance that simply checking for HTTP/1.1 would produce too many false positives.

  • Active verification, not passive detection — only triggers on concrete evidence of request boundary disagreement
  • matchers-condition: and — requires BOTH a status code anomaly (400/405/501) AND specific error text (e.g., "Unrecognized method GPOST")
  • Severity: medium — appropriate for CERT team triage

Testing

Tested all 3 templates against PortSwigger Web Security Academy labs:

Template Lab Result
CL.TE HTTP request smuggling, basic CL.TE Detected
TE.CL HTTP request smuggling, basic TE.CL Detected
TE.TE HTTP request smuggling, obfuscating the TE header Detected
Screenshot 2026-04-09 222019 Screenshot 2026-04-09 222052 Screenshot 2026-04-09 222312

Negative testing: Ran templates against non-vulnerable servers (single-server setups) — zero false positives.

Screenshot 2026-04-09 222519

Related Issue

Closes #303

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test for HTTP Request Smuggling

1 participant