Сотни версий пакетов Laravel Lang, популярного решения для локализации широко распространенного PHP-фреймворка Laravel, были заражены вредоносным кодом в ходе атаки на цепочку поставок. Об этом свидетельствует отчет исследователей безопасности из Aikido (откроется в новом окне). Целью атакующих, по их данным, является массовое хищение учетных данных и другой конфиденциальной информации.
Исследователи безопасности из Socket также обратили внимание на эту атаку. Они обнаружили 700 версий пакетов из репозиториев Laravel Lang: lang (откроется в новом окне), http-statuses (откроется в новом окне), attributes (откроется в новом окне) и actions (откроется в новом окне), которые, как предполагается, все скомпрометированы. Полный список с возможностью поиска можно найти в блоге исследователей Socket (откроется в новом окне).
Хотя Laravel Lang не является частью официального проекта Laravel, пакеты перевода используются во многих PHP-приложениях на базе Laravel. Только репозиторий lang насчитывает на Github около 7800 звезд и 3000 форков. По словам разработчиков, Laravel Lang поддерживает 128 различных языков.
Вредоносный код выполняется автоматически
Вышеупомянутая атака на цепочку поставок предположительно произошла 22 и 23 мая. Согласно данным, внедренное вредоносное ПО является инфостилером (похитителем информации). Он автоматически запускается на целевых системах через функцию автозагрузчика менеджера пакетов PHP Composer. Вредоносный код состоит примерно из 5900 строк PHP-кода и имеет модульную структуру, сообщается в Aikido.
Однако вредоносное ПО, по всей видимости, было внедрено не через обычные коммиты в репозитории Laravel Lang. «Github позволяет направлять теги версий на коммиты из форка того же репозитория. Атакующий воспользовался этим, создав теги, которые указывают на коммиты в контролируемом им вредоносном форке», — объясняют исследователи.
Таким образом, по сути, не были предоставлены новые версии пакетов в качестве обновлений, а были ретроспективно подменены загрузки для существующих и частично уже несколько лет устаревших версий (откроется в новом окне).
Учетные данные и другое
Основная цель атакующих — кража конфиденциальных данных. Инфостилер ищет, среди прочего, облачные учетные данные, токены для Github, Slack, Discord, Telegram и сервисных аккаунтов Kubernetes, переменные окружения, конфигурационные данные, криптовалютные кошельки, данные браузера, хранилища паролей, SSH-ключи, историю команд оболочки и многие другие локальные данные. Эти данные локально шифруются, а затем передаются в систему атакующего.
Исследователи из Aikido, по их словам, незамедлительно сообщили о своих наблюдениях разработчикам Laravel Lang (откроется в новом окне) и в Packagist, после чего скомпрометированные версии пакетов были оперативно удалены из сети. Тем не менее, вредоносный код, вероятно, успел попасть на некоторые системы разработчиков.
Поэтому пользователям затронутых пакетов настоятельно рекомендуется проверить, не загрузили ли они вредоносное ПО, и, при необходимости, принять дальнейшие меры. Полезные для самостоятельного расследования индикаторы компрометации, а также конкретные рекомендации по действиям можно найти, помимо отчетов Aikido (откроется в новом окне) и Socket (откроется в новом окне), также в отчете Stepsecurity (откроется в новом окне) и в отчете о расследовании разработчиков Laravel Lang (откроется в новом окне).