Une backdoor trouvée dans le référentiel Git de PHP

Des développeurs ont sonné l’alerte après avoir découvert des commits malveillants dans le référentiel Git officiel de PHP. Une backdoor était intégrée dans un de ces commits. En conséquence, le langage privilégie dorénavant le partage de code sur GitHub.

A ceux qui s’interrogent sur l’intérêt d’une revue de code régulière, la mésaventure du référentiel Git de PHP apporte une réponse sans équivoque. Pendant le week-end, deux commits ont été poussés vers le dépôt Git php-src maintenu par l’équipe PHP sur son serveur git.php.net. Ces deux propositions de modification de code étaient proposées sous les noms de Rasmus Lerdorf (co-auteur du PHP) et Nikita Popov, un développeur actif dans la communauté PHP.

Le problème est que, bien évidemment, les deux personnes ne sont pas à l’origine des commits. Dans ces derniers, les pirates ont indiqué au début « fix typo » pour préciser qu’il s’agissait juste d’une correction typographique mineure. Mais en analysant le code, une backdoor a été détectée dans l’appel de la fonction zend_eval_string. Cette porte dérobée permet d’exécuter du code à distance (RCE) sur un site web se servant de cette version détournée de PHP. « Cette ligne exécute le code PHP depuis l’en-tête http useragent, si la chaîne commence par zerodium », précise un développeur à Michael Vorisek, qui a été le premier à signaler l’anomalie. L’impact de la backdoor n’est pas anodin car PHP est utilisé par près de 80% des sites web.

Une bascule sur GitHub

Dans un message à nos confrères de Bleepingcomputer, Nikita Popov a expliqué que « le premier commit a été découvert quelques heures après avoir été effectué, dans le cadre d’une revue de code post-commit routinière. Les changements étaient manifestement malveillants et ont été annulés immédiatement. Une révision plus approfondie est en cours pour savoir si d’autres commits douteux auraient échappé à la vigilance de la communauté.

Par ailleurs, dans un message sur la liste d’informations de PHP, le développeur indique, « tout porte à croire qu’il s’agit d’une compromission du serveur git.php.net (plutôt que la compromission d’un compte git individuel). » Une enquête est en cours pour en savoir plus, mais en attendant les résultats, la sécurité n’est plus assurée sur le serveur Git de PHP. En conséquence, « nous allons supprimer le serveur git.php.net. À la place, les dépôts sur GitHub, qui n’étaient auparavant que des miroirs, deviendront la règle », précise Nikita Popov. Il ajoute, « les changements doivent être poussés directement vers GitHub plutôt que vers git.php.net ».

chevron_left
chevron_right