Подрядчик CISA полгода держал пароли и ключи AWS в публичном репозитории GitHub
Шесть месяцев в открытом репозитории GitHub лежали административные ключи AWS GovCloud и пароли от внутренних систем американского агентства по кибербезопасности. Разбираем, как это случилось и что взять для своей команды.
Каждый разработчик хотя бы раз ставил git push и через секунду холодел: «А я .env точно вычеркнул из коммита?». Подрядчик американского агентства по кибербезопасности CISA, судя по всему, этот вопрос себе ни разу не задал — и шесть месяцев держал в публичном репозитории GitHub пароли в открытом виде, токены к закрытому облаку AWS GovCloud (изолированный регион Amazon для госструктур США) и сертификаты Microsoft Entra ID (бывший Azure AD, корпоративный сервис единого входа).
Историю обнародовал журналист Брайан Кребс в материале от 18 мая по наводке исследователя из GitGuardian. Репозиторий назывался без лишней скромности — Private-CISA — и был виден любому, кто откроет GitHub.
Ключевые выводы
- Подрядчик CISA с 13 ноября 2025 года вёл публичный репозиторий Private-CISA размером 844 МБ с паролями, ключами AWS GovCloud, сертификатами Entra ID SAML и Kubernetes-манифестами.
- Пароли лежали в открытом виде в CSV-файле, а среди файлов был importantAWStokens с админ-доступом к трём серверам AWS GovCloud.
- Чтобы такое стало возможным, в аккаунте было выключено стандартное правило GitHub, блокирующее коммиты с секретами.
- GitGuardian называет утечку «худшей в карьере» исследователя, но CISA утверждает, что «нет признаков компрометации чувствительных данных».
- Репозиторий закрыли вечером 15 мая 2026 года, спустя около 26 часов после уведомления исследователей — но он был публичным около полугода.
Что лежало в Private-CISA
GitGuardian, компания, у которой сканер постоянно обходит публичные репозитории GitHub в поисках утёкших секретов, наткнулась на репозиторий 14 мая 2026 года. По объёму это 844 МБ — 498 МБ в рабочем дереве, остальное в истории Git. Среди папок и файлов исследователи нашли:
- importantAWStokens — административные токены к трём серверам AWS GovCloud (изолированный облачный регион Amazon для госструктур США).
- AWS-Workspace-Firefox-Passwords.csv — экспорт сохранённых паролей Firefox с десятками логинов и паролей от внутренних систем CISA в открытом виде.
- CAWS GitHub Token.txt — отдельный токен GitHub-организации.
- Kube-Config.txt — конфигурации Kubernetes для доступа к кластерам.
- Папку ENTRA ID — SAML Certificates с сертификатами для единого входа через Microsoft Entra ID.
- Папки All Backups, Backup-April-2026, LZ-Artifactory, Kubernetes-Important-Yaml-Files — внутренние бэкапы, манифесты ArgoCD и YAML-файлы с секретами.
- Terraform-код инфраструктуры и GitHub Actions, описывающие, как CISA собирает, тестирует и выкатывает свой софт.
- Резервные копии внутренней документации в форматах OneNote и DOCX, плюс скрипты для GitHub, Kubernetes, ArgoCD.
Один из попавших в репозиторий хостов назывался LZ-DSO — по словам исследователей это сокращение от Landing Zone DevSecOps, то есть от среды, в которой CISA «безопасно» собирает свой код. Иронично: ключи от пайплайна, который должен защищать всё остальное, лежали публично.
Это худшая утечка, которую я видел за свою карьеру.
Сначала команда GitGuardian приняла находку за розыгрыш: слишком уж красноречивые названия папок и файлов. Но личные документы, имена хостов и аккуратная структура повторных бэкапов убедили — это рабочая копия чьего-то ноутбука, которую регулярно «синхронизировали» через git push в открытый репозиторий.
Как нашли и сообщили
Согласно подробному разбору GitGuardian, программа Good Samaritan компании первой обнаружила утечку и автоматически отправила девять писем владельцу коммитов. К утру 15 мая в ответ пришли только автоответчики.
Тогда исследователи связались с Брайаном Кребсом, чтобы он передал утечку напрямую своим контактам в CISA. Параллельно подключились партнёры с прямой линией в агентство. Около 16:00 по центральноевропейскому времени удалось дозвониться, а в районе 18:00 по восточному времени США репозиторий стал недоступен. От первого выявленного слива до закрытия прошло чуть больше суток — но создан репозиторий был 13 ноября 2025 года, так что окно для злоумышленника составляло около полугода.
Хронология
- 13 ноября 2025 — создан публичный репозиторий
Private-CISA, первые секреты залиты. - 13 мая 2026 — автоматический сканер GitGuardian Good Samaritan уже успел отправить владельцу репозитория девять писем-предупреждений.
- 14 мая 2026, 16:14 CET — GitGuardian фиксирует инцидент и подаёт его в CERT/CC (координационный центр по реагированию на киберинциденты), параллельно ища личные контакты в CISA.
- 15 мая 2026 — GitGuardian параллельно выходит на Кребса для эскалации через его контакты и на собственных партнёров с прямой линией в агентство; около 16:00 CET до CISA дозваниваются.
- 15 мая, около 18:00 EST — репозиторий удалён.
Почему secret scanning не сработал
GitHub давно предлагает push protection — функцию, которая не даёт залить в публичный репозиторий распознанные секреты вроде токенов AWS, ключей SSH или ключей API. Для бесплатных публичных репозиториев она включена по умолчанию с 2024 года. Но защита от дурака легко выключается одним кликом, и в случае с Private-CISA её действительно отключили — Кребс цитирует исследователей, которые нашли в истории коммитов следы того, что владелец аккаунта вручную убрал блокировку секретов.
Это распространённый паттерн: разработчик сталкивается с блокировкой пуша, не разбирается, почему сработала защита, и снимает её через настройки. Иногда — в личном репозитории «для удобства», иногда — потому что коммит уже содержит что-то более чувствительное, чем тестовый ключ. Результат предсказуем: репозитории, в которых годами лежат «временные» .env-файлы с продакшен-доступами, и автоматические сканеры вроде GitGuardian, TruffleHog или GitHub Secret Scanning, которые рано или поздно их находят.
По версии Gizmodo, сотрудник подрядчика Nightwing использовал GitHub как личную папку «Загрузки»: коммитил файлы с рабочего ноутбука, чтобы открыть их на домашнем компьютере. То же самое многие делают через личную почту, только публичный репозиторий ещё хуже — он проиндексирован поисковиками и сканируется ботами в режиме реального времени.
Кто такая CISA и почему это важно
Особый цинизм истории — в том, кто оказался виновником. CISA (Cybersecurity and Infrastructure Security Agency) — молодое подразделение Министерства внутренней безопасности США, отвечающее за кибербезопасность всех федеральных гражданских сетей. Это именно та организация, которая публикует руководства про «никогда не храните пароли в спредшитах». При этом, по данным TechCrunch, у CISA с 20 января 2025 года нет постоянного директора, агентство потеряло около трети штата после сокращений и отпусков, а ни один временно исполняющий обязанности не был утверждён Сенатом. В таких условиях процессы по контролю подрядчиков и аудиту репозиториев предсказуемо проседают — и тот факт, что утечку у регулятора по кибербезу нашёл частный сканер, а не внутренние инструменты, красноречивее любого внутреннего отчёта.
Что делать в своей команде, чтобы не повторить историю CISA
История CISA читается как готовый чеклист «как не надо». Перевернём его в «как надо» — для команд от стартапа до крупного бизнеса.
- Включите GitHub push protection на уровне организации и запретите её отключать. Owner organization → Security → Secret protection → Push protection: Enabled.
- Запретите коммитеры-индивидуумам быть owner репозиториев в проде. Любой публичный репозиторий компании должен принадлежать организации с настроенными правилами.
- Сканируйте свою историю, а не только новые коммиты. Один раз пропущенный
.envостаётся в Git forever — поможет TruffleHog, GitGuardian, GitHub Advanced Security или встроенныйgit-secrets. - Не используйте Git как файлообменник между домашним и рабочим компьютером. Для этого есть VPN, корпоративный OneDrive, S3-бакет с IAM, в конце концов —
scp. - Включите автоматическую ротацию ключей AWS и сервис-токенов. Даже если они утекут, окно использования закроется через сутки-двое.
- Настройте мониторинг подозрительных вызовов API в облаке. Для AWS — CloudTrail + GuardDuty с алертами на новые регионы, необычные IAM-действия и обращения к AWS API из неизвестных IP. Если ключ всё-таки утёк — вы узнаете об этом по логам, а не из новостей.
- Раз в квартал проводите аудит публичных репозиториев:
gh repo list ORG --visibility publicи быстрая проверка, что там должно лежать публично.
GitHub в своём блоге называет push protection первой линией защиты и приводит цифру: с момента включения по умолчанию на бесплатных публичных репозиториях функция предотвратила сотни тысяч случайных утечек. Эту настройку выключают именно те, кто потом попадает в новости.
Что говорят сами CISA и эксперты
Сводный ответ агентства для Кребса и TechCrunch звучит как стандартная PR-формула. TechCrunch уточняет, что комментарий дал пресс-секретарь CISA Марко ДиСандро:
На данный момент нет признаков того, что в результате инцидента были скомпрометированы чувствительные данные. Мы продолжаем расследование и работаем над дополнительными мерами защиты, чтобы предотвратить повторение подобных случаев в будущем.
Проблема в формулировке «нет признаков»: при шестимесячном окне публичности любые токены стоит считать скомпрометированными по умолчанию. Стандартный план действий — отозвать всё, выпустить новое, проанализировать логи AWS CloudTrail на предмет обращений с этих токенов и опубликовать честный разбор инцидента. До такого разбора инцидента публично CISA пока не дошла, и в TechCrunch агентство не ответило, отозваны ли ключи.
Частые вопросы
Что именно утекло из CISA?
В публичном репозитории Private-CISA хранились административные токены к трём серверам AWS GovCloud, CSV-файл с паролями от десятков внутренних систем CISA в открытом виде, сертификаты Microsoft Entra ID SAML, Kubernetes-конфиги, Terraform-код инфраструктуры и бэкапы внутренней документации — суммарно 844 МБ.
Сколько времени данные были доступны?
Репозиторий создали 13 ноября 2025 года, удалили вечером 15 мая 2026-го. Окно публичности — примерно шесть месяцев, и за это время репозиторий точно успели проиндексировать поисковые системы и автоматические сканеры.
Как утечку нашли?
Сканер GitGuardian Public Monitoring обнаружил подозрительные секреты 13–14 мая 2026 года. Программа Good Samaritan отправила владельцу девять автоматических писем, на которые тот не ответил. Тогда исследователь Гийом Валадон передал инцидент журналисту Брайану Кребсу и через его контакты вышел на CISA напрямую.
Почему GitHub не заблокировал секреты сам?
С 2024 года push protection включён по умолчанию для бесплатных публичных репозиториев и распознаёт типовые токены AWS, GitHub, Google Cloud и другие. Но владелец аккаунта может вручную отключить эту защиту в настройках безопасности. В случае с Private-CISA так и сделали.
Что делать разработчику, чтобы такое не случилось у меня?
Включить GitHub push protection и запретить её отключать на уровне организации, регулярно сканировать историю коммитов на секреты (TruffleHog, GitGuardian, GitHub Advanced Security), настроить автоматическую ротацию ключей и не использовать Git для синхронизации файлов между домашним и рабочим устройством.
Что в итоге
Сюжет «подрядчик слил ключи в публичный git» повторяется в индустрии раз в пару месяцев, но обычно героем оказывается стартап или подрядчик банка. Случай с CISA выделяется тем, что виновником стало именно то агентство, которое выпускает рекомендации по защите от подобных утечек.
Хорошая новость: исследователи и журналисты сработали быстро, а сама CISA закрыла репозиторий за сутки — большинство компаний реагирует месяцами. Плохая: пока агентство не подтвердило ротацию ключей и не опубликовало детальный отчёт, любые токены из этого репозитория стоит считать публичным достоянием.
Для разработчиков вывод предельно практичный: включите push protection, проверьте свои публичные репозитории, не подсовывайте секреты в Git ни на минуту. История CISA — это просто очень громкая иллюстрация того, как один человек, перетаскивающий файлы с ноутбука на ноутбук через git, способен поставить под угрозу целое ведомство.
Источники: Krebs on Security — CISA Admin Leaked AWS GovCloud Keys on Github; GitGuardian Blog — How We Got a CISA GitHub Leak Taken Down in Under a Day; TechCrunch — US cyber agency CISA exposed reams of passwords and cloud keys to the open web; Gizmodo — «The Worst Leak That I've Witnessed».