🔍 Contexte
Publié le 16 juillet 2026 par l’équipe Red Team d’Okta sur sec.okta.com, cet article présente la découverte d’une vulnérabilité de type Denial of Service (DoS) dans OpenSSL, baptisée HollowByte.
🧩 Mécanisme technique
La vulnérabilité exploite le comportement de la machine à états TLS lors du traitement du message ClientHello. Les versions vulnérables d’OpenSSL allouent un buffer de réception basé sur la taille déclarée dans l’en-tête du message (3 octets du header de 4 octets), sans validation préalable du payload :
- Un attaquant envoie un payload malveillant de seulement 11 octets
- OpenSSL déclenche une pré-allocation non validée via la chaîne :
Read Header → grow_init_buf() → OPENSSL_clear_realloc() → malloc(attacker_size) - Jusqu’à 131 Ko sont alloués sur la base des seules déclarations du paquet non fiable
- Le thread worker se bloque indéfiniment en attente de données qui n’arrivent jamais
💥 Effet de fragmentation permanente
L’impact va au-delà d’un simple épuisement de threads (similaire à Slowloris) :
- Lorsque la connexion attaquante se ferme, glibc ne restitue pas immédiatement la mémoire au système d’exploitation
- Des vagues de connexions avec des tailles déclarées aléatoires empêchent la réutilisation des chunks libérés
- Le heap se fragmente massivement, faisant croître le Resident Set Size (RSS) de manière continue
- La mémoire reste définitivement fragmentée même après déconnexion de l’attaquant — seul un redémarrage du processus permet de la récupérer
🧪 Tests en conditions réelles
- Environnement 1 Go RAM : le serveur non patché est tué par OOM à 547 Mo de mémoire gelée et fragmentée
- Environnement 16 Go RAM : l’attaque verrouille 25 % de la mémoire totale tout en restant sous le seuil de connexions, rendant les défenses classiques de limitation de connexions inefficaces
🌐 Périmètre d’impact
OpenSSL étant une bibliothèque fondamentale, les logiciels affectés incluent :
- Serveurs web : Apache, NGINX
- Runtimes de langages : Node.js, Python, Ruby, PHP
- Bases de données : MySQL, PostgreSQL
🔧 Correctifs disponibles
La correction consiste à remplacer l’allocation anticipée par une croissance incrémentale du buffer au fur et à mesure de l’arrivée des données (PRs #30792, #30793, #30794) :
- OpenSSL v4.0.1 (fix inclus silencieusement)
- Backports silencieux vers : 3.6.3, 3.5.7, 3.4.6, 3.0.21
- Aucun CVE n’a été assigné, le correctif ayant été traité comme un durcissement
📄 Nature de l’article
Il s’agit d’une publication de recherche technique produite par l’équipe Red Team d’Okta, visant à documenter la découverte, le mécanisme d’exploitation et les versions corrigées d’une vulnérabilité DoS dans OpenSSL.
🧠 TTPs et IOCs détectés
TTP
- T1499.001 — Endpoint Denial of Service: OS Exhaustion Flood (Impact)
- T1499 — Endpoint Denial of Service (Impact)
🔴 Indice de vérification factuelle : 33/100 (basse)
- ⬜ sec.okta.com — source non référencée (0pts)
- ✅ 3548 chars — texte complet (fulltext extrait) (15pts)
- ⬜ aucun IOC extrait (0pts)
- ⬜ pas d’IOC à vérifier (0pts)
- ✅ 2 TTP(s) MITRE (8pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://sec.okta.com/articles/2026/06/openssl-hollowbtye-a-dos-hiding-in-11-bytes/