Техновости
Новости

Атака на GitHub: взломаны 1 900 аккаунтов и 30 000 репозиториев через украденные токены

Злоумышленники использовали украденные персональные токены доступа (PAT), чтобы внедрять вредоносные workflow в репозитории GitHub. Под видом проверок безопасности они сканировали историю Git и похищали ключи AWS, токены GitHub и GitLab, а также API-токены ИИ-провайдеров. Пострадали 1 900 аккаунтов и 30 000 репозиториев.

Editor 4 мин 0 просм.
Атака на GitHub: взломаны 1 900 аккаунтов и 30 000 репозиториев через украденные токены

Первоисточник: selectel.ru

Что произошло

По данным StepSecurity, в 2026 году скомпрометированы 1 900 аккаунтов и 30 000 репозиториев GitHub. Уязвимости в GitHub Actions не эксплуатировались: злоумышленники использовали украденные персональные токены доступа (PAT) разработчиков для изменения workflow.

Как получили доступ

Источником, по предположению StepSecurity, стали утекшие PAT; точный вектор атаки не подтверждён. Получив доступ к репозиториям, хакеры изменяли файлы workflow, маскируя задачи под стандартные проверки безопасности.

Маскировка под проверки безопасности

Вредоносные файлы назывались security-audit.yml или github_actions_security.yml. Они ссылались на секреты, уже используемые в легитимных сборках, поэтому вредоносные процессы собирали учётные данные во время работы и отправляли их на подконтрольный сервер.

Сканирование истории Git

В октябрьской версии атаки хакеры задействовали actions/checkout@v4 с параметром fetch-depth: 0 для полного сканирования рабочего дерева и истории коммитов. Это позволило искать учётные данные, удалённые из текущего кода, но оставшиеся в истории Git.

Какие данные искали

  • Ключи AWS; поздние версии скрипта захватывали соседние строки кода, чтобы сопоставить ID ключей с секретными ключами доступа
  • Токены PAT от GitHub и GitLab
  • Ключи сервисов Google и Firebase
  • API-токены ИИ-провайдеров: Anthropic, OpenAI, OpenRouter

Куда уходили данные

Собранные учётные данные отправлялись по HTTP на IP-адрес 193.32.204.199. Утекали и ключи, давно удалённые из текущей кодовой базы, но оставшиеся в истории Git.

Хронология и масштаб

Этапы атаки и статистика
ЭтапДетали
Первоначальная доставкаВредоносный код доставлен 160 известным жертвам
Массовое внедрениеСпустя 20 минут началось массовое внедрение в 28 000 новых репозиториев
Предыдущие атаки (август–сентябрь)Вредоносные процессы найдены в 772 публичных репозиториях; из 3 669 запусков успешно завершились 336, что привело к краже 26 секретов из 13 репозиториев
Очистка репозиториевК 5 октября очистить репозитории от вредоносного кода успели 16% пострадавших (124 из 772)

Почему опасны ключи, удалённые из кода

Секрет, удалённый из текущей кодовой базы, может оставаться в истории Git. Сканируя историю коммитов, злоумышленники получают доступ к таким ключам. Если ключи не отозваны, они остаются действительными.

Что делать

  1. Проверьте журналы аудита GitHub и активность PAT: какие аккаунты изменяли файлы в .github/workflows/
  2. Изучите историю запусков Actions, чтобы понять, какие секреты могли попасть к хакерам
  3. Немедленно отзовите учётные данные всех скомпрометированных аккаунтов с правом записи, даже если вредоносный процесс уже удалён
  4. Перевыпустите облачные ключи, учётные данные для развертывания, токены реестров и API-ключи ИИ-провайдеров
  5. Смените пароли и ключи, удалённые из кода месяцы назад: они могли остаться валидными и утечь после сканирования истории Git

Отзыв и перевыпуск учётных данных

После отзыва скомпрометированных PAT перевыпустите все ключи и токены, которые могли быть скомпрометированы: облачные ключи AWS, токены GitHub и GitLab, ключи Google и Firebase, API-токены Anthropic, OpenAI и OpenRouter. Новые учётные данные не должны храниться в открытом виде в репозиториях.

Как защитить CI/CD на будущее

  • Используйте минимально необходимые привилегии для PAT и других токенов
  • Регулярно проводите аудит журналов GitHub Actions и активности PAT
  • Настройте обязательное одобрение для запуска workflow из форков и внешних PR
  • Применяйте инструменты сканирования секретов (например, GitGuardian) для обнаружения утечек в реальном времени
  • Храните секреты в защищённых хранилищах (GitHub Secrets, HashiCorp Vault) и не допускайте их попадания в историю Git
  • Периодически проверяйте историю коммитов на наличие секретов и при обнаружении немедленно отзывайте их
Какие учётные данные искали злоумышленники?

Ключи AWS, токены PAT от GitHub и GitLab, ключи Google и Firebase, а также API-токены ИИ-провайдеров, включая Anthropic, OpenAI и OpenRouter.

Куда отправлялись украденные данные?

Все собранные учётные данные отправлялись по протоколу HTTP на IP-адрес 193.32.204.199.

Почему опасны ключи, удалённые из кода?

Они могут оставаться в истории Git и быть извлечены злоумышленниками при сканировании. Если ключи не отозваны, они остаются действительными.

Что делать, если репозиторий мог быть скомпрометирован?

Проверьте журналы аудита и активность PAT, отзовите все скомпрометированные учётные данные, перевыпустите ключи и токены, даже если они были удалены из кода ранее.

Читайте также