Согласно материалу Cybernews, кампания, построенная вокруг украденных токенов GitHub и WFX stealer, ставит под угрозу примерно 66 000 репозиториев. Предположительно, злоумышленники использовали украденные токены доступа для внедрения вредоносных файлов workflow, превращая конвейер разработки в инструмент сбора секретов. Доступные сообщения кратки, поэтому этот пост придерживается того, что было заявлено, и сосредоточен на практических шагах, которые разработчики могут предпринять уже сейчас.

Как украденные токены позволили провести атаку через workflow GitHub

Согласно отчёту, кампания использовала украденные токены, чтобы добавить workflow «WFX stealer» примерно в 66 000 репозиториев GitHub. Токен — это учётные данные, позволяющие человеку или приложению действовать от имени аккаунта без ввода пароля. Если у злоумышленника есть действующий токен с достаточными разрешениями, GitHub считает его действия легитимными.

Именно это делает workflow привлекательной целью. Workflow GitHub Actions — это файлы, хранящиеся в репозитории, которые запускаются автоматически, часто с доступом к секретам, которые проект использует для сборки, тестирования и развёртывания кода. Вредоносному workflow не нужно эксплуатировать уязвимость в программном обеспечении. Достаточно, чтобы его закоммитил тот, кого GitHub считает авторизованным, — и затем он запускается внутри конвейера.

В исходном резюме не уточняется, как токены были изначально украдены, и мы не будем строить догадки. Для читателей важно другое — сама схема: конвейер становится механизмом доставки, а учётные данные, открывающие к нему доступ, — главная добыча.

Что WFX stealer может раскрыть из аккаунтов разработчиков

В сообщениях workflow описываются как похищающие секреты, а предложенный угол подачи отмечает, что конвейеры CI/CD могут стать путём к секретам разработчиков и их личным аккаунтам. На практике stealer, работающий в конвейере, может получить доступ ко всему, к чему имеет доступ этот конвейер. Типичные примеры таких материалов включают:

  • API-ключи и облачные учётные данные, хранящиеся как секреты репозитория
  • Токены развёртывания и учётные данные реестра пакетов
  • Другие токены GitHub, доступные workflow

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

Это вписывается в более широкую тему, которую мы освещали ранее: системы, которым люди должны доверять, обращаются против них. Наш разбор того, как уязвимость Pixel zero-click и атаки ScreenConnect на MSP разделили ту же неудобную линию, показывает, как часто доверенный инструмент оказывается слабым местом.

Как проверить, затронуты ли ваши репозитории

Мы не можем сказать, входит ли конкретный репозиторий в список затронутых, и в доступных сообщениях такой список не публикуется. Вы всё равно можете самостоятельно поискать признаки вмешательства:

  1. Проверьте файлы workflow. Откройте папку .github/workflows в каждом репозитории и поищите файлы, которые вы не узнаёте, или изменения, которые вы не вносили.
  2. Проверьте историю коммитов и pull request. Поищите недавние коммиты или ветки, затрагивающие workflow, особенно от незнакомых аккаунтов или в странное время.
  3. Изучите журналы запусков Actions. Неожиданные запуски, новые триггеры или шаги, выполняющие исходящие сетевые запросы, заслуживают более внимательного изучения.
  4. Просмотрите журнал безопасности и авторизованные приложения. В настройках GitHub проверьте, какие personal access tokens, OAuth-приложения и GitHub Apps имеют доступ, и удалите всё, чем вы не пользуетесь.
  5. Исходите из факта компрометации, если что-то нашли. Считайте каждый секрет, который мог прочитать этот workflow, скомпрометированным, и замените его.

Укрепление GitHub: токены, MFA и сторонние Actions

Ни один из этих шагов не является экзотическим, но вместе они сокращают то, что может сделать украденный токен.

Ротируйте и сокращайте токены. Отзывайте старые personal access tokens и выпускайте новые с максимально узкой областью действия и минимальным сроком действия, которые работают. Fine-grained токены, ограниченные конкретными репозиториями, безопаснее широких.

Включите многофакторную аутентификацию. MFA защищает вход в аккаунт, хотя стоит помнить, что украденный токен может полностью обойти этап входа. Именно поэтому гигиена токенов так же важна.

Ограничьте разрешения workflow. Установите токен workflow по умолчанию в режим только для чтения и предоставляйте доступ на запись только там, где он действительно нужен заданию. Требуйте проверки перед слиянием изменений в файлах workflow, например через защиту веток и code owners.

Проверяйте сторонние Actions. Закрепляйте Actions за конкретным коммитом, а не за перемещаемым тегом, и предпочитайте те, что от сопровождающих, которым вы доверяете. Держите секреты вне заданий, которым они не нужны.

Что это значит для вас

Если вы поддерживаете даже небольшой проект на GitHub, ваши файлы workflow — часть вашей поверхности атаки. Украденный токен может позволить кому-то добавить workflow, который тихо читает ваши секреты, и вы можете никогда не увидеть оповещения. Отдельные разработчики, сопровождающие open source и компании с автоматизированным развёртыванием — все в зоне риска.

Хорошая новость в том, что средства защиты находятся под вашим контролем и требуют немного времени. Это также часть повторяющейся схемы, в которой злоумышленники атакуют аккаунты и инструменты, которым люди уже доверяют. Наш материал о том, как Incransom заявила об атаке на TrRAC Inc., — это инцидент другого типа, но он подчёркивает, как быстро украденный доступ может превратиться в реальный ущерб.

Практические выводы

  • Ротируйте свои токены GitHub сегодня и удаляйте те, которыми больше не пользуетесь.
  • Включите MFA на каждом аккаунте с доступом к репозиториям.
  • Проверьте свои файлы .github/workflows на изменения, которые вы не вносили.
  • Установите разрешения workflow по умолчанию в режим только для чтения и закрепляйте сторонние Actions.
  • Если найдёте что-то подозрительное, замените каждый секрет, к которому мог иметь доступ этот workflow.

Сообщения об украденных токенах GitHub и WFX stealer всё ещё развиваются, и детали могут меняться. Не ждите подтверждения, чтобы привести свою конфигурацию в порядок: ротируйте токены, включите MFA и проверьте свои workflow уже сегодня.