Технологии

Вредоносный код в пакетах Red Hat сам распространялся и крал ключи

Susan Hill

Какое-то время часть программных кирпичиков, выходящих под именем Red Hat, тихо работала против тех, кто их устанавливал. Более чем в 30 пакетах из публичного набора @redhat-cloud-services компании прятался небольшой скрипт, готовый запуститься в тот миг, когда разработчик ставил любой из них. Он был прописан как шаг preinstall — одна из тех автоматических задач, которые инструмент npm выполняет сам, прежде чем загрузится хоть строчка настоящей программы. Его работа была найти пароли, а затем распространиться.

Red Hat не делает приложений, которые большинство людей открывает по названию, но её код лежит под огромной частью того, чем они пользуются каждый день: под облачными панелями, через которые входит банк, под системами, на которых работают больницы и госучреждения, под инструментами, которыми другие компании собирают собственные продукты. Когда код с такой этикеткой становится враждебным, радиус поражения — не одно приложение. Это всё, что собрано поверх него.

Спрятанный скрипт вышел на охоту за ключами, которые отпирают современные вычисления. По данным фирмы безопасности StepSecurity, первой обратившей внимание на пакеты, он собирал токены доступа к Amazon Web Services, Google Cloud, Microsoft Azure, Kubernetes, HashiCorp Vault, к самому npm и к сервису автоматизации CircleCI, а также секреты, хранящиеся внутри сборочных конвейеров GitHub. Чтобы добраться до них, он читал сырую память работающего процесса сборки — приём, проскальзывающий мимо защит, которые должны держать секреты подальше от журналов.

Обычную кражу данных превращает в нечто ближе к эпидемии то, что код делал дальше. С украденными токенами публикации npm он пытался выгрузить свежезаражённые версии любых других пакетов, к которым имел доступ угнанный аккаунт, используя настройку, которая отодвигает в сторону обычно обязательную двухфакторную проверку. Кража, которая копирует сама себя, не остаётся с первыми жертвами. Она движется вдоль того же доверия, на котором держится вся система.

На машинах самих разработчиков нагрузка шла дальше: она оставляла инструкции в настройках задач Visual Studio Code и в конфигурации Claude Code, ассистента программирования на основе искусственного интеллекта, чтобы продолжать работать спустя долгое время после завершения установки. Те, кто чаще всего ставит такие пакеты, — инженеры, поддерживающие чужой софт, — оказались и теми, чьи ноутбуки становились точкой входа.

Самая неприятная деталь — откуда взялись плохие версии. Разработчики Red Hat, признавшие проблему в публичном репозитории проекта, и исследователи, разобравшие код, сходятся: отравленные версии вышли через собственный автоматический конвейер публикации Red Hat — механизм, который берёт код из репозиториев и отправляет его в мир. Атакующие не выдавали себя за Red Hat. Какое-то время они могли публиковать как Red Hat. Печать доверия и то, чему доверяли, разошлись.

Это не первый раз, когда цепочка поставок свободного софта превращается в маршрут доставки. Заражённые расширения браузеров и угнанные аккаунты разработчиков всплывали снова и снова всю весну, и все использовали одну и ту же привычку: современный софт склеивается из тысяч бесплатных компонентов, которые никто не пишет с нуля. Тяжелее этот случай делает имя на коробке. Весь смысл брать код у поставщика вроде Red Hat, а не у анонимного участника, в том, что это имя должно быть гарантией.

Стоит ясно сказать, чего этот инцидент не означает. Пока нет признаков того, что заражены устройства обычных пользователей или что взломаны платные корпоративные продукты Red Hat и боевые системы её клиентов. Вредоносные версии целились в беспорядочную середину разработки — автоматические серверы сборки и машины инженеров, — и многие из затронутых пакетов это инструменты интерфейса и разработки, а не ядро какого-либо работающего сервиса. Картина к тому же ещё меняется, и точное число заражённых пакетов сдвигалось по мере того, как Red Hat и сторонние исследователи проходят список. Ущерб, который важнее всего, — украденные учётные данные, — остаётся невидимым, пока кто-то ими не воспользуется.

Red Hat постепенно убирала вредоносные версии, а скомпрометированные публикации удаляют из npm. Тем, кто установил их в затронутом окне, советуют считать сгоревшим каждый токен, который могла видеть сборка, и заменить его. Раскрытие пришлось на начало июня, и уборка переживёт заголовки. Структурная проблема переживёт уборку: интернет собирается, на большой скорости, из миллионов мелких частей, которые поддерживают люди, с кем мы никогда не встретимся, и всё чаще автоматические системы, которые можно угнать, чтобы они подписывали эти части вместо них.

Теги: , , ,

Обсуждение

Имеется 0 комментариев.