
Имитирует CVE-2026-22019 — сбой изоляции потоков HTTP/2 CONNECT-туннеля libcurl, демонстрирующий межпотоковую инъекцию данных и контрабанду ответов в прокси-туннелях.
// curl_http2_tunnel_mixup.c - Simulated libcurl handling CONNECT over HTTP/2
#include <stdio.h>
void handle_http2_stream(int stream_id) {
// Vulnerability: after CONNECT, the proxy mixes streams with the tunneled data
if (stream_id == 0) {
printf("CONNECT to target\n");
} else {
// Data from another stream may leak into the tunnel
printf("Stream %d data crosses tunnel boundary\n", stream_id);
}
}
int main() {
handle_http2_stream(0);
handle_http2_stream(1); // should be isolated
return 0;
}
Уязвимость в реализации HTTP/2-прокси CONNECT в libcurl не позволяет должным образом изолировать потоки после установления туннеля. Атакующий, контролирующий один поток HTTP/2, может внедрять данные в отдельный туннель, что приводит к подмене ответов (response smuggling) или перехвату учётных данных.
Скомпилируйте и запустите симуляцию:
gcc -o curl_http2_tunnel curl_http2_tunnel_mixup.c
./curl_http2_tunnel
В выводе видно, как поток пересекает границу туннеля.