
Pack de divulgation et PoC pour CVE-2026-86350, une confusion d'en-têtes de requête HTTP/2 non authentifiée (CWE-444) dans Apache Tomcat 9.0.121, avec reproduction en laboratoire et conseils de correctif.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-86350
Apache Tomcat 9.0.121 — Apache Software Foundation
Interprétation incohérente des requêtes HTTP/2 (vulnérabilité de « HTTP Request/Response smuggling ») dans Apache Tomcat, causée par une régression dans le correctif de CVE-2026-41293, pouvant entraîner une confusion des en-têtes de requête.
| CVE | CVE-2026-86350 · CVE.org |
| CWE | CWE-444 |
| CVSS | Critique : 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| Produit | Apache Tomcat |
| Affecté | toutes les versions jusqu'à 9.0.121 (inclus) |
| Corrigé | 9.0.122 et versions ultérieures |
| Auth | non authentifié (voir la cartographie des sources) |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement · pack de divulgation fournisseur/client, pas un scanner |
java/org/apache/coyote/http2/HpackDecoder.java et HPackHuffman.java. Le correctif 9.0.122 commit 5adadc4e / 11.0.26 192bc749 annule la validation précoce.
GET/header.jspHTTP/2 prior-knowledge preface to :8080 UpgradeProtocol Http2ProtocolHEADERS stream 1: invalid field value trailing space then x-lab-witnessHpackDecoder.readHpackString throws IllegalArgumentException mid-blockdynamic table missing the marker; stream 2 indexes the markerdecoder mix-up or COMPRESSION_ERROR / GOAWAYAprès un champ HTTP/2 invalide sur le flux 1, le flux 2 n'est pas un 200 propre (GOAWAY, RST ou confusion de marqueur).
À faire en premier : mettre à jour Apache Tomcat vers 9.0.122 ou une version ultérieure.
Vérifier après la mise à niveau
CVE-2026-86350-Abraxas-Labs.py contre la version corrigée : le témoin cartographié ne doit pas apparaître.Si vous ne pouvez pas mettre à jour immédiatement
Ciblez uniquement http://127.0.0.1:8088 (ou le loopback que vous avez lié). Ne pointez pas ce script vers Internet.
python3 CVE-2026-86350-Abraxas-Labs.py
Le succès correspond au témoin ci-dessus dans le corps de la réponse. Un HTML 200 générique ne l'est pas.
Pile loopback utilisée pour la reproduction. Images officielles sauf si un Dockerfile dans ce dossier compile depuis les sources.
cd lab
docker compose up --force-recreate
Liez l'arborescence du produit vulnérable à côté de Compose si le YAML monte un répertoire local (zip de plugin / tag source issu de la table des versions). Ne publiez rien d'autre que 127.0.0.1.
# CVE-2026-86350
CWE: CWE-444
CVSS: Critical 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N (CISA-ADP). Apache: Important.
## Description
A regression in the CVE-2026-41293 HTTP/2 header-validation refactor can mix request headers. Invalid HPACK fields abort decode so later fields never enter the dynamic table; the next stream on the connection then interprets indexes against a desynced table.
## Product
Apache Tomcat 9.0.121 (fixed in 9.0.122; also 10.1.60 and 11.0.26). Lab oracle is HPACK desync, not RCE.
Ce pack de divulgation est sous licence GNU Affero General Public License v3.0. Voir LICENSE.
Ce pack est destiné au fournisseur, au propriétaire du site et aux labs autorisés. Le script communique avec 127.0.0.1. Son utilisation contre des systèmes que vous ne possédez pas n'est pas autorisée par Abraxas Labs. Aucune garantie.