НовостиРазработка и Программирование

Критическая уязвимость исправлена в Packagist

Разработчики крупнейшего репозитория пакетов PHP, Packagist, сообщили об исправлении критической уязвимости на официальном сайте сервиса. За обнаружение бага инженеры благодарят специалиста по информационной безопасности Макса Ютича (Max Justicz).

Нужно сказать, что Packagist —это не пакетный менеджер, но хостинг PHP-пакетов. Это дефолтный хостинг Composer, наиболее популярного пакетного менеджера PHP, и крупнейший хостинговый сервис в экосистеме PHP в целом. Так, только в июле 2018 года разработчики отчитались о 435 млн установок пакетов.

Так как проблема уже устранена, в своем блоге Юстич опубликовал детали найденного бага. Исследователь рассказывает, что поле Submit Package («Добавить пакет»), предназначенное для загрузки новых пакетов PHP через сайт Packagist, позволяло атакующим запустить вредоносную команду в формате «$(ВРЕДОНОСНЫЕ_КОМАНДЫ)».

Дело в том, что Packagist ожидал, что пользователь предоставит ему URL, указывающий на репозиторий с кодом на сервере Git, Perforce, Subversion или Mercurial. Как оказалось, сервис некорректно проверял, ведет ли URL к репозиторию Perforce или Subversion, из-за чего выполнял вредоносные команды дважды (один раз при проверке Perforce и еще раз при проверке Subversion).

Юстич пишет, что опасность атаки зависела от квалификации атакующего. В теории, эксплуатируя описанный баг, злоумышленник мог скомпрометировать сервер Packagist и развить атаку далее.