CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11)

15 mai 2026 — par admin_libra

Le 4 mai 2026, l’équipe de sécurité d’Apache a publié la version 2.4.67 du serveur HTTP Apache, corrigeant onze vulnérabilités dont une critique : CVE-2026-23918. Cette faille de type double-free dans le module mod_http2 affecte exclusivement Apache HTTP Server 2.4.66 et ouvre la voie à un déni de service trivial ainsi qu’à une éventuelle exécution de code à distance (RCE). Avec un score CVSS de 8.8, cette vulnérabilité est classée « High » et doit être traitée en priorité sur tous les serveurs concernés.

Les administrateurs systèmes utilisant Debian 12 (Bookworm), Debian 13 (Trixie) ou Ubuntu 26.04 LTS (Resolute) sont directement exposés si leur installation d’Apache inclut le module HTTP/2. Cet article détaille le mécanisme de la faille, les distributions et configurations touchées, et les procédures de mise à jour ou de mitigation à appliquer immédiatement.

Découverte indépendamment par Bartlomiej Dmitruk (striga.ai) et Stanislaw Strzalkowski (isec.pl) et signalée à l’équipe sécurité Apache dès le 10 décembre 2025, la vulnérabilité a été corrigée dans le dépôt en moins de 24 heures. La divulgation publique coordonnée n’a été effectuée qu’en mai 2026, lors de la sortie officielle d’Apache 2.4.67.

Comprendre la vulnérabilité CVE-2026-23918

Mécanisme technique

CVE-2026-23918 est une vulnérabilité de type double-free localisée dans le fichier h2_mplx.c du module mod_http2. Elle se manifeste dans le chemin de nettoyage (cleanup path) du multiplexeur HTTP/2 lors de scénarios de réinitialisation anticipée de flux.

Concrètement, la faille est déclenchée lorsqu’un client envoie une trame HTTP/2 HEADERS immédiatement suivie d’un RST_STREAM avec un code d’erreur non nul sur le même flux, avant que le multiplexeur n’ait eu le temps d’enregistrer ce flux. Ce timing particulier provoque la libération double d’une zone mémoire dans la couche APR (Apache Portable Runtime), conduisant à une corruption du tas (heap corruption).

Le vecteur DoS est trivial : deux trames HTTP/2 sur une seule connexion TCP suffisent à provoquer le crash d’un processus worker. Le vecteur RCE est plus exigeant : il requiert qu’Apache soit compilé avec l’allocateur mmap d’APR, ce qui est précisément le cas par défaut sur les systèmes dérivés de Debian et sur l’image Docker officielle d’Apache.

Configurations affectées

Configuration Exposée ?
Apache 2.4.66 + mod_http2 + MPM event ✅ Oui (DoS + RCE potentiel)
Apache 2.4.66 + mod_http2 + MPM worker ✅ Oui (DoS + RCE potentiel)
Apache 2.4.66 + mod_http2 + MPM prefork ❌ Non
Apache 2.4.66 sans mod_http2 ❌ Non
Apache ≤ 2.4.65 ❌ Non
Apache ≥ 2.4.67 ❌ Corrigé

Les MPM multi-threadés event et worker sont les seuls vecteurs d’exploitation. Le MPM prefork, qui utilise un modèle de traitement mono-thread par processus, n’est pas affecté car la condition de course à l’origine du double-free ne peut pas se produire dans ce contexte.

Vérifier si votre serveur est vulnérable

Avant toute action corrective, vérifiez la version d’Apache installée, le MPM actif et l’état du module HTTP/2.

Vérifier la version d’Apache

apache2 -v

Si la sortie indique Server version: Apache/2.4.66, votre installation est potentiellement vulnérable.

Vérifier le MPM utilisé

apache2ctl -M | grep mpm

La présence de mpm_event_module ou mpm_worker_module indique un MPM multi-threadé. La présence de mpm_prefork_module signifie que vous n’êtes pas exposé au vecteur RCE.

Vérifier si mod_http2 est actif

apache2ctl -M | grep http2

Si la commande retourne http2_module (shared), le module est chargé et votre serveur est exposé. Vous pouvez compléter la vérification via la configuration :

grep -r "Protocols.*h2" /etc/apache2/

Correctifs officiels par distribution

Debian 12 (Bookworm) et Debian 13 (Trixie)

Les équipes de sécurité Debian ont publié des paquets corrigés basés sur Apache 2.4.67 pour toutes les distributions en support actif. La version corrigée est 2.4.67-1~deb12u2 sur Bookworm et 2.4.67-1~deb13u2 sur Trixie. Debian 11 (Bullseye) ne semble pas impacté par cette faille selon https://security-tracker.debian.org/tracker/CVE-2026-23918

# Mettre à jour les listes de paquets depuis les dépôts security
sudo apt update

# Vérifier la version disponible avant installation
apt-cache policy apache2

# Installer la mise à jour de sécurité
sudo apt install apache2

# Redémarrer Apache après la mise à jour
sudo systemctl restart apache2

# Vérifier la version installée
apache2 -v

Pour confirmer que le correctif est bien appliqué :

dpkg -l apache2 | awk '/^ii/{print $2, $3}'

La version affichée doit être au minimum 2.4.67-1~deb12u2 sur Bookworm ou 2.4.67-1~deb13u2 sur Trixie.

Ubuntu 26.04 LTS (Resolute)

Ubuntu 26.04 LTS est la seule version Ubuntu LTS active à inclure Apache 2.4.66 dans ses dépôts. Les versions 24.04, 22.04 et 20.04 LTS embarquent des versions antérieures d’Apache et ne sont pas affectées par cette CVE. Canonical a publié le bulletin de sécurité USN-8239-1 le 6 mai 2026. Le paquet corrigé est apache2 2.4.66-2ubuntu2.1.

# Mettre à jour les listes de paquets
sudo apt update

# Installer la mise à jour
sudo apt install apache2

# Vérifier la version installée
dpkg -l apache2 | awk '/^ii/{print $2, $3}'
# Résultat attendu : apache2  2.4.66-2ubuntu2.1

# Redémarrer le service
sudo systemctl restart apache2
sudo systemctl status apache2

Mitigations temporaires

Si vous ne pouvez pas appliquer le correctif dans les 24 à 48 heures suivant la détection de votre exposition, deux mitigations permettent de neutraliser la vulnérabilité dans l’attente d’une mise à jour planifiée.

Option 1 : Désactiver mod_http2 (recommandée)

C’est la mitigation la plus simple et la moins impactante. La désactivation de HTTP/2 ne supprime pas HTTPS et n’affecte pas significativement les performances dans la majorité des configurations.

# Désactiver le module HTTP/2
sudo a2dismod http2

# Rechercher les directives Protocols actives
grep -r "Protocols.*h2" /etc/apache2/

# Retirer h2 des directives Protocols dans les vhosts
sudo sed -i 's/Protocols h2 http/1.1/Protocols http/1.1/g' /etc/apache2/sites-enabled/*.conf

# Tester la configuration avant rechargement
sudo apache2ctl configtest && sudo systemctl reload apache2

# Vérifier que le module n'est plus chargé
apache2ctl -M | grep http2

Option 2 : Passer en MPM Prefork

Cette option change fondamentalement le modèle de traitement des requêtes et peut dégrader les performances sous forte charge. Elle n’est recommandée que si HTTP/2 doit impérativement rester actif pour des raisons fonctionnelles.

# Désactiver les MPM multi-threadés
sudo a2dismod mpm_event
sudo a2dismod mpm_worker

# Activer MPM Prefork
sudo a2enmod mpm_prefork

# Redémarrer Apache
sudo systemctl restart apache2

# Vérifier le MPM actif
apache2ctl -M | grep mpm

Vérifications post-correctif

Après application du correctif ou des mitigations, effectuez les vérifications suivantes pour vous assurer que le serveur est sécurisé et opérationnel :

# Vérifier la version Apache
apache2 -v

# Vérifier l'état du service
sudo systemctl status apache2

# Contrôler les modules actifs
apache2ctl -M | grep -E "http2|mpm"

# Tester la validité de la configuration
sudo apache2ctl configtest

# Consulter les logs pour détecter des anomalies
sudo journalctl -u apache2 --since "1 hour ago"

Pour tester depuis un client externe si HTTP/2 est effectivement désactivé :

curl -I --http2 https://votre-domaine.example.com 2>&1 | grep -i "HTTP/"

Une réponse HTTP/1.1 confirme que la mitigation par désactivation de HTTP/2 est effective. Si vous avez conservé HTTP/2 après passage en MPM prefork, la réponse restera HTTP/2 — ce qui est attendu dans ce cas.

À lire également

Références

Index complet

Tous les articles (35)

Date Article Tags
27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs