Offre Durée limitée : -10% sur tout le site* avec le code ELYPSEWELCOME10

zlib 1.4 : deux CVE corrigées dont un débordement de tampon dans gzwrite(), mettez à jour vos serveurs Linux

Publié le 9 novembre 2026 16 min de lecture 9 sections

Le 4 novembre 2026, Mark Adler a publié zlib 1.4, la nouvelle version de la bibliothèque de compression la plus répandue du monde Linux. Ses notes de version contiennent une section « Security fixes » inhabituellement longue : un débordement de tampon dans gzwrite() en mode non bloquant (CVE-2026-85091), une écriture pouvant atteindre 8 Mo au-delà du tampon fourni par l'appelant dans inflateGetDictionary(), une arithmétique de pointeur hors limites dans le code optionnel contrib/infback9 (CVE-2026-4738), et une série de corrections dans minizip, inflateSync(), inflatePrime() ou deflatePrime(). Trois jours plus tard, Debian publiait le bulletin DSA-6613-1 pour Debian 13, et son suivi de sécurité rattache au même correctif de gzwrite() un troisième identifiant, CVE-2026-76844, qui couvre toutes les versions depuis zlib 1.2.11. zlib est chargée, en statique ou en dynamique, par OpenSSH, nginx, PHP, Python, Java, Git, les serveurs de jeu et quasiment toutes les images Docker. Pour qui administre un VPS Linux ou un serveur dédié, la question n'est pas « suis-je concerné » mais « où est ma copie de zlib, et quand arrive le paquet corrigé ».

Sources : zlib.net, notes de version de zlib 1.4, 4 novembre 2026 ; dépôt madler/zlib sur GitHub ; bulletin DSA-6613-1 de Debian, 7 novembre 2026 ; fiches CVE-2026-85091 et CVE-2026-76844 publiées par VulnCheck sur cve.org ; notice USN-8954-1 d'Ubuntu, 22 octobre 2026 ; fiche CVE de Red Hat ; trackers de sécurité Debian et Ubuntu, consultés le 9 novembre 2026.

zlib : la bibliothèque que tout le monde charge sans le savoir

zlib est une bibliothèque C qui implémente l'algorithme de compression DEFLATE et les formats zlib et gzip. Écrite par Jean-loup Gailly (compression) et Mark Adler (décompression), elle existe depuis 1995, et la dernière version avant la 1.4 était la 1.3.2 du 17 février 2026. Sur un serveur Linux, elle prend la forme d'une bibliothèque partagée, libz.so.1, fournie par le paquet zlib1g sur Debian et Ubuntu, zlib sur AlmaLinux 8 et 9 et Rocky Linux 8 et 9, zlib-ng-compat sur les versions 10 de ces distributions, et zlib sur Alpine. Tout programme qui compresse ou décompresse du gzip, lit un fichier PNG, ouvre une archive ZIP ou négocie la compression HTTP la charge. Le paquet openssh-server de Debian 13, par exemple, dépend explicitement de zlib1g.

Le point qui compte pour un administrateur : il n'y a pas une copie de zlib sur un serveur, il y en a souvent plusieurs. La bibliothèque partagée du système, mise à jour par apt ou dnf. Les copies embarquées dans les images Docker, une par image. Et les copies liées statiquement ou livrées avec un logiciel téléchargé hors des dépôts, que seule une nouvelle version de ce logiciel remplacera.

Les failles corrigées par zlib 1.4

Les notes de version de zlib 1.4 listent les corrections de sécurité suivantes. Deux portent un identifiant CVE, les autres sont référencées par les identifiants des audits de sécurité qui les ont signalées (préfixes TOB et THM). Nous y ajoutons les deux CVE que la DSA-6613-1 de Debian associe au même paquet : CVE-2026-76844, qui désigne le même défaut de gzwrite() sur une plage de versions plus large, et CVE-2026-27171, corrigée dès zlib 1.3.2.

DéfautFonction concernéeVersions touchéesGravité annoncée
CVE-2026-85091 : débordement de tampon sur le tas dans la fonction interne gz_vacate(), lors d'un gzwrite() non bloquant interrompu puis reprisgzwrite(), gzprintf(), gzvprintf()1.3.1.2 à 1.3.2 selon la fiche CVE (VulnCheck, 3 septembre 2026) ; Ubuntu a aussi corrigé la 1.3 et la 1.3.1Fiche CVE : CVSS 4.0 de 8,3 et CVSS 3.1 de 7,4, élevée. Red Hat : Important, CVSS 3.1 de 8,1. Ubuntu : priorité moyenne
CVE-2026-76844 : après l'échec d'un write(), gz_write() laisse le pointeur d'entrée sur le tampon de l'appelant ; l'écriture gz* suivante calcule une position à partir de ce pointeur obsolète et déborde d'une allocation du tasgz_write() et les fonctions d'écriture gz*1.2.11 à 1.3.2 selon la fiche CVE (VulnCheck, 24 août 2026) ; même commit correctif que CVE-2026-85091, inclus dans la 1.4Fiche CVE : CVSS 4.0 de 8,3 et CVSS 3.1 de 7,4, élevée. Corrigée par la DSA-6613-1
Écriture jusqu'à 8 Mo au-delà d'un tampon de 32 Ko fourni par l'appelant (THM-ZLIB-001)inflateGetDictionary(), après un en-tête zlib à taille de fenêtre invalide suivi d'inflateReset() ou d'inflateSync()1.3.1 et 1.3.2Aucun identifiant CVE cité par zlib.net au 9 novembre 2026
CVE-2026-4738 : arithmétique de pointeur hors limites dans inftree9.ccontrib/infback9, code optionnel non compilé dans libz.so.1Logiciels qui embarquent infback9 ; la fiche CVE vise GDAL avant la 3.11.0CNA GovTech CSG, 24 mars 2026 : CVSS 4.0 de 9,4, « critique ». Les mainteneurs de zlib jugent cette note surévaluée
CVE-2026-27171 : boucle sans condition d'arrêt dans x2nmodp, consommation CPUcrc32_combine64(), crc32_combine_gen64()1.2.12 à 1.3.1 ; corrigée dans la 1.3.2Debian la classe mineure pour Debian 12, mais l'inclut dans la DSA-6613-1 pour Debian 13
Fenêtre d'un octet allouée avant que la taille soit connue, puis dépassée (TOB-ZLIB-004)inflateSync()Versions antérieures à 1.4Correctif de robustesse mémoire
Lecture avant le début de l'entrée (TOB-ZLIB-014), écriture après le tampon pending (TOB-ZLIB-013)inflatePrime(), deflatePrime() appelées de façon répétéeVersions antérieures à 1.4Correctif de robustesse mémoire
Copie de mémoire non initialisée vers la sortie ; lecture hors fenêtreinflateBack(), gzseek() avant toute écriture, deflateResetKeep() en cours de fluxVersions antérieures à 1.4Fuite d'information potentielle
Double libération, déréférencement NULL, lecture Zip64 hors de son enregistrement, traversée de répertoires à l'extractioncontrib/minizip et miniunzLogiciels qui embarquent minizipCode optionnel, hors libz.so.1

Quelques précisions utiles pour évaluer l'urgence. CVE-2026-85091 ne se déclenche que sur un descripteur ouvert en mode non bloquant, quand une écriture interrompue est suivie d'un appel à gzprintf() ou gzvprintf() : le support des périphériques non bloquants dans les fonctions gz* n'est apparu qu'avec la version de développement 1.3.1.2 du 8 décembre 2025, d'où la plage étroite de la fiche CVE. CVE-2026-76844 décrit le même défaut sous un angle plus large : n'importe quel échec de write(), y compris un EPIPE sur un descripteur bloquant, suffit à laisser le pointeur obsolète en place, et sur les versions antérieures à 1.3.1.2 il faut en plus que le programme ait appelé gzclearerr() après l'échec. C'est ce second identifiant qui ramène Debian 12 (zlib 1.2.13) et les distributions restées en 1.2.11 dans le périmètre. Red Hat justifie sa note « Important » par le fait que zlib est liée dans d'innombrables services réseau et qu'une corruption mémoire dans une bibliothèque aussi partagée peut mener à l'exécution de code, tout en notant que les conditions de déclenchement élèvent la complexité de l'attaque. Le défaut d'inflateGetDictionary() n'a pas d'identifiant CVE mais concerne, lui, le code de décompression lui-même, présent dans toutes les versions 1.3.1 et 1.3.2. Quant à CVE-2026-4738, le code infback9 n'est pas compilé dans la bibliothèque partagée des distributions : il ne touche que les logiciels qui l'embarquent dans leurs sources, et le projet zlib précise que les pointeurs reviennent dans les limites avant d'être utilisés et qu'aucun compilateur connu ne gère mal ce cas, ce qui rend la note de 9,4 trompeuse en dehors des architectures à capacités de type CHERI.

Enfin, la version 1.4 apporte des changements incompatibles à connaître si vous compilez vous-même des logiciels : CMake 3.15 minimum, retour du type z_off_t à long par défaut (la 1.3.2 l'avait passé en 64 bits), nouveaux noms de bibliothèques sur MSVC, deflateReset() qui efface désormais l'en-tête gzip défini par deflateSetHeader(), et gzopen() avec le mode « x » qui échoue au lieu de tronquer le fichier quand O_EXCL n'est pas disponible. Les distributions gèrent ces points dans leurs paquets ; un administrateur qui installe zlib depuis les sources doit les lire avant de mettre à jour.

Quels services de votre serveur chargent zlib

Le tableau ci-dessous recense les logiciels les plus courants sur un VPS ou un serveur dédié ElypseCloud et la manière dont ils utilisent zlib. La colonne « comment se fait la mise à jour » est celle qui vous intéresse : elle dit si un simple apt upgrade suffit ou s'il faut attendre une autre livraison.

LogicielUsage de zlibComment se fait la mise à jour
OpenSSH (sshd, ssh)Compression du canal SSH (option Compression), via libz.so.1 du systèmePaquet zlib1g ou zlib, puis redémarrage de sshd
nginx, ApacheCompression HTTP gzip des réponses (module gzip, mod_deflate)Paquet système, puis rechargement ou redémarrage du serveur web
PHP-FPMExtension zlib (fonctions gzcompress, gzencode, ob_gzhandler), bibliothèques d'archivesPaquet système, puis redémarrage de php8.x-fpm ; dans Docker, reconstruire l'image
Python (bots, panels, scripts)Module zlib, utilisé par gzip, zipfile, requestsPaquet système, puis redémarrage des services Python
Java (Minecraft, Paper, Forge, Fabric)Compression des paquets réseau et des fichiers de région (format Anvil). Les OpenJDK des distributions utilisent la zlib du système ; certains JDK téléchargés en archive embarquent la leurPaquet système et redémarrage du serveur Minecraft, ou mise à jour du JDK s'il embarque sa copie
FXServer (FiveM, RedM)L'artifact Linux embarque son propre environnement Alpine dans le répertoire alpine/, avec ses propres bibliothèquesMettre à jour les artifacts du serveur, pas seulement l'hôte
Docker et PterodactylChaque image contient sa propre copie de zlib (Alpine ou Debian)Reconstruire ou tirer les images mises à jour, puis recréer les conteneurs
Git, curl, rsync, tar, MariaDB, PostgreSQLCompression des objets, des transferts, des sauvegardesPaquet système ; redémarrer les démons concernés

Un serveur de jeu est un cas typique : le processus Java d'un serveur Minecraft, lancé sous un hébergement Minecraft classique, charge libz.so.1 au démarrage et la garde en mémoire tant qu'il tourne. Mettre à jour le paquet sans redémarrer le serveur laisse l'ancienne bibliothèque chargée. Pour un serveur FiveM, la copie de zlib qui compte est celle de l'artifact FXServer, et non celle de la distribution hôte.

Vérifier la version de zlib installée

Commencez par repérer la bibliothèque partagée que le système charge réellement. Sur toutes les distributions, ldconfig liste les bibliothèques connues de l'éditeur de liens dynamique :

ldconfig -p | grep libz.so

La sortie donne le chemin de libz.so.1 ; un lien symbolique pointe vers le fichier réel, dont le nom contient la version compilée :

readlink -f /usr/lib/x86_64-linux-gnu/libz.so.1
# exemple de sortie : /usr/lib/x86_64-linux-gnu/libz.so.1.3.1

Le numéro de fichier n'est pas suffisant pour conclure : les distributions rétroportent les correctifs de sécurité dans la version existante sans changer ce nom. Debian 13 reste ainsi en libz.so.1.3.1 après la DSA-6613-1. Ce qui fait foi est la version du paquet, à comparer avec le bulletin de sécurité de votre distribution.

# Debian / Ubuntu
dpkg -l zlib1g
apt policy zlib1g

# AlmaLinux / Rocky Linux 8 et 9
rpm -q zlib

# AlmaLinux / Rocky Linux 10 (zlib-ng en mode compatible remplace zlib)
rpm -q zlib-ng-compat

# Alpine (hôte ou conteneur)
apk info zlib

Pour savoir quels processus en cours d'exécution ont chargé la bibliothèque, et surtout lesquels gardent en mémoire une ancienne copie après une mise à jour (le fichier apparaît alors marqué (deleted)) :

sudo lsof -n 2>/dev/null | grep 'libz.so' | awk '{print $1, $2}' | sort -u
sudo lsof -n 2>/dev/null | grep 'libz.so' | grep deleted

Dans une image Docker, répétez le contrôle à l'intérieur du conteneur, car l'hôte et le conteneur n'ont pas la même copie :

docker exec mon-conteneur sh -c 'apk info zlib 2>/dev/null || dpkg -s zlib1g 2>/dev/null | grep Version'

Pour un logiciel compilé à la main ou téléchargé en archive (un JDK, un binaire Go ou Rust, un serveur de jeu), ldd dit s'il charge la zlib du système ou s'il la transporte avec lui :

ldd /chemin/vers/le/binaire | grep libz
# aucune ligne : zlib est liée statiquement ou chargée depuis un répertoire privé

Où en sont Debian, Ubuntu, AlmaLinux, Rocky Linux et Alpine

Les distributions ne passent pas en zlib 1.4 du jour au lendemain : elles rétroportent les correctifs dans la version qu'elles livrent, à l'exception d'Alpine, qui a directement empaqueté la 1.4. Au 9 novembre 2026, voici l'état constaté sur les trackers et dépôts officiels. Il évoluera dans les jours qui viennent, et c'est précisément pour cela qu'il faut le suivre plutôt que de le supposer réglé.

DistributionVersion de zlib livréeÉtat des correctifs gzwrite() (CVE-2026-85091, CVE-2026-76844)Où suivre
Debian 12 bookworm1.2.13 (paquet 1:1.2.13.dfsg-1)Marquée vulnérable aux deux CVE par le suivi de sécurité Debian ; aucun bulletin publiésecurity-tracker.debian.org, paquet source zlib
Debian 13 trixie1.3.1 (paquet 1:1.3.dfsg+really1.3.1-1+deb13u1)Corrigée par la DSA-6613-1 du 7 novembre 2026, qui cite CVE-2026-27171, CVE-2026-76844 et CVE-2026-85091Dépôt trixie-security, déjà disponible
Debian testing et sid1.3.2 (paquet 1:1.3.dfsg+really1.3.2-4)Corrigée ; paquet accepté dans unstable le 25 octobre, migré vers testing le 7 novembretracker.debian.org/pkg/zlib
Ubuntu 24.04 LTS1.3 (paquet 1:1.3.dfsg-3.1ubuntu2.3)CVE-2026-85091 corrigée par USN-8954-1 du 22 octobre 2026ubuntu.com/security/notices
Ubuntu 26.04 LTS et 26.101.3.1 (1:1.3.dfsg+really1.3.1-1ubuntu3.2) et 1.3.2 (1:1.3.dfsg+really1.3.2-3ubuntu1.1)CVE-2026-85091 corrigée par USN-8954-1Même notice
Ubuntu 22.04 LTS1.2.11Marquée non affectée par CVE-2026-85091 ; l'état pour CVE-2026-76844, qui remonte à zlib 1.2.11, est à lire sur la fiche Ubuntu de ce CVEubuntu.com/security/CVE-2026-76844
AlmaLinux et Rocky Linux 8 et 91.2.11 (Rocky 9 : zlib-1.2.11-40.el9, publié en octobre 2023)Red Hat classe CVE-2026-85091 « Important » ; aucun paquet zlib plus récent dans le dépôt BaseOS de Rocky 9 au 9 novembreerrata.almalinux.org, errata.rockylinux.org, dnf updateinfo
AlmaLinux et Rocky Linux 10zlib-ng 2.2.3 en mode compatible (zlib-ng-compat-2.2.3-3.el10_1)Code différent de zlib (projet zlib-ng) ; aucun errata trouvé au 9 novembreMêmes errata, dnf updateinfo
Alpine 3.21, 3.22, 3.23 et edge1.4-r0Corrigée : zlib 1.4 empaquetée les 5 et 6 novembre 2026 sur toutes les branches maintenuespkgs.alpinelinux.org

Un détail à ne pas rater : la notice Ubuntu USN-8954-1 est sortie le 22 octobre, avant zlib 1.4, et ne cite que CVE-2026-85091. Le changelog du paquet Debian 13 corrigé ne mentionne que deux correctifs, celui de crc32_combine (CVE-2026-27171) et celui du gzwrite() non bloquant (CVE-2026-85091), que le suivi Debian considère aussi comme la correction de CVE-2026-76844. La correction d'inflateGetDictionary() n'y figure pas, et sans identifiant CVE elle n'apparaîtra dans aucun bulletin indexé par CVE tant qu'un n'aura pas été attribué. Suivre un seul numéro de CVE ne suffit donc pas ; abonnez-vous à la liste d'annonces de sécurité de votre distribution, ou vérifiez régulièrement :

# Debian / Ubuntu : mises à jour disponibles pour zlib
sudo apt update && apt list --upgradable 2>/dev/null | grep zlib

# AlmaLinux / Rocky Linux : errata liés à une CVE précise
sudo dnf updateinfo info --cve CVE-2026-85091
sudo dnf check-update zlib zlib-ng-compat

Si vous migrez une machine de Debian 12 vers Debian 13, le passage de zlib 1.2.13 à 1.3.1 corrigée se fait dans le même mouvement ; notre guide migrer un VPS de Debian 12 vers Debian 13 détaille la procédure. Et pour ne plus avoir à surveiller ces trackers à la main, automatiser les mises à jour de sécurité avec unattended-upgrades reste la réponse la plus simple sur Debian et Ubuntu.

Mettre à jour, puis redémarrer ce qui charge la bibliothèque

Une bibliothèque partagée n'est pas remplacée à chaud dans les processus qui l'ont déjà chargée. Après l'installation du paquet, chaque service qui utilisait l'ancienne libz.so.1 la garde en mémoire jusqu'à son redémarrage. Trois étapes, dans l'ordre.

1. Installer la mise à jour.

# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade zlib1g

# AlmaLinux / Rocky Linux
sudo dnf upgrade zlib zlib-ng-compat

2. Lister les services à redémarrer. Sur Debian et Ubuntu, l'outil needrestart parcourt les processus et signale ceux qui chargent des bibliothèques obsolètes ; sur AlmaLinux et Rocky Linux, c'est dnf needs-restarting :

# Debian / Ubuntu
sudo apt install needrestart
sudo needrestart -r l

# AlmaLinux / Rocky Linux
sudo dnf needs-restarting

3. Redémarrer les services concernés, en commençant par ceux qui traitent des données venant du réseau :

sudo systemctl restart ssh        # sshd sur AlmaLinux / Rocky Linux
sudo systemctl reload nginx
sudo systemctl restart php8.3-fpm
sudo systemctl restart minecraft  # ou le nom de votre unité systemd

Redémarrer sshd ne coupe pas la session SSH en cours : les connexions établies restent gérées par leurs processus fils. Pour un serveur de jeu, prévenez les joueurs et choisissez une heure creuse, comme pour une mise à jour du noyau. Si votre serveur de jeu n'est pas encore déclaré en service systemd, c'est le moment de le faire : un service redémarre en une commande, un processus lancé dans un screen se perd.

Pour les conteneurs, la logique est différente : on ne met pas à jour un conteneur, on le remplace. Tirez les images de base mises à jour, reconstruisez vos propres images et recréez les conteneurs :

docker compose pull
docker compose build --pull
docker compose up -d

Sur un node Pterodactyl, les images de jeu (yolks) sont maintenues par le projet ; tirez leurs versions mises à jour avec docker pull, puis redémarrez les serveurs concernés pour qu'ils repartent sur la nouvelle image. Notre guide Docker Compose sur VPS Linux couvre le cycle de mise à jour des images, et nettoyer Docker avec prune évite de conserver des dizaines d'anciennes images vulnérables sur le disque.

Serveurs de jeu : trois cas concrets

Serveur Minecraft Java. Si Java vient du paquet openjdk-21-jre-headless de la distribution, il charge la zlib du système : mettez à jour zlib1g et redémarrez le serveur. Si vous avez installé un JDK depuis une archive, vérifiez avec ldd $JAVA_HOME/lib/libzip.so | grep libz : l'absence de ligne signifie que le JDK embarque sa propre zlib, et seule une nouvelle version du JDK la remplacera. Les serveurs Paper, Purpur, Forge et Fabric n'ont rien à mettre à jour eux-mêmes : ils s'appuient sur la zlib de Java.

Serveur FiveM ou RedM. L'artifact FXServer pour Linux est livré avec un environnement Alpine complet dans le répertoire alpine/, et run.sh lance le binaire avec ces bibliothèques. La zlib de l'hôte n'est pas celle que le serveur utilise. Surveillez les nouveaux artifacts recommandés et appliquez la procédure de notre guide sur les artifacts et le gamebuild FiveM.

Serveur Rust. Le serveur dédié Rust est installé par SteamCMD et embarque ses propres bibliothèques natives avec le moteur Unity. Là encore, le paquet de la distribution ne le concerne pas ; le correctif arrivera, s'il est nécessaire, dans une mise à jour du serveur, à installer en même temps que les mises à jour habituelles d'un serveur Rust.

Checklist pour l'administrateur

  1. Identifiez la version du paquet zlib de chaque serveur (dpkg -l zlib1g, rpm -q zlib zlib-ng-compat) et comparez-la au bulletin de votre distribution.
  2. Sur Debian 13, installez le paquet de la DSA-6613-1 (zlib1g 1:1.3.dfsg+really1.3.1-1+deb13u1). Sur Ubuntu 24.04, 26.04 et 26.10, vérifiez que le paquet de la USN-8954-1 est installé. Sur Debian 12, surveillez l'arrivée d'un bulletin. Sur AlmaLinux et Rocky Linux, interrogez dnf updateinfo.
  3. Après chaque mise à jour, exécutez needrestart ou dnf needs-restarting et redémarrez sshd, le serveur web, PHP-FPM et vos serveurs de jeu.
  4. Reconstruisez vos images Docker à partir d'images de base à jour (Alpine 3.21 à 3.23 livrent déjà zlib 1.4) et recréez les conteneurs ; sur Pterodactyl, tirez les yolks récents et redémarrez les serveurs.
  5. Pour FiveM, RedM, Rust et les JDK installés en archive, mettez à jour le logiciel lui-même : la zlib qu'ils utilisent ne vient pas des dépôts.
  6. Si vous compilez des logiciels contre zlib, lisez les changements incompatibles de la 1.4 (z_off_t, CMake 3.15, deflateReset()) avant de passer à cette version.
  7. Profitez de l'occasion pour durcir SSH et appliquer les premiers réglages de sécurisation d'un serveur dédié : une faille de bibliothèque n'est exploitable qu'à travers un service qui reçoit des données non maîtrisées.

Conclusion

zlib 1.4 n'est pas une mise à jour à installer en urgence depuis les sources : c'est le signal que plusieurs défauts mémoire, dont le débordement de tampon de gzwrite() connu sous les identifiants CVE-2026-85091 et CVE-2026-76844, et une écriture hors limites dans inflateGetDictionary(), sont désormais publics et arrivent, correctif par correctif, dans les paquets de Debian, d'Ubuntu, d'Alpine, d'AlmaLinux et de Rocky Linux. Le travail de l'administrateur d'un VPS Linux ou d'un serveur dédié tient en trois gestes : savoir où sont ses copies de zlib, installer les paquets dès leur publication, et redémarrer ou recréer tout ce qui les charge. Une bibliothèque mise à jour sur le disque mais toujours chargée en mémoire protège exactement autant qu'avant, c'est-à-dire pas du tout.

FAQ

Faut-il installer zlib 1.4 depuis les sources sur mon VPS ?

Non, sauf cas particulier. Remplacer la libz.so.1 du système par une compilation maison casse le suivi des mises à jour par apt ou dnf et peut entrer en conflit avec les paquets qui en dépendent. Debian, Ubuntu, AlmaLinux et Rocky Linux rétroportent les correctifs de sécurité dans la version de zlib qu'ils livrent, et Alpine a empaqueté la 1.4 dès le 6 novembre 2026 : installez les paquets zlib1g, zlib, zlib-ng-compat ou zlib dès qu'un bulletin les publie (DSA-6613-1 sur Debian 13, USN-8954-1 sur Ubuntu), puis redémarrez les services.

Comment savoir quelle version de zlib est installée sur mon serveur Linux ?

Utilisez ldconfig -p | grep libz.so pour trouver la bibliothèque chargée par le système, puis dpkg -l zlib1g sur Debian et Ubuntu, rpm -q zlib sur AlmaLinux et Rocky Linux 8 et 9, rpm -q zlib-ng-compat sur les versions 10, ou apk info zlib sur Alpine. C'est la version du paquet, et non le numéro du fichier libz.so.1.x, qu'il faut comparer au bulletin de sécurité de votre distribution, car les correctifs sont rétroportés sans changer de version amont.

Quels services doivent être redémarrés après la mise à jour de zlib ?

Tous ceux qui avaient chargé libz.so.1 avant la mise à jour : sshd, nginx ou Apache, PHP-FPM, les services Python, le serveur Minecraft Java, MariaDB ou PostgreSQL. Sur Debian et Ubuntu, needrestart -r l les liste ; sur AlmaLinux et Rocky Linux, dnf needs-restarting fait de même. Un processus conserve l'ancienne bibliothèque en mémoire tant qu'il n'a pas été relancé.

Mes conteneurs Docker sont-ils protégés si j'ai mis à jour l'hôte ?

Non. Chaque image Docker contient sa propre copie de zlib, installée depuis les dépôts Alpine ou Debian de l'image de base. Mettre à jour le paquet de l'hôte ne change rien à l'intérieur des conteneurs. Il faut tirer les images de base mises à jour, reconstruire vos images et recréer les conteneurs avec docker compose pull, build --pull et up -d.

La faille CVE-2026-85091 de gzwrite() est-elle exploitable à distance ?

Elle se déclenche uniquement quand un programme écrit du gzip sur un descripteur en mode non bloquant, qu'une écriture est interrompue puis reprise via gzprintf() ou gzvprintf(). La fiche CVE lui attribue un score CVSS 4.0 de 8,3 et CVSS 3.1 de 7,4 ; Red Hat la classe « Important » avec un CVSS 3.1 de 8,1, parce que zlib est liée dans de nombreux services réseau ; Ubuntu lui attribue une priorité moyenne. Le risque réel dépend du logiciel qui utilise ce chemin de code, d'où l'intérêt d'appliquer le correctif partout plutôt que d'évaluer chaque programme.

Quelle différence entre CVE-2026-85091 et CVE-2026-76844 ?

Les deux identifiants décrivent le même défaut de gzwrite() et sont corrigés par le même commit, inclus dans zlib 1.4. CVE-2026-85091 vise le cas du descripteur non bloquant, possible depuis la version de développement 1.3.1.2, d'où une plage 1.3.1.2 à 1.3.2. CVE-2026-76844 décrit le mécanisme général : après n'importe quel échec de write(), y compris un EPIPE sur un descripteur bloquant, gz_write() laisse un pointeur d'entrée obsolète que l'écriture suivante utilise pour déborder du tas. Cette lecture couvre zlib 1.2.11 à 1.3.2, donc aussi Debian 12 et les distributions restées en 1.2.11, sachant qu'avant la 1.3.1.2 le programme doit en plus avoir appelé gzclearerr(). La DSA-6613-1 de Debian cite les deux.

Un serveur FiveM ou Minecraft est-il concerné par les failles de zlib ?

Un serveur Minecraft Java lancé avec l'OpenJDK de la distribution utilise la zlib du système : mettez à jour le paquet et redémarrez le serveur. Un JDK installé depuis une archive peut embarquer sa propre copie, à vérifier avec ldd sur libzip.so. L'artifact FXServer de FiveM et RedM transporte son propre environnement Alpine dans le répertoire alpine/, indépendant du paquet de l'hôte : ce sont les artifacts qu'il faut mettre à jour.

Pourquoi CVE-2026-4738 est-elle notée 9,4 si zlib dit que le risque est faible ?

La note CVSS 4.0 de 9,4 a été attribuée par le CNA via le projet GDAL, qui embarque le code contrib/infback9 dans les versions antérieures à 3.11.0. Ce code optionnel n'est pas compilé dans la libz.so.1 des distributions. Les mainteneurs de zlib expliquent que les pointeurs hors limites reviennent dans les bornes avant d'être utilisés et qu'aucun compilateur connu ne les gère mal, le risque pratique se limitant aux architectures à capacités de type CHERI. Mettez à jour GDAL si vous l'utilisez ; la bibliothèque système n'est pas en cause.