Avis de sécurité — PHP 7.4 sur Rocky Linux 8 (CVE-2026-109618 / CVE-2026-109619)

Avis de sécurité — PHP 7.4 sur Rocky Linux 8 (CVE-2026-109618 / CVE-2026-109619)

Avis de sécurité — PHP 7.4 sur Rocky Linux 8 (CVE-2026-109618 / CVE-2026-109619)

Résumé

Tous les serveurs ScopServ exécutant PHP 7.4 sur Rocky Linux 8 doivent être mis à jour vers php 7.4.33-8.module+el8.10.0+40393+c071e357 (publié le 21 octobre 2026), qui corrige les vulnérabilités CVE-2026-109618 et CVE-2026-109619. Le script php74-security-update.sh applique la mise à jour et vérifie que la version corrigée est installée.

  • Correctif : « Avoid state corruption via bailout » (journal des modifications RPM de php-common 7.4.33-8).
  • Action requise : exécuter le script en tant que root sur chaque serveur.
  • Gravité / CVSS : Critique — CVSS v4.0 de 9,2 pour chaque CVE, exécution de code à distance sans authentification (« PHP2Shell »), tentatives d'exploitation observées depuis le 21 octobre 2026. Rocky Linux distribue le correctif sous l'avis RLSA-2026:87080 (classé Important). Appliquez ce correctif en urgence.

Vulnérabilités

Les deux vulnérabilités (« PHP2Shell », divulguées le 21 octobre 2026) se trouvent directement dans le moteur PHP. Un site Web peut donc être exposé même si son propre code ne présente aucune faille. Les deux vulnérabilités ont un score CVSS v4.0 de 9,2 et peuvent permettre l'exécution de code à distance sans authentification avec PHP-FPM, mod_php, php-cgi et d'autres interfaces SAPI Web.

CVEVulnérabilitéCVSS v4.0Version corrigée (Rocky Linux 8)
CVE-2026-109618Corruption de mémoire lorsque PHP manque de mémoire pendant le traitement d'une requête; le processus de nettoyage utilise des données partiellement initialisées. Peut être déclenchée par des requêtes multipart spécialement conçues, même en respectant les limites de taille configurées.9,2php 7.4.33-8 (RLSA-2026:87080)
CVE-2026-109619Utilisation de mémoire après libération (use-after-free) entre plusieurs requêtes : un état laissé par une requête pointe vers une zone mémoire libérée, puis réutilisée par une requête ultérieure traitée par le même processus.9,2php 7.4.33-8 (RLSA-2026:87080)

Vecteur CVSS pour les deux vulnérabilités : CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N. Aucune nouvelle version officielle de PHP 7.4 n'a été publiée; seuls des correctifs rétroportés dans le code source sont disponibles. Le paquet Rocky Linux 7.4.33-8 intègre ces correctifs. Des preuves de concept (PoC) publiques existent, mais leur fiabilité demeure limitée. Des tentatives d'exploitation ont été signalées depuis la divulgation (Rapid7, Tenable).

Si un serveur ne peut pas être mis à jour immédiatement, il est possible de réduire temporairement son exposition (sans corriger complètement les vulnérabilités) : définissez memory_limit=-1 et session.upload_progress.enabled=0 dans le fichier php.ini du système, de manière à empêcher les applications de remplacer ces valeurs, puis exécutez systemctl restart scopserv.

Systèmes concernés

Tout serveur Rocky Linux 8 utilisant le module php:7.4 avec une version antérieure à 7.4.33-8 est concerné. Pour vérifier un serveur :

rpm -q php-common
  • 7.4.33-7 ou antérieure : **vulnérable**, appliquez la mise à jour.
  • 7.4.33-8.module+el8.10.0+40393+c071e357 : **corrigée**.

Tous les paquets php-* du module (cli, fpm, mysqlnd, gd, ldap, mbstring, opcache, pdo, snmp, xml, etc.) doivent être mis à jour vers la même version. Le paquet php-pecl-zip n'est pas concerné et demeure à la version 1.18.2-1.

Fonctionnement de php74-security-update.sh

Le script met à jour PHP à partir des dépôts Rocky Linux, puis retourne une erreur (code de sortie 1) si la version installée ne correspond pas exactement à la version corrigée.

  1. Vérifie que le script est exécuté en tant que root sur Rocky Linux 8 (/etc/rocky-release).
  2. Active le module php:7.4 (dnf -y module enable php:7.4).
  3. Vide le cache DNF (dnf clean all) afin de forcer la récupération des métadonnées les plus récentes des dépôts.
  4. Met à jour PHP (dnf update php). Cette étape demande une confirmation : répondez y.
  5. Vérifie que php-common correspond à 7.4.33-8.module+el8.10.0+40393+c071e357 et que php -v affiche built: Oct 21 2026.

Si toutes les vérifications réussissent, le script affiche SUCCESS: PHP security update verified!. Le script ne redémarre aucun service.

Procédure de mise à jour

Exécutez les commandes suivantes en tant que root sur chaque serveur concerné, pendant une fenêtre de maintenance (les pages PHP peuvent présenter des erreurs pendant quelques secondes lors du remplacement des paquets).

  1. Téléchargez le script :

    wget --no-check-certificate -O /var/www/scopserv/scripts/php74-security-update.sh https://scm.scopserv.com/files/1/4/f/14f9fbf5f11fe3d82bd5f53e3ae1ca05.phps
  2. Exécutez le script et répondez y lorsque DNF demande de confirmer la mise à jour :

    sh /var/www/scopserv/scripts/php74-security-update.sh
  3. Redémarrez le service Web ScopServ avec systemctl restart scopserv.

Le certificat de scm.scopserv.com est normalement valide. L'option --no-check-certificate n'est donc pas nécessaire; la retirer protège contre l'exécution, en tant que root, d'un script téléchargé qui aurait été altéré.

Vérification

Le serveur est corrigé lorsque le script se termine avec le message SUCCESS: PHP security update verified!. Pour effectuer une vérification manuelle :

rpm -q php-common
php -v | head -1
rpm -q --changelog php-common | head -3

Résultat attendu :

php-common-7.4.33-8.module+el8.10.0+40393+c071e357.x86_64
PHP 7.4.33 (cli) (built: Oct 21 2026 17:33:12) ( NTS )
* Wed Oct 21 2026 Jitka Plesnikova <jplesnik@redhat.com> - 7.4.33-8
- Avoid state corruption via bailout
CVE-2026-109618, CVE-2026-109619

Vérifiez également que tous les paquets PHP utilisent la même version : rpm -qa 'php*' | sort ne devrait afficher que des paquets de la version 7.4.33-8 (à l'exception de php-pecl-zip-1.18.2-1).

Dépannage et retour à une version antérieure

Message du scriptCauseSolution
This script must be run as root.Le script n'a pas été exécuté en tant que root.Exécutez de nouveau le script en tant que root.
This script requires Rocky Linux 8.Le serveur n'utilise pas Rocky Linux 8.N'utilisez pas ce script; appliquez le correctif à partir des dépôts propres au système d'exploitation.
Operation aborted. (de DNF), puis arrêt du scriptLa confirmation a été refusée (N) ou le script a été exécuté sans terminal interactif (cron, pipe).Relancez le script de manière interactive et répondez y.
Expected PHP RPM release not installed.Le miroir ne contient pas encore la version 7.4.33-8 ou un autre module php est activé.Exécutez dnf clean all, vérifiez que dnf module list php affiche 7.4 [e], puis réessayez plus tard si le miroir n'est pas encore à jour.
Expected PHP RPM release not installed. (la version installée se termine par .remi ou un identifiant d'un autre fournisseur)PHP provient d'un autre dépôt (par exemple Remi), qui distribue son propre correctif sous un numéro de version différent.Le script ne s'applique pas : ne changez pas de dépôt. Vérifiez l'origine des paquets avec dnf list installed 'php*', effectuez la mise à jour à partir de ce dépôt (dnf update 'php*'), puis confirmez que rpm -q --changelog php-common mentionne CVE-2026-109618 et CVE-2026-109619. Si ces CVE sont absentes, le fournisseur n'a pas encore publié le correctif.
PHP build date does not match Oct 21 2026.L'exécutable php trouvé dans le PATH ne correspond pas à celui du paquet RPM.Vérifiez que which php retourne /usr/bin/php.

Retour à une version antérieure (uniquement si la nouvelle version cause des problèmes) : dnf downgrade 'php*' permet de revenir à la version précédente disponible dans le dépôt, qui est **vulnérable**. Prévoyez de réappliquer le correctif dès que possible.

Références

  • Journal des modifications RPM de php-common-7.4.33-8.module+el8.10.0+40393+c071e357 (rpm -q --changelog php-common) — source de la description du correctif et des identifiants CVE mentionnés ci-dessus.
  • php74-security-update.sh — script de mise à jour (également disponible dans scripts/php74-security-update.sh du dépôt ScopServ Core, commit 852b950).
  • Fiche NVD de CVE-2026-109618 et CVE-2026-109619.