🔍 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/