veilletech.fr
27 oct. Feed du jour
#01 PHP Article

PHP sous Windows : reconstruire pour Brotli

Même numéro de version, binaire différent.

PHP a reconstruit le 26 octobre ses paquets Windows 8.2 à 8.5 pour embarquer Brotli 1.2.1, qui corrige CVE-2026-111497 (corruption de mémoire, exécution de code possible). La faille s'atteint par l'extension cURL quand la décompression automatique est active, ce qui est le cas par défaut de Guzzle. Le numéro de version PHP ne change pas : seul le suffixe -1 du fichier identifie le nouveau build.

3 min de lectureintermédiairevidéo 1:21
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Par où la faille s'atteint
  3. Gravité et exploitation
  4. Comment s'y prendre
  5. À retenir

Ce qui se passe

Le 26 octobre 2026, l'équipe PHP a republié ses paquets Windows officiels pour PHP 8.2, 8.3, 8.4 et 8.5. Ils contenaient Brotli 1.2.0, la bibliothèque de compression, touchée par CVE-2026-111497 : une corruption de mémoire qui peut mener à l'exécution de code. Les nouveaux builds embarquent Brotli 1.2.1.

Les fichiers à chercher portent un suffixe -1 :

Ligne Nouveau build
8.5 8.5.12-1
8.4 8.4.27-1
8.3 8.3.36-1
8.2 8.2.35-1

Ils arrivent cinq jours après les versions du 21 octobre qui corrigeaient PHP2Shell (CVE-2026-109618, CVE-2026-109619). Le code PHP est le même, donc ces correctifs-là restent en place. Le 26 octobre, la CISA a d'ailleurs inscrit ces deux CVE à son catalogue des vulnérabilités exploitées (KEV).

Par où la faille s'atteint

Seul le chemin cURL est concerné : l'extension décompresse une réponse HTTP, Brotli y compris, quand la décompression automatique est active. cURL la laisse éteinte par défaut, mais une application ou une bibliothèque cliente peut l'allumer avec l'option CURLOPT_ENCODING ; une valeur vide accepte tous les formats que cURL sait lire.

Guzzle (7.16.1 et 8.3.1) pose justement cette valeur vide par défaut. D'après ce code et la description de PHP, une application qui garde les réglages de Guzzle remplit donc la condition sur les builds du 21 octobre. The Hacker News précise ne pas l'avoir testé sous Windows.

L'attaque passerait par une réponse compressée fabriquée, renvoyée par un serveur que votre application appelle.

Gravité et exploitation

Comment s'y prendre

  1. Téléchargez le build suffixé -1 sur la page Windows de php.net, par exemple php-8.5.12-1-nts-Win32-vs17-x64.zip.
  2. Ne comptez pas sur php -v : la version est inchangée. Le suffixe du fichier et le SHA-256 de la page de téléchargement font foi. Les listes de composants (SBOM) des builds x64 Non Thread Safe du 21 octobre indiquent Brotli 1.2.0.
  3. Aucun contournement n'est proposé par PHP. OpenAI recommande de couper la décompression automatique des clients HTTP en attendant. Retirer br de Accept-Encoding ne suffit pas : un serveur peut quand même répondre en Brotli.

Dans Guzzle, l'option qui coupe tout décodage automatique est decode_content. Les réponses gzip arrivent alors compressées elles aussi.

PHP
$client = new GuzzleHttp\Client(['decode_content' => false]);

Source : The Hacker News, 26 octobre 2026. Source en anglais. Annonce d'origine : php.net.