Strona główna / Blog / HttpClient: classic vs async

Blog · analiza

Ta sama biblioteka Apache HttpClient, dwa CVE i odwrotna affectedness. Dlaczego „package present” nie wystarcza

CVE-2026-64607 dotyczy classic I/O model Apache HttpClient. Przy nieprawidłowym Content-Encoding klient może nie zwolnić połączenia do connection managera, prowadząc do wyczerpania zasobów — advisory wprost mówi, że async I/O nie jest affected. CVE-2026-71290 działa odwrotnie: HostnameVerificationPolicy#BUILTIN nie zapewnia oczekiwanej weryfikacji hostname w async HttpClient, co może umożliwić MITM; classic HttpClient nie jest affected.

CVE-2026-64607: classic YES / async NO CVE-2026-71290: classic NO / async YES

To niemal laboratoryjny przykład ograniczeń package-level SCA.

SCA kończy się na obecności

SBOM może poprawnie powiedzieć, że aplikacja zawiera httpclient5, ale nie powie automatycznie, którego execution modelu używa — a właśnie ta informacja decyduje o affectedness. VEX powinien opierać się na evidence, np. vulnerable_code_not_in_execute_path plus dowód, że aplikacja korzysta wyłącznie z classic transport.

Nawet CVSS zależy od interpretacji attack path

Dla CVE-2026-71290 dane CVE wskazują 9.1 i Attack Vector Network; Red Hat ocenia własny kontekst jako 8.1 z Adjacent Network, podkreślając konieczność przechwytywania i modyfikowania ruchu. To kolejny przykład, że severity z feedu nie jest gotowym priorytetem biznesowym. I ważne: unsupported nie znaczy Not affected — IBM przypomina, że tabela Affected Products obejmuje produkty wspierane; brak starej wersji EOS w tabeli to nie dowód niepodatności. Parser advisory powinien robić absent + unsupported → unknown / lifecycle review, nie absent → not affected.

Wniosek

Library present ≠ vulnerable functionality used — jednocześnie „unused” musi być poparte dowodem. To dokładnie granica, na której kończy się proste SCA, a zaczyna Vulnerability Engineering.

Powiązane na blogu

Źródła

Nota redakcyjna: stan informacji 1 września 2026. CVE-2026-64607 (classic I/O affected, async not) i CVE-2026-71290 (async affected, classic not) w Apache HttpClient 5; CVSS 9.1 (Network) vs Red Hat 8.1 (Adjacent) dla tego drugiego. Artykuł koncentruje się na execution-model affectedness i VEX opartym na dowodzie.

Zapamiętaj jedno

Library present ≠ vulnerable functionality used — a „unused” musi być poparte dowodem. Dwa CVE tej samej biblioteki mają odwrotną affectedness zależnie od execution modelu (classic vs async): to granica, na której kończy się proste SCA.