CVE-2026-18924
HTTP/2 server push UAF
Project curl Security Advisory, September 2 2026 Permalink
VULNERABILITY
A flaw in libcurl's handling of HTTP/2 Server Push streams, when the parent handle is set to share connections with other handles, can lead to use-after-free in the cleanup process.
INFO
To trigger this bug, it requires:
- The application to enable HTTP/2 push with the curl_multi_setopt option CURLMOPT_PUSHFUNCTION
- The application to enable connection sharing with the curl_share_setopt option CURL_LOCK_DATA_CONNECT
- Communication done over HTTPS using HTTP/2 to a server
- The server to send an HTTP/2 Server Push to the client
- The application to accept the push with the server push callback.
If a user tests this sequence using a debug build of libcurl, it strongly hints about a problem and triggers asserts.
This bug is considered a C mistake (likely to have been avoided had we not been using C).
This flaw does not affect the curl command line tool, only libcurl.
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2026-18924 to this issue.
CWE-416: Use After Free
Severity: Low
AFFECTED VERSIONS
- Affected versions: curl 7.44.0 to and including 8.21.0
- Not affected versions: curl < 7.44.0 and >= 8.22.0
- Introduced-in: https://github.com/curl/curl/ea7134ac874a66107e54ff93657ac5
SOLUTION
RECOMMENDATIONS
We suggest you take one of the following actions immediately, in order of preference:
A - Upgrade curl and libcurl to version 8.22.0
B - Apply the patch to your version and rebuild
C - Avoid using HTTP/2 server push
TIMELINE
This issue was reported to the curl project on August 5, 2026.
curl 8.22.0 was released on September 2 2026, coordinated with the publication of this advisory.
CREDITS
- Reported-by: Stephan Zeisberg (Security Research Labs)
- Patched-by: Daniel Stenberg
Thanks a lot!