Хакер #305. Многошаговые SQL-инъекции
В прошлом месяце разработчики и сопровождающие PHP предупредили о том, что неизвестные личности отправили два вредоносных коммита Git-репозиторий php-src, поддерживаемый командой PHP на сервере git.php.net.
Злоумышленники утверждали, что просто пытаются «исправить опечатку» и подписали эти коммиты именами известных разработчиков и сопровождающих PHP: Расмуса Лердорфа и Никиты Попова.
Как оказалось, атакующие пытались внедрить бэкдор в кодовую базу PHP. Если бы вредоносный код попал в рабочую среду, он позволил бы злоумышленникам выполнять собственные команды на серверах жертв. К счастью, вредоносные коммиты не продержались в коде и нескольких часов: их оперативно заметили и удалили. К тому же, в качестве меры предосторожности специалисты по сопровождению PHP приняли решение полностью перенести официальный репозиторий на GitHub, а поддержку git.php.net пообещали прекратить.
Как теперь сообщил Никита Попов, версию компрометации git.php.net, которой специалисты придерживались ранее, уже исключили. Теперь рассматривается версия утечки пользовательской БД с master.php.net. Дело в том, что расследование показало, что коммиты были отправлены с использованием HTTPS и аутентификации на основе пароля, поэтому возникло предположение о компрометации БД master.php.net.
«Git.php.net (намеренно) поддерживает продвижение изменений не только через SSH (с использованием инфраструктуры Gitolite и криптографии с открытым ключом), но и через HTTPS. Последний не использовал Gitolite, а вместо этого использовал git-http-бэкэнд с аутентификацией Apache 2 Digest в пользовательской БД master.php.net, — пишет Попов. — Примечательно, что злоумышленник всего за несколько попыток подобрал имена пользователей и успешно прошел аутентификацию после того, как был подобран верный username. Хотя у нас нет никаких конкретных доказательств, возможное объяснение заключается в том, что утекла база данных master.php.net. Хотя в таком случае непонятно, зачем злоумышленнику понадобилось подбирать имена пользователей».
В итоге разработчики перенесли master.php.net на новую систему main.php.net с поддержкой TLS 1.2, а также сбросили все существующие пароли, и теперь пароли будут храниться с использованием bcrypt вместо MD5.