Неизвестные злоумышленники попытались провернуть масштабную атаку через цепочку поставок, загрузив вредоносный код в официальный GIT-репозиторий PHP. Если бы разработчики PHP не заметили бэкдор, то он мог бы оказаться на множестве веб-серверов по всему миру — и это стало бы крупнейшей в истории атакой на цепочку поставок.
Что случилось с PHP?
Программисты, работающие над развитием языка PHP, добавляют изменения в коде в общий репозиторий, построенный на базе системы контроля версий GIT. После внесения дополнений код проходит дополнительное ревью. При очередной рутинной проверке проводивший ее разработчик заметил подозрительное дополнение — оно было помечено в комментариях как исправление опечатки и добавлено от имени Никиты Попова, одного из активных участников развития PHP. При ближайшем рассмотрении оказалось, что это бэкдор, а Никита, разумеется, ничего подобного не добавлял.
После дополнительной проверки выяснилось, что аналогичное дополнение было загружено в репозиторий еще один раз, на этот раз от имени одного из создателей PHP, Расмуса Лердорфа (Rasmus Lerdorf). Благодаря бдительности программистов изменение было замечено не позже чем через пару часов после того, как оно было добавлено, так что грядущее обновление PHP 8.1 (которое должно быть готово к концу года) выйдет все-таки без бэкдора.
Что за бэкдор в коде PHP и чем он был опасен
Добавленный в репозиторий бэкдор мог позволить злоумышленникам удаленно запустить вредоносный код на веб-сервере, использующем данную версию PHP. Хотя PHP понемногу теряет популярность, этот скриптовый язык все еще является самым распространенным инструментом для создания веб-сайтов и используется примерно на 80% веб-серверов. И пускай не все администраторы обновляют свои инструменты, изрядная часть серверов все равно поддерживается в актуальном состоянии — в соответствии с требованиями регуляторов или внутренних регламентов безопасности. Так что если бы бэкдор попал в новую версию PHP, то он с высокой долей вероятности разошелся бы по веб-серверам многих компаний.
Как злоумышленникам удалось внедрить бэкдор в код PHP
Расследование продолжается, но пока эксперты уверены, что это произошло не в результате компрометации учетных записей разработчиков, а скорее из-за наличия какой-то уязвимости в самом внутреннем Git-сервере. О том, что при должном умении на нем можно приписать произвольному изменению авторство другого пользователя, известно давно. После этого инцидента команда, занимающаяся поддержкой PHP, пришла к решению прекратить использование собственного сервера git.php.net и переехать в репозиторий в сервисе GitHub (он использовался и до этого, но только в качестве зеркала).
Как оставаться в безопасности
Как мы уже писали, среда разработки — лакомая цель для злоумышленников. Ведь скомпрометировав код программного продукта, которому доверяют клиенты, они могут разом добраться до множества целей в ходе сложной атаки через цепочку поставок. Особенно важно защищать от постороннего вмешательства код таких популярных проектов, как PHP, которые используют миллионы пользователей по всему миру.
- Как показывает пример команды поддержки PHP, крайне важно регулярно перепроверять все изменения, вносимые в код, даже если они вносятся именитыми и заслуживающими доверия программистами.
- Крайне важно следить за безопасностью серверов и сервисов, используемых в разработке.
- Все участники процесса должны понимать типичные цели и тактики злоумышленников, чтобы вовремя заметить попытку компрометации проекта. Обучать сотрудников навыкам выявления современных киберугроз можно при помощи специализированных онлайновых платформ.