Résumé
Notre équipe de recherche en sécurité a découvert que CVE-2023-0568une vulnérabilité d'allocation de tampon officiellement rapportée comme affectant seulement les versions PHP 8+, affecte également les installations de la série PHP 7 (sur Windows et Linux). Cette découverte a des implications significatives pour les organisations qui utilisent encore PHP 7 dans des environnements de production, d'autant plus que cette version a atteint son statut de fin de vie (EOL) et ne reçoit plus de mises à jour de sécurité officielles.
8.1 CVSS 3.x de NVD
7.5 CVSS 3.x de Groupe PHP
La vulnérabilité expliquée
CVE-2023-0568 est une erreur d'allocation de tampon dans la fonction principale de résolution de chemin de PHP. Lors de la résolution de chemins dont la longueur est proche du paramètre MAXPATHLEN du système, la fonction alloue un tampon trop petit d'un octet. Il en résulte que l'octet suivant immédiatement le tampon alloué est écrasé par une valeur NULL.
Bien que ce problème puisse sembler mineur à première vue, il représente un problème de sécurité plus sérieux :
- La vulnérabilité peut conduire à un accès non autorisé aux données ou à leur modification.
- Dans certaines conditions, il peut entraîner un déni de service (DoS).
- Les écrasements de pile, même limités, peuvent créer des opportunités pour des chaînes d'exploitation plus complexes.
PHP 7 : toujours vulnérable mais officiellement non supporté
L'avis officiel pour CVE-2023-0568 spécifie qu'il affecte :
- PHP 8.0x avant 8.0.28
- PHP 8.1x avant 8.1.16
- PHP 8.2x avant 8.2.3
Cependant, notre équipe de recherche en sécurité a confirmé que les installations de la série PHP 7 sont également vulnérables à ce même problème. Cela crée une faille de sécurité importante pour les organisations qui utilisent encore PHP 7 :
- PHP 7 a atteint le statut EOL
- Aucun correctif officiel n'est disponible auprès des mainteneurs de PHP
- Cette vulnérabilité n'est pas corrigée dans toutes les installations de PHP 7.
Détails techniques
La vulnérabilité se trouve dans le code de résolution de chemin de PHP, qui suit ce modèle à plusieurs endroits :
| // Alloue un tampon d'une taille maximale de MAXPATHLEN char resolved_path[MAXPATHLEN] ; // Si le chemin ne se termine pas par une barre oblique et qu'il faut en ajouter une // Un caractère NUL pourrait être écrit à l'index MAXPATHLEN // Ce qui entraînerait un dépassement de tampon d'un octet. |
Lorsque la longueur des chemins approche MAXPATHLEN, le code alloue un tampon trop petit d'un octet. Si le chemin ne se termine pas par une barre oblique et qu'il faut en ajouter une, le code écrira au-delà du tampon alloué, en écrasant un octet de la pile.
Bien qu'un écrasement isolé d'un octet de la pile puisse sembler mineur, il peut avoir de sérieuses implications en matière de sécurité dans les circonstances appropriées :
- L'écrasement des données de la pile peut corrompre les variables adjacentes
- Il peut potentiellement influencer le flux de contrôle du programme
- Combinée à d'autres vulnérabilités, elle pourrait contribuer à des attaques plus sophistiquées.
Notre solution : Support du cycle de vie sans fin pour PHP 7
Nous comprenons que la migration de PHP 7 vers des versions plus récentes n'est pas toujours immédiatement réalisable en raison de la compatibilité des applications, des contraintes de ressources ou d'autres facteurs commerciaux. C'est pourquoi nous proposons :
- Patches de sécurité personnalisés: Nous avons développé des correctifs pour PHP 7 qui traitent les vulnérabilités CVE-2023-0568 et d'autres vulnérabilités connues.
- Mise à jour des paquets PHP 7: Disponible pour les environnements Windows et Linux
- Soutien continu à la sécurité: Surveillance continue et correctifs des vulnérabilités récemment découvertes dans PHP 7
Actions recommandées
Si votre organisation utilise encore PHP 7, nous vous recommandons :
- Évaluez votre exposition: Évaluez si vos applications peuvent être vulnérables à la manipulation du chemin d'accès qui pourrait déclencher cette vulnérabilité.
- Appliquer nos paquets patchés: Installez nos paquets PHP 7 corrigés pour atténuer cette vulnérabilité.
Conclusion
Les failles de sécurité ne tiennent pas compte des dates de fin de vie. La faille CVE-2023-0568 illustre parfaitement comment les problèmes de sécurité peuvent affecter un logiciel bien au-delà de son cycle de vie officiel. Nos services d'assistance prolongée pour PHP 7, ainsi que pour les événements à venir tels que la fin de vie de PHP 8.3 prévue fin 2027, fournissent aux entreprises les correctifs de sécurité dont elles ont besoin tout en leur permettant de planifier leur stratégie de migration selon leur propre calendrier.
