CVE-2024-24990 — Nginx HTTP/3 Use-After-Free¶
Key facts
CVE-2024-24990 is a High (7.5) vulnerability: Nginx HTTP/3 Use-After-Free. This entry ships ready-to-deploy detection and prevention rules (Snort, YARA, Nginx, Apache) plus a detection-only PoC and a Docker test lab.
| CVE | CVE-2024-24990 |
| Severity | High (7.5) |
| Product | Nginx |
| Detection / prevention | Snort, YARA, Nginx, Apache |
| PoC | poc.py |
| Source | 2024/CVE-2024-24990/ |
Details¶
CVE-2024-24990 (Nginx) is a High (7.5) vulnerability: Nginx HTTP/3 Use-After-Free. This entry ships a detection-only proof-of-concept (PoC), a Docker test lab, and ready-to-deploy detection and prevention rules (Snort, YARA, Nginx, Apache) — see Detection and prevention below. Source: NVD record.
| Attribute | Value |
|---|---|
| CVE ID | CVE-2024-24990 |
| CVSS Score | 7.5 |
| Product | Nginx |
| Type | Use-After-Free |
Description¶
Use-after-free vulnerability in Nginx HTTP/3 QUIC implementation leading to memory corruption and potential code execution.
Affected Versions¶
- Nginx 1.25.0 - 1.25.3
Mitigation¶
- Upgrade to nginx 1.25.4+
- Disable HTTP/3 if not required
- Implement memory safety monitoring
Verification Process¶
The PoC uses a multi-stage verification approach:
Step 1: Product/Version Detection (Passive)¶
[*] Query target endpoint
[*] Detect product signatures and extract version
[*] Check if version is in vulnerable range
Step 2: Active Vulnerability Testing¶
| Method | Description | Detection |
|---|---|---|
| Error-based | Tests for error messages indicating vulnerability | Error indicators in response |
| Timing-based | Measures response delay with payload | Response time significantly longer |
| Response-based | Checks for expected patterns in response | Vulnerability indicators present |
Verification Flow¶
┌─────────────────────────────────────────────────────────────┐
│ Product Detection │
│ Query target → Detect product/version │
│ Check if version in vulnerable range │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Active Vulnerability Testing │
│ │
│ 1. Error-based Test │
│ └─ Send payload → Check for error indicators │
│ └─ If error found → CONFIRMED VULNERABLE │
│ │
│ 2. Timing-based Test │
│ └─ Send delay payload → Measure response time │
│ └─ If delayed → CONFIRMED VULNERABLE │
│ │
│ 3. Response-based Test │
│ └─ Send payload → Check response content │
│ └─ If pattern matches → CONFIRMED VULNERABLE │
└─────────────────────────────────────────────────────────────┘
Usage¶
# Full vulnerability check (version + active testing)
python3 poc.py -t https://target.com -c
# Version-only check (passive, no payloads sent)
python3 poc.py -t https://target.com -c --version-only
References¶
Detection and prevention¶
Ready-to-deploy defensive rules for CVE-2024-24990, for authorized testing and blue-team detection engineering:
- Snort IDS signature —
prevention/snort.rules - YARA detection rule —
prevention/yara.yar - Nginx mitigation —
prevention/nginx.conf - Apache HTTPD mitigation —
prevention/httpd.conf - Detection-only PoC —
poc.py - Rule notes —
prevention/README.md
References: NVD — CVE-2024-24990 · full write-up on the searchable site
Detection & prevention rules¶
# CVE-2024-24990 - Snort IDS Rules
# Severity: High
# Detect potential exploit attempts
alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (
msg:"CVE-2024-24990 Potential Exploit Attempt";
flow:to_server,established;
content:".."; http_uri;
classtype:web-application-attack;
sid:2024249901;
rev:1;
metadata:cve CVE-2024-24990, severity high;
)
# Detect suspicious patterns in request
alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (
msg:"CVE-2024-24990 Suspicious Request Pattern";
flow:to_server,established;
pcre:"/(%2e%2e|%252e|\x00)/Ui";
classtype:web-application-attack;
sid:2024249902;
rev:1;
metadata:cve CVE-2024-24990, severity high;
)
/*
* CVE-2024-24990 - YARA Detection Rules
*/
rule CVE_2024_24990_Exploit {
meta:
description = "Detects potential CVE-2024-24990 exploit attempts"
author = "Security Research Team"
severity = "high"
cve = "CVE-2024-24990"
strings:
$path_traversal1 = "../" ascii wide
$path_traversal2 = "..\" ascii wide
$encoded1 = "%2e%2e" ascii wide nocase
$encoded2 = "%252e" ascii wide nocase
$null_byte = "%00" ascii wide
condition:
any of them
}
# CVE-2024-24990 - Prevention Rules for Nginx
# Block common exploit patterns
location / {
# Rate limiting
limit_req zone=general burst=20 nodelay;
# Block suspicious patterns
if ($request_uri ~* "(\.\.[\/]|%2e%2e|%252e)") {
return 403;
}
# Security headers
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header X-XSS-Protection "1; mode=block" always;
}
# Log suspicious activity
access_log /var/log/nginx/CVE-2024-24990-access.log;
error_log /var/log/nginx/CVE-2024-24990-error.log;
# CVE-2024-24990 - Prevention Rules for Apache httpd
# Block common exploit patterns
<IfModule mod_rewrite.c>
RewriteEngine On
# Block path traversal
RewriteCond %{REQUEST_URI} (\.\.[\/]|%2e%2e|%252e) [NC]
RewriteRule .* - [F,L]
# Block null bytes
RewriteCond %{REQUEST_URI} %00 [NC]
RewriteRule .* - [F,L]
</IfModule>
# Security headers
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "DENY"
Header always set X-XSS-Protection "1; mode=block"
# Enable logging
CustomLog /var/log/httpd/CVE-2024-24990-access.log combined
ErrorLog /var/log/httpd/CVE-2024-24990-error.log
Frequently asked questions¶
What is CVE-2024-24990?¶
CVE-2024-24990 is a High (7.5) vulnerability: Nginx HTTP/3 Use-After-Free. This entry ships ready-to-deploy detection and prevention rules (Snort, YARA, Nginx, Apache) plus a detection-only PoC and a Docker test lab.
How do I detect CVE-2024-24990?¶
Deploy the Snort and YARA detection rule included with this entry (see Detection & prevention rules below), then validate it against the detection-only PoC in the Docker test lab.
How do I block or mitigate CVE-2024-24990?¶
Apply the Nginx and Apache mitigation config included with this entry, and upgrade to a fixed version per the vendor advisory (see the NVD record for affected versions).
Related CVEs¶
Other entries for the same vendor or product:
- CVE-2024-24989 — Nginx HTTP/3 NULL Pointer Dereference (High (7.5))
- CVE-2024-32760 — Nginx HTTP/3 Buffer Overwrite (Medium (6.5))
- CVE-2024-31079 — Nginx HTTP/3 Stack Overflow (Medium (5.3))
For authorized security testing and research only. See the full source and NVD record.