HTTP/3 Stream Dependency Cycle Exploit
What the report claims
A stream dependency cycle exploit in HTTP/3 causes memory corruption and potential remote code execution in curl 8.13.0.
Compare with curl's recorded outcome
Labeled AI slop
curl's maintainer lists this report as AI slop
Shown for comparison after analysis. The pipeline did not see this label.
ProveIt's finding
The available evidence does not settle the report. A maintainer should investigate.
curl policy: NULL dereferences and crashesSee the withdrawn model reasoning
The following reasoning failed the citation check and does not support the final finding.
- The crash occurs in ngtcp2 (ngtcp2_http3_handle_priority_frame), a separate library, not in curl's own code
- The malicious server violates RFC 9218 by sending PRIORITY_UPDATE frames which servers MUST NOT send
- HTTP/3 support in curl is experimental and off by default, falling under 'Debug & Experiments' policy exclusion
- Project policy explicitly states crashes from malicious servers are not security problems unless special circumstances exist
- No curl source code was provided to verify any flaw in curl's implementation
What still needs checking
- curl's HTTP/3 priority frame handling code (ngtcp2 integration)
- Whether curl validates PRIORITY_UPDATE frame sender per RFC 9218
- Whether cyclic dependency detection exists in curl's ngtcp2 usage
How this analysis ran 6 claims · 0 citations verified
Evidence check: judge quoted an external source that does not say that (https://www.rfc-editor.org/info/rfc9218)
Checked against curl master on 2025-05-04 (e1f87a093b71). Test evaluation split. Citation verification checks that a referenced line was in the evidence; it does not prove the model interpreted it correctly.
Inspect the withdrawn draft reply
This draft belongs to the withdrawn judgment. It may contain unsupported claims.
Thank you for the detailed report. However, this does not qualify as a security vulnerability in curl per our policy: (1) The crash occurs in ngtcp2, a separate library; (2) Your malicious server violates RFC 9218 by sending PRIORITY_UPDATE frames which servers MUST NOT send; (3) HTTP/3 is experimental and off by default in curl; (4) Our policy excludes crashes from malicious servers and experimental features. We do not consider this a security issue in curl.
Inspect all claims and source code 6 claims · 0 code excerpts
This model judgment was withdrawn. The claim assessments below are preserved for inspection and may be wrong.
Report claims
send_cyclic_priority creates a cyclic dependency between stream 3 and 7
Read the reasoning
This claim describes behavior in the malicious server (aioquic), not in curl. The send_cyclic_priority function is part of the attacker's proof-of-concept server code, not curl's codebase. No curl code was provided to assess.
in aioquic/quic/connection.py
Read the reasoning
The location aioquic/quic/connection.py is in the attacker's server implementation, not in curl. The deterministic checks confirm curl exists at the revision but no curl source files were provided for analysis.
sending TRIGGER_MEMORY_CORRUPTION data on stream 3
Read the reasoning
The trigger describes the attacker's server sending data on stream 3. This is an action by the malicious server, not a code path in curl. Without curl's HTTP/3 priority frame handling code, the claim cannot be verified against curl's implementation.
segmentation fault and potential remote code execution
Read the reasoning
The crash occurs in ngtcp2_http3_handle_priority_frame (ngtcp2 library), not curl proper. The malicious server violates RFC 9218 by sending PRIORITY_UPDATE frames (servers MUST NOT send them). HTTP/3 support in curl is experimental and off by default. Per project policy, crashes triggered by malicious servers are not considered security problems, and experimental features are excluded.
run exploit_server.py then curl --http3-only https://localhost:4433
Read the reasoning
Reproduction steps require the malicious aioquic server and curl with --http3-only. Without curl's HTTP/3 handling code, the code path from network input to crash cannot be verified in curl's codebase.
ulimit -c unlimited and ./launch_attack.sh
Read the reasoning
Same as C5 - reproduction depends on external server and experimental curl feature. No curl source code provided to confirm the vulnerability exists in curl's implementation.
What the report says about other projects
confirmed Servers MUST NOT send PRIORITY_UPDATE frames; clients receiving them MUST respond with PROTOCOL_ERROR
“Servers MUST NOT send PRIORITY_UPDATE frames. If a client receives a PRIORITY_UPDATE frame, it MUST respond with a connection error of type PROTOCOL_ERROR.” source
confirmed HTTP/3 priority scheme forms a dependency tree; cyclic dependencies would violate the tree structure
“Taken together, the dependencies across all requests in a connection form a dependency tree.” source
Read the original report (excerpt)
Source code
No source code was retrieved for this analysis. The evidence may be incomplete.