844 МБ инфраструктурных данных американского агентства CISA шесть месяцев лежали в публичном GitHub-репозитории. Утечка секретов CISA выглядит особенно неприятно не потому, что ошибся очередной подрядчик, а потому, что речь идет о ведомстве, которое должно учить других не хранить пароли в CSV и не коммитить бэкапы с ключами в Git.
Проблему 14 мая обнаружил исследователь GitGuardian Гийом Валадон, сообщает The Register. По его словам, публичный репозиторий назывался Private-CISA, а внутри лежали plain-text пароли, приватные ключи, токены и другие секреты с настолько прямолинейными именами файлов, что сначала это выглядело как розыгрыш: external-secret-repo-creds.yaml, AWS-Workspace-Firefox-Passwords.csv, Important AWS Tokens.txt, Kube-Config.txt. Уже на следующий день, 15 мая, после уведомления CISA репозиторий был удален.
Судя по описанию Валадона, это была не одна случайно засвеченная учетная запись, а полный набор для захода в производственную инфраструктуру. Среди утекших данных он перечислил токены к внутреннему JFrog Artifactory CISA, ключи Azure Registry, учетные данные AWS, Kubernetes-манифесты, файлы приложений ArgoCD, Terraform-код инфраструктуры, GitHub personal access tokens и SAML-сертификаты Entra ID. Иными словами, утечка затронула сразу несколько слоев современного стека: артефакты, облако, Kubernetes, GitOps и IaC. Для атакующего это не просто набор секретов, а карта местности плюс ключи от нескольких дверей сразу.
Дополнительный штрих, который делает историю еще менее уютной: по словам исследователя, в репозитории были не только секреты, но и бэкапы, закоммиченные в Git, а также явная инструкция по отключению secret scanning в GitHub. Валадон назвал содержимое репозитория «каталогом небезопасных практик». Это важная деталь, потому что проблема здесь не сводится к одному промаху конкретного сотрудника. Когда в одном месте сходятся plain-text пароли, резервные копии, Terraform, Kubernetes и отключенный автоматический контроль утечек, речь уже о системной деградации инженерной дисциплины.
CISA официально подтвердила, что знает об инциденте и продолжает расследование. Представитель агентства заявил The Register, что пока нет признаков компрометации чувствительных данных в результате этого инцидента. Это аккуратная формулировка, но не особенно успокаивающая. Отсутствие признаков злоупотребления не означает, что секреты никто не успел забрать. Сам Валадон говорит, что GitGuardian не видела признаков несанкционированного использования утекших учетных данных, а среди публичных событий GitHub не было форков репозитория. Но и он же оговаривается: окончательно ответить, кто успел посмотреть содержимое, может только сама GitHub.
Для CISA эта история болезненна еще и политически. По данным The Register, агентство остается без постоянного руководителя с момента возвращения Дональда Трампа в Белый дом, одновременно сталкивается с сокращением бюджета на сотни миллионов долларов и уже пережило урезание штата и финансирования годом ранее. Само по себе это не объясняет, почему кто-то создает репозиторий с названием Private-CISA в публичном GitHub и складывает туда чувствительные файлы, но хорошо показывает фон: даже организации, которые формально отвечают за киберзащиту страны, не застрахованы от банального распада процессов, если накапливаются кадровые, организационные и контрольные проблемы.
Есть и еще один неприятный сигнал для тех, кто строит процессы в разработке и эксплуатации. Валадон обратил внимание, что коммиты в репозитории были сделаны и с подрядного e-mail, выданного CISA, и с личного адреса Yahoo, а сам репозиторий был создан на персональном GitHub-аккаунте. Такая смешанная идентичность, когда служебные задачи живут в личных учетках и пересекаются с подрядным доступом, для служб безопасности действительно один из самых сложных сценариев. Формально у вас могут быть SSO, DLP, правила по секретам и обязательный CI-контроль, но как только часть работы уезжает в персональные аккаунты, периметр резко теряет четкость.
Именно поэтому утечка секретов CISA важна не только как история про неловкость американского ведомства. Для российских команд, особенно тех, кто живет на GitOps, Kubernetes и Terraform, это хороший холодный душ. Секреты в YAML, браузерные CSV с паролями, токены в текстовых файлах и архивные папки вроде All Backups не появляются из воздуха. Обычно это результат знакомого набора компромиссов: надо срочно передать доступ, потом разберемся; надо выгрузить бэкап для миграции; надо временно отключить проверку, потому что мешает релизу. По отдельности такие решения часто выглядят как бытовая инженерная суета. В сумме они превращаются в инфраструктуру, которую можно не столько взломать, сколько просто открыть и внимательно прочитать.
Отдельно показательно, что на исправление ушел всего один день после эскалации через журналиста Брайана Кребса, хотя первоначальное обращение через CERT/CC дало лишь автоматическое подтверждение. Это снова вопрос не технологии, а маршрутизации инцидента. Можно сколько угодно инвестировать в secret scanning и CSPM, но если критическое уведомление идет по бюрократической трубе до понедельника, окно риска начинает измеряться не минутами, а сутками. В случае с CISA это окно длилось не сутки, а примерно полгода.
Главный вывод здесь неприятно приземленный: зрелость DevSecOps по-прежнему ломается не на экзотических zero-day, а на вещах, которые любой тимлид или SRE узнает с первого взгляда. Если даже у CISA нашелся публичный репозиторий с Terraform, Kubernetes и файлами вроде AWS-Workspace-Firefox-Passwords.csv, то вопрос уже не в том, бывают ли такие утечки, а в том, сколько еще компаний уверены, что у них такого точно нет, просто потому что никто пока не заглянул в их «временный» репозиторий.