В ходе недавней supply-chain-атаки был взломан официальный Git-репозиторий PHP и подделаны исходники.
Вчера два вредоносных коммита были перенесены в php-src Git-репозиторий, поддерживаемый командой PHP на сервере git.php.net. Злоумышленники подписали эти коммиты так, как будто они были сделаны известными PHP-разработчиками и сотрудниками поддержки, Расмусом Лердорфом и Никитой Поповым.
Бэкдор RCE, установленный на Git-сервере PHP
В попытке скомпрометировать базу кода PHP вчера в официальный репозиторий Git PHP были внесены два вредоносных коммита.
Инцидент вызывает тревогу, учитывая, что PHP остается серверным языком программирования, на котором базируется более 79% сайтов в Интернете.
В коммитах [1, 2] атакующие опубликовали изменения с комментарием «исправление опечатки» под предлогом, что это было незначительное исправление.
Вредоносный коммит, который злоумышленники разместили от имени Расмуса Лердорфа закладывает бэкдор с возможностью удаленного выполнения произвольного кода.
Однако, взглянув на добавленную строку 370, где вызывается функция zend_eval_string, код на самом деле внедряет бэкдор для получения легкого удаленного выполнения кода на сайте, работающем с этой взломанной версией PHP.
«Эта строка выполняет PHP-код из пользовательского HTTP-заголовка, если строка начинается «zerodium»», - сообщил PHP-разработчик Джейк Бирхолл Михаилу Воржишеку, который первым указал на аномалию.
В интервью по электронной почте разработчик PHP Никита Попов сообщил изданию BleepingComputers:
«Первый коммит был найден через пару часов после добавления в рамках обычного ревью изменений. Изменения были явно вредоносными и сразу же были откачены».
Кроме того, вредоносные изменения были сделаны и от имени создателя PHP Расмуса Лердорфа.
Сам факт происшествия удивления не вызывает - в системах контроля версий исходного кода, таких как Git, можно подписать коммит как исходящий от кого угодно локально, а затем загрузить поддельный коммит на удалённый Git-сервер, где создаётся впечатление будто он действительно подписан указанным локально человеком.
Хотя полное расследование инцидента продолжается, по сообщениям поддержки PHP эта вредоносная деятельность произошла из-за взлома сервера git.php.net, а не из-за компрометации отдельной учетной записи Git'а.
Официальная база кода PHP переехала на GitHub
В качестве меры предосторожности после этого инцидента разработчики PHP решили перенести официальный репозиторий исходного кода PHP на GitHub.
«Пока расследование ещё продолжается мы решили, что поддержание нашей собственной git-инфраструктуры является ненужным риском безопасности, и что мы прекращаем работу сервера git.php.net. Вместо этого репозитории на GitHub, которые раньше были только зеркалами, станут основными» - объявил Попов.
С учетом этих изменений Попов утверждает, что любые изменения кода с данного момента размещаются непосредственно на GitHub, а не на сервере git.php.net. Те, кто заинтересован в участии в проекте PHP, теперь должны быть добавлены как часть организации PHP на GitHub. Инструкции по этому поводу приведены в том же оповещении безопасности. Для членства в организации вам понадобится двухфакторная аутентификация вашей учетной записи GitHub.
«Мы проверяем репозитории на наличие любых повреждений помимо двух упомянутых коммитов», - сообщил Попов.
BleepingComputer обратился как к Попову, так и к команде безопасности PHP для выяснения всей полноты случившейся компрометации, а также факта утечки кода до того, как вредоносные коммиты были выявлены и устранены.
«Возможно, репозиторий и был клонирован или создан его форк, но никаких тегов или релизных артефактов не появилось. Изменения были сделаны в ветке разработки PHP 8.1, выпуск которой запланирован на конец года» - рассказал Попов в интервью BleepingComputer.
Команда PHP подтвердила, что планирует вывести из эксплуатации свой git-сервер в ближайшие дни и перейти на GitHub на постоянной основе.
Перевод сделан со статьи: https://www.bleepingcomputer.com