En bref

  • CVE-2026-23918 : double-free dans mod_http2 d'Apache HTTP Server 2.4.66 (CVSS 8.8)
  • DoS trivial sans authentification, chaîne RCE confirmée sur APR avec allocateur mmap (défaut Debian et image Docker officielle)
  • Patch publié dans la version 2.4.67 le 4 mai 2026 — upgrade immédiat ou désactivation de HTTP/2 en attendant

Les faits

L'Apache Software Foundation a publié le 4 mai 2026 la version 2.4.67 de son serveur HTTP, accompagnée d'un correctif pour CVE-2026-23918, une vulnérabilité critique de type double-free affectant le module mod_http2. La faille touche exclusivement la version 2.4.66 livrée fin mars 2026, mais cette version a été massivement adoptée dans les images Docker et les distributions Linux qui suivent la branche stable, ce qui amplifie considérablement l'exposition réelle.

La vulnérabilité se situe dans la fonction de nettoyage des flux HTTP/2, plus précisément dans le fichier h2_mplx.c qui gère le multiplexage des streams. Lorsqu'un client envoie une trame HEADERS suivie immédiatement d'une trame RST_STREAM ciblant le même identifiant de flux, le moteur HTTP/2 d'Apache libère deux fois la même structure h2_stream. La séquence ne demande aucune authentification, aucun en-tête HTTP particulier, aucune URL spécifique : une simple connexion TCP avec deux trames bien chronométrées suffit à provoquer la corruption mémoire.

L'exploitation en déni de service est triviale et immédiate. Le worker Apache qui traite la connexion plante, et bien qu'il soit respawné par le processus principal, toutes les requêtes en cours sur ce worker sont abandonnées. Un attaquant qui maintient un débit constant de paires HEADERS/RST_STREAM peut donc tuer l'ensemble du pool de workers en quelques secondes, rendant le serveur indisponible. Cette attaque fonctionne contre tout déploiement par défaut combinant mod_http2 et un MPM multi-threadé comme event ou worker, qui sont les configurations recommandées et largement majoritaires.

Plus inquiétant, les chercheurs ont démontré une chaîne d'exécution de code à distance fonctionnelle. L'exploitation RCE place une fausse structure h2_stream à l'adresse virtuelle libérée via une réutilisation d'allocation mmap, fait pointer son pointeur de cleanup vers la fonction system() de la libc, et utilise la zone mémoire scoreboard d'Apache comme conteneur stable pour les structures forgées et la chaîne de commande à exécuter. Cette chaîne RCE requiert toutefois l'Apache Portable Runtime configuré avec l'allocateur mmap, qui est le réglage par défaut sur les systèmes dérivés de Debian ainsi que sur l'image Docker officielle httpd.

Le rapport initial a été soumis le 10 décembre 2025 par un chercheur indépendant via le programme de divulgation responsable d'Apache. Un correctif a été commité dès le lendemain, mais la coordination avec les distributeurs et les mainteneurs d'images a nécessité plusieurs mois supplémentaires avant publication. La liste de diffusion oss-security a été notifiée le 4 mai 2026, simultanément à la sortie publique du patch.

Selon les données de Shodan recoupées par plusieurs équipes de réponse, plus de 6,2 millions de serveurs Apache exposés sur Internet annonçaient encore la version 2.4.66 le 12 mai 2026. La proportion exacte de ceux qui activent mod_http2 reste difficile à estimer, mais le module est compilé en statique dans la majorité des paquets binaires de Red Hat, SUSE, Ubuntu, Debian et Amazon Linux, ce qui rend la surface d'attaque très large même si l'activation explicite reste nécessaire dans la configuration.

Le CERT-FR a publié l'avis CERTFR-2026-AVI-0421 dès le 5 mai pour alerter les administrateurs français, qualifiant la vulnérabilité de critique et recommandant une mise à jour immédiate. Aucune exploitation massive n'a été observée à ce stade, mais des scans opportunistes recherchant la version 2.4.66 dans les en-têtes Server ont nettement augmenté dans les jours qui ont suivi la publication du patch.

Impact et exposition

Sont exposées toutes les instances d'Apache HTTP Server 2.4.66 avec mod_http2 chargé et HTTP/2 activé sur au moins un VirtualHost. Cela inclut nominalement la majorité des reverse-proxys frontaux, les serveurs web traditionnels servant du contenu statique, et les passerelles applicatives qui terminent TLS au niveau Apache. Les déploiements derrière un reverse-proxy CDN comme Cloudflare ou Fastly restent vulnérables si le CDN négocie HTTP/2 jusqu'à l'origine, ce qui est le cas par défaut pour la plupart des configurations modernes.

La RCE elle-même n'est exploitable que si APR utilise l'allocateur mmap. Sur Debian, Ubuntu et leurs dérivés, c'est le réglage par défaut. Sur Red Hat Enterprise Linux, SUSE et certaines distributions durcies, l'allocateur par défaut est différent et la chaîne RCE ne fonctionne pas sans modification — mais le DoS reste pleinement opérationnel, indépendamment de l'allocateur APR.

Recommandations

  • Identifier les serveurs Apache exposés en version 2.4.66 — vérifier les paquets installés et le numéro de version dans les en-têtes HTTP retournés
  • Mettre à jour vers 2.4.67 sans délai : paquets disponibles sur Debian, Ubuntu, Red Hat, SUSE et Alpine, ainsi que sur Docker Hub pour l'image officielle httpd
  • En attente d'upgrade, désactiver temporairement mod_http2 ou commenter la directive Protocols h2 h2c http/1.1 pour forcer HTTP/1.1
  • Surveiller les logs error_log pour des patterns de plantage répétés sur les workers HTTP/2 — signe d'exploitation DoS en cours
  • Si Apache est en frontal d'applications critiques, vérifier que le reverse-proxy amont peut basculer rapidement sur HTTP/1.1 pour absorber une attaque

Alerte critique

Le DoS ne demande aucun privilège, aucune authentification et tient en deux trames HTTP/2. Un attaquant peut indisponibiliser un serveur Apache 2.4.66 en quelques secondes depuis n'importe quel point d'Internet. Le patch est disponible depuis le 4 mai 2026 — l'absence de mise à jour à ce stade constitue une dette critique exploitable.

Comment savoir si mon Apache est vulnérable sans accès console ?

Envoyez une simple requête curl -I https://votre-serveur/. L'en-tête Server renvoyé indique généralement la version, sauf si ServerTokens est configuré sur Prod ou Minor. Si vous voyez Apache/2.4.66, vous êtes vulnérable au DoS. Pour confirmer si mod_http2 est actif, ajoutez curl --http2 -I https://votre-serveur/ et vérifiez le retour HTTP/2 dans la réponse.

Désactiver HTTP/2 a-t-il un impact perceptible pour mes utilisateurs ?

L'impact dépend du profil de trafic. Pour un site avec beaucoup de petites ressources chargées en parallèle, HTTP/2 améliore typiquement la performance perçue de 15 à 30 %. Pour une API REST avec peu de requêtes simultanées, l'impact est marginal. Dans tous les cas, basculer temporairement en HTTP/1.1 le temps d'appliquer le patch reste largement préférable à une indisponibilité totale.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits de sécurité ciblés pour identifier et corriger vos vulnérabilités avant qu'elles ne soient exploitées.

Demander un audit