В период с середины мая по начало июня 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