GitHub позволяет организациям устанавливать GitHub Apps, которые автоматизируют и расширяют определенные функции платформы, а также имеют доступ к выбранным репозиториям и разрешениям. Однако закрытые ключи, которые эти приложения используют для аутентификации, могут оставаться действительными годами, если их не отозвать вручную.
По словам GitGuardian, которая обнаружила 474 действительных закрытых ключа GitHub App среди 4802 публично раскрытых ключей, собранных с 2019 года, в случае утечки эти ключи могут предоставить злоумышленникам административный контроль над учетной записью организации в GitHub.
При проверке ключей на действительность удалось также определить, какие права доступа они предоставляют. Было установлено, что «72% скомпрометированных приложений могли читать содержимое частных репозиториев, а 207 — записывать в них, превращая один утекший ключ в захват организации», — заявил исследователь GitGuardian Гаэтан Ферри в своем блоге.
Среди затронутых утечкой ключей GitHub Apps было приложение «Access Tokens for GitHub Actions», используемое для управления доступом к рабочим процессам GitHub Actions. Его закрытый ключ был раскрыт в январе 2024 года после случайного внесения в репозиторий, что потенциально затронуло 300 организаций, где было установлено приложение, включая Civica и Sierra Nevada Corp.
BuildBuddy, Crusher.dev и частное приложение, связанное с Центрами по контролю и профилактике заболеваний США, также оказались среди GitHub Apps, для которых GitGuardian обнаружил раскрытые ключи.
Агнидипта Саркар, главный евангелист поставщика программного обеспечения для безопасности ColorTokens, заявил, что первоначальное злоупотребление «тривиально просто» и злоумышленник может добиться этого с помощью действительного закрытого ключа и соответствующего идентификатора приложения. Для максимального эффекта, по его словам, злоумышленники могут использовать злонамеренный код, «внедряя вредоносный код в репозиторий, и когда код будет собран или развернут, он может скомпрометировать нижестоящих пользователей или производственные среды».
Злоумышленник также может иметь возможность изменять конфигурации CI/CD-раннеров для выполнения произвольного кода во внутренней сетевой инфраструктуре организации, добавил Саркар.
GitGuardian сообщил, что уведомил всех владельцев затронутых приложений об утечке ключей и отметил, что его собственный сервис сканирования секретов использует GitHub App для мониторинга репозиториев на предмет утечки учетных данных.
Утекшие ключи имели разный уровень доступа
Когда организация устанавливает GitHub App, она решает, к каким репозиториям приложение может получить доступ и что оно может там делать. GitGuardian обнаружил, что 40 затронутых приложений могли управлять саморазмещенными раннерами, 98 — контролировать рабочие процессы, а 44 имели привилегии администратора организации.
Для приложений с привилегиями администратора организации «злоумышленник мог добавить себя в качестве владельца, заблокировать законных администраторов и полностью захватить организацию GitHub», — сказал Саркар.
Одно из раскрытых приложений имело 303 установки, некоторые не имели ни одной, а 59% из них имели только одну установку, что указывает на частное использование.
Комментируя эти внутренние приложения с одной установкой, Ферри сказал: «Это внутренняя автоматизация, CI-боты и разовые инструменты, о которых легко забыть, даже если они больше не используются». Такие приложения могут продолжать работать, а ключи — действовать неопределенно долго, и никто этого не заметит.
GitGuardian также обнаружил 156 случаев, когда утекший закрытый ключ появлялся в несвязанном репозитории, что затрудняло его сопоставление с GitHub App, которому он принадлежал.
«Радиус поражения не ограничивается владельцем приложения», — сказал Ферри. «Он распространяется на каждую организацию, установившую приложение, и через зависимости цепочки поставок — на каждого нижестоящего пользователя кода, к которому прикасается это приложение».
Ротация ключей — единственный выход
Несмотря на то, что GitHub предупреждает в своей официальной документации, что закрытые ключи не истекают автоматически и должны быть отозваны или удалены вручную, организации могут этого не делать из-за ошибочных предположений о безопасности их работы.
Закрытые ключи генерируются в конфигурации приложения и используются для подписи краткосрочного JSON Web Token (JWT), который GitHub принимает и выдает токен доступа к установке. Токен установки содержит разрешения, предоставленные приложению при его установке организацией.
JWT истекает в течение нескольких минут, а токены установки действительны только в течение часа, что делает окно для злоупотреблений очень коротким и создает впечатление ограниченного риска при потере контроля над ключом.
Однако любой, кто владеет закрытым ключом, может генерировать бесчисленное количество JWT и аутентифицироваться как GitHub App, получая от GitHub новые токены установки до тех пор, пока закрытый ключ остается действительным.
«Это, возможно, преднамеренный компромисс, а не упущение», — сказал Саркар, комментируя реализацию краткосрочных токенов наряду с постоянным ключом. «Так традиционно работает аутентификация между машинами, и это предотвращает неожиданные простои». Дизайн «навсегда» отдает приоритет операционной простоте и непрерывности; бремя безопасности ротации полностью ложится на владельцев приложений, добавил он.
GitGuardian рекомендует регулярно ротировать или отзывать закрытые ключи, поскольку они могут пережить как людей, которые их создали, так и причину, по которой они это сделали, сказал Ферри. «Ключ, случайно внесенный в 2020 году, все еще может аутентифицироваться сегодня, задолго после того, как об ошибке забыли», — сказал он.
Саркар отметил, что ручное отзывание происходит крайне редко и почти всегда является реактивным. «Большинство руководств по управлению ИТ-сервисами упоминают о его необходимости, но редко демонстрируют его, если только этого не требует инцидент безопасности, аудит или конкретное изменение», — пояснил он.
Эта статья впервые появилась на InfoWorld.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Shweta Sharma




