Скомпрометированные токены GitHub привели к массовой краже исходного кода в скоординированной кампании

information security

В период с середины мая по начало июня 2026 года злоумышленники провели скоординированную атаку на несколько организаций, использующих GitHub для хранения исходного кода и внутренней документации. Инструментом проникновения стали личные токены доступа - специальные ключи, которые разработчики используют для автоматизации работы с репозиториями. Получив контроль над такими токенами, атакующие смогли прочитать закрытые репозитории, скопировать их содержимое и попытаться использовать украденные учётные данные для дальнейшего проникновения в облачные среды.

Описание

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

Как выяснила команда Wiz CIRT, атака имела три чётко выраженные фазы. Разведка велась 15 мая, проверка токенов - с 29 по 31 мая, а основное копирование произошло 1 июня. При этом все операции выполнялись с использованием легитимных учётных записей сотрудников, что делало атаку незаметной для стандартных средств защиты. По оценкам аналитиков, злоумышленники применяли автоматизированные инструменты, которые параллельно обрабатывали множество репозиториев и действовали без участия человека.

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

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

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

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

Сложность расследования таких инцидентов заключается в том, что улики разбросаны по разным системам: журналы GitHub, облачные платформы, кодовые базы. Без единой точки сбора данных сложно восстановить полную картину атаки и вовремя заметить переход злоумышленников из GitHub в облачную среду. Решением может стать потоковая передача журналов GitHub в централизованную платформу безопасности, которая сопоставляет события из разных источников и автоматически выявляет подозрительные цепочки действий.

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

Wiz CIRT подчёркивает, что угроза, связанная с личными токенами доступа, будет только расти, поскольку компании всё активнее переносят разработку в облачные среды. Токены стали новым видом ценных активов, которые злоумышленники целенаправленно охотятся за ними. Регулярная проверка прав доступа, использование короткоживущих токенов, многофакторная аутентификация и обучение разработчиков правилам гигиены безопасности - базовые, но необходимые меры, позволяющие снизить риск подобных инцидентов.

Индикаторы компрометации

IPv4

  • 107.174.201.183
  • 13.221.167.217
  • 15.157.62.127
  • 15.157.63.171
  • 15.157.65.4
  • 15.157.68.0
  • 15.157.69.80
  • 15.157.70.253
  • 15.222.60.246
  • 15.222.60.27
  • 15.222.61.83
  • 15.222.64.207
  • 15.223.121.133
  • 15.223.186.60
  • 15.223.188.87
  • 15.223.199.223
  • 15.223.2.184
  • 15.223.200.124
  • 15.223.204.99
  • 15.223.206.124
  • 15.223.207.112
  • 15.223.63.237
  • 15.223.65.175
  • 15.223.67.252
  • 15.223.74.214
  • 15.223.74.59
  • 16.52.128.252
  • 16.52.147.129
  • 16.52.147.249
  • 16.52.166.75
  • 16.52.169.32
  • 16.52.37.91
  • 16.52.40.180
  • 16.52.50.245
  • 16.52.76.162
  • 16.52.82.13
  • 16.52.86.223
  • 16.54.241.145
  • 16.54.241.240
  • 16.54.243.226
  • 16.54.253.67
  • 3.96.127.99
  • 3.96.138.214
  • 3.96.141.125
  • 3.96.142.210
  • 3.96.149.105
  • 3.96.173.139
  • 3.96.173.8
  • 3.96.187.238
  • 3.96.193.166
  • 3.96.197.212
  • 3.96.199.215
  • 3.96.200.150
  • 3.96.201.161
  • 3.96.208.217
  • 3.96.210.47
  • 3.96.210.9
  • 3.96.218.171
  • 3.97.11.39
  • 3.99.161.201
  • 3.99.171.218
  • 35.182.104.189
  • 35.182.13.97
  • 35.182.157.210
  • 35.182.17.157
  • 35.182.176.228
  • 35.182.213.73
  • 35.182.251.252
  • 35.182.78.22
  • 35.182.79.86
  • 35.182.83.50
  • 35.183.106.137
  • 35.183.111.110
  • 35.183.112.105
  • 35.183.121.31
  • 35.183.126.121
  • 35.183.129.254
  • 35.183.136.221
  • 35.183.15.41
  • 35.183.178.163
  • 35.183.20.241
  • 35.183.210.27
  • 35.183.235.214
  • 35.183.236.91
  • 35.183.243.11
  • 35.183.26.57
  • 35.183.34.62
  • 35.183.42.203
  • 35.183.64.193
  • 35.183.65.4
  • 35.183.69.26
  • 52.60.229.238
  • 99.79.128.151
  • 99.79.128.234
  • 99.79.161.206
  • 99.79.189.128
  • 99.79.193.97
  • 99.79.32.153
  • 99.79.33.200
  • 99.79.48.16
  • 99.79.52.86
  • 99.79.64.18
  • 99.79.72.217
  • 99.79.75.249

Комментарии: 0