The OpenNET Project / Index page

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

Уязвимость в GitHub Actions, допускающая подстановку команд

04.11.2020 10:49

Компания Google раскрыла информацию о методе эксплуатации уязвимости (CVE-2020-15228) в механизме GitHub Actions, предназначенном для прикрепления обработчиков для автоматизации различных операций в GitHub. Например, при помощи GitHub Actions можно выполнить определённые проверки и тесты при совершении коммитов или автоматизировать обработку новых Issues. Уязвимость вызвана тем, что обмен командами между процессом запуска Action и запускаемым действием (Action) производится через стандартный поток (STDOUT) - Actions Runner парсит стандартный поток, формируемый в процессе выполнения действий, и выделяет в нём маркеры команд "##[command parameter1=data;]command-value...".

Проблема в том, что некоторые обработчики действий допускают передачу через тот же стандартный поток сторонних данных, например, передают через стандартный поток заголовок Issue или данные из коммитов. Злоумышленник может воспользоваться этой особенностью и осуществить подстановку своих команд, которые будут обработаны в Actions Runner. В частности, при помощи команды "set-env" можно выставить любую переменную окружения, в том числе определить переменную "NODE_OPTIONS" и организовать выполнение своего кода во время обработки действия в Node.js.

Например, проект VSCode запускает действие CopyCat для копирования новых issue в другой репозиторий. CopyCat выводит содержимое issue.title в stdout, что позволяет атаковать систему, на которой выполняется Actions Runner, через создание issue c заголовком вида "##[set-env name=NODE_OPTIONS;]--experimental-modules --experimental-loader=data:text/javascript,....".

1 октября GitHub сообщил о переводе в разряд устаревших наиболее опасных команд "set-env" и "add-path" и выпустил обновление npm-пакета @actions/core, в который было добавлено предупреждение о возможных проблемах. Полное устранение уязвимости было намечено на 2 ноября, но GitHub не успел подготовить изменение и попросил у выявивших проблему исследователей сдвинуть ранее намеченную дату раскрытия информации (GitHub был уведомлен о проблеме ещё в июле). Google Project Zero отказался от смещения даты, так как до этого уже было предоставлено 14 дополнительных дней сверх срока, и опубликовал детали в изначально намеченный день.

GitHub оперативно выпустил обновление Actions Runner 2.273.6, в котором заблокировал упомянутую в прототипе эксплоита команду "set-env", но другие 13 поддерживаемых команд остаются незаблокированными (т.е. пока устранён лишь один их частных случаев, но сама проблема остаётся и потенциально для атаки могут быть использованы другие команды). Для организации установки переменных окружения предложено использовать промежуточные файлы.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Уязвимость, позволяющая осуществить подстановку SQL-кода в GitHub Enterprise
  3. OpenNews: Выявлена порция уязвимых SSH-ключей доступа к GitHub
  4. OpenNews: Возможность доступа к приватным репозиториям GitHub при помощи серии незначительных уязвимостей в OAuth
  5. OpenNews: Через уязвимость в GitHub от имени Линуса Торвальдса создан фиктивный репозиторий linux-ng
  6. OpenNews: В GitHub устранена уязвимость, допускающая внедрение кода в любой репозиторий
Лицензия: CC-BY
Тип: Проблемы безопасности
Короткая ссылка: https://opennet.ru/54023-github
Ключевые слова: github
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (19) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:19, 04/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +17 +/
    Неделя гитхаба, все идет отлично.  
     
     
  • 2.5, Qwerty (??), 12:10, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Б-же, какое же лицемерие. До покупки Майкрософтом "свободное" сообщество сочувствовало или, в лучшем случае, не замечало, то после начинаются скакания и радостные вопли на любую проблему хорошей, в общем-то, системы, популярной во всём мире.
     
     
  • 3.9, Аноним (9), 12:41, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да всегда она дерьмо было, зачем тут скакать с кастрюльками на голове? Изначально надо было игнорировать и они бы быстро схлопнулись.
     
  • 3.10, Аноним (10), 12:59, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну да, мы не любим Майкрософт, это не секрет.

    Майки к этому приложили множество усилий. Теперь пожинают плоды.

     
     
  • 4.11, Аноним (11), 13:40, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Да всем с....ть на вас. Пожинают плоды они в виде собирания денег с таких лохопедов как ты. То с гитхаба копеечку, то с азура.
     

  • 1.2, m.makhno (ok), 11:20, 04/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    с июля знали, подготовить к ноябрю не успели, отказ в ещё одной отсрочке получили, патч таки выпустили... лол
     
     
  • 2.7, пох. (?), 12:27, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вероятнее всего, они чуть менее тyпые чем ты, и то, что они не успели выпустить - не заключалось в блокировке намертво команд, на которые завязана куча работающих скриптов, с оставлением других потенциальных дыр, потому что иначе вообще все сломается, а предполагало более осторожное решение. Которое никакой google zero в клювике не принес, это работа, ее сделать надо.

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

     
     
  • 3.8, m.makhno (ok), 12:39, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > гугловоды, разумеется, не могли упустить случая подгадить чужому проекту

    У Google на GitHub 2к реп - так оно им надо?

     
     
  • 4.15, пох. (?), 15:23, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так ведь не у гугля, а у рабов гугля - сам гугль свое никому не отдаст, у него все в надежной внутренней заначке, на гитхабе лежат кости, кинутые забесплатно-нате-жрите (гугль, кстати, весьма разборчив в том, что выкидывать), все равно ненужно.

    И даже если гитхап прям завтра сдохнет - гуглю от этого никакого особого расстройства. А рабы...ну в гитляп переедут, или еще куда.

    А вот просто сделать пакость конкурирующей компании, раз она так подставилась - почему же ж нет.

    Никакого другого смысла прождав пол-года не согласиться подождать еще пару недель - лично я не вижу.

     

  • 1.3, Иваня (?), 11:58, 04/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Капец, GitHub разваливается на глазах! Внукам буду рассказывать, как умирал крупнейший архив open source. Такими темпами от GitHub останется только код в Арктике (см. GitHub Archive Program)
     
     
  • 2.4, m.makhno (ok), 12:08, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Отставить панику, Иваня. Всё идёт по плану. Какому? Одной M$ известно.
     
  • 2.14, Аноним (-), 15:05, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >  GitHub останется только код в Арктике

    А ты уверен что он там есть ? Дешевая ПР акция какбы

     

  • 1.6, Аноним (6), 12:13, 04/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Успокойтесь уже. Ну решила себя порекламтровать контора с ее руководством. Ну другие примчались в этом помогать. Так теперь нужно крик на весь рунет об этом поднимать?
     
  • 1.12, Аноним (12), 14:34, 04/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Чёт я не понял как и куда кто-то может подставить своё действие. Если я использую чужую action, она могла, может и всегда будет мочь сделать абсолютно что угодно в рамках запуска action, разве нет? Это вполне ожидаемо.

    А вообще должен сказать что попробовал миграцию с Travis (который скурвился - время ожидания в очереди выросло до десятков часов, хотят чтобы пользователи мигрировали на travis.com с ограничениями, который запрашивает невменяемых доступов с полным r/w к репозиториям) на actions и очень доволен. CI на actions работает в разы быстрее, не требует выдачи доступов каким-то третьим сервисам, образы ubuntu там новее и лучше устроены с точки зрения свежего софта, например работабщий pg13 из коробки, сразу есть винда, что позволяет отказаться ещё и от yблюдского appveyor, и конфиг получается намного чище и гранулярнее. Всем советую.

     
  • 1.13, Чума (?), 14:52, 04/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Злоумышленник может написать любой код для PR. Именно поэтому, нельзя билдить каждый PR от случайных людей.
     
  • 1.16, Аноним (16), 16:00, 04/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Запрет на ## в issue.title решило бы проблему?
     
     
  • 2.17, пох. (?), 18:55, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    для тех кто парсит issue title - решило бы. Для тех кто парсит что-то другое - не решило бы.

    Ибо нехрен мешать необработанные данные с кодом.


     

  • 1.18, Аноним (18), 22:47, 04/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Славные ручки микрософт.
     
  • 1.19, Ordu (ok), 00:19, 05/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Здравствуй, дырявый unix-way! Давненько на опеннете не писали про тупейшие ошибки вызываемые пайпами, переменными окружениями и дебильным способом передачи аргументов дочернему процессу.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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