ИИ-программисты и утечки ключей: риски вайб-кодинга и защита секретов

ИИ-программисты сливают корпоративные ключи: новая угроза от нейросетевого кодинга

ИИ-программисты сливают корпоративные ключи: новая угроза от нейросетевого кодинга

ИИ-помощники ускоряют разработку, но вместе с кодом в репозиторий могут попасть API-ключи, токены и пароли. Разбираем, почему при вайб-кодинге растёт риск утечек и как его снизить с помощью управления секретами, контроля публикаций и ограничения доступа ИИ.

 

 

 

 

 

 

  1. 1. Введение
  2. 2. Как секреты попадают в код при работе с ИИ
  3. 3. Меры по снижению риска утечки секретов при разработке с использованием ИИ
    1. 3.1. Централизованное управление секретами
    2. 3.2. Внедрение контроля публикации кода
  4. 4. Выводы

Введение

Вайб-кодинг — практика быстрой разработки программного обеспечения с использованием ИИ-инструментов. Вместе с ростом её популярности увеличивается число случаев, когда в коде, созданном с участием ИИ, обнаруживаются корпоративные секреты.

По данным исследования GitGuardian State of Secrets Sprawl 2026, пароли, ключи и токены для подключения к различным сервисам обнаруживались в 3,2% изменений кода с участием Claude Code, тогда как общий показатель для публичных изменений (в том числе внесённых программистами-людьми) на площадке для совместной разработки и хранения кода GitHub составлял 1,5%. Таким образом, доля изменений кода с обнаруженными секретами при использовании ИИ-инструментов оказалась более чем в два раза выше среднего показателя. 

Основные типы корпоративных секретов и источники их утечки:

  • API-ключи и токены — цифровые пропуска, с помощью которых программы взаимодействуют с облачными сервисами, базами данных и другими ресурсами. Их обладатель получает доступ к соответствующим сервисам в пределах выданных разрешений.
  • Hardcoded secrets — пароли и ключи, записанные непосредственно в тексте программы или её настройках, то есть доступ к ресурсу оказывается неотделим от самого кода.
  • Файлы настроек и история изменений в хранилище кода — источники утечки, при которых секрет может оставаться в конфигурации или в истории коммитов даже после его удаления из текущей версии файла.

Сами по себе такие секреты не всегда появляются в коде по вине ИИ: разработчики оставляли ключи и пароли в репозиториях и раньше. Однако генеративные инструменты меняют масштаб проблемы — они ускоряют создание и изменение кода, а вместе с этим увеличивают число потенциальных точек, где чувствительные данные могут оказаться в открытом доступе.

Как секреты попадают в код при работе с ИИ

Типичный сценарий утечки выглядит следующим образом: разработчик передаёт ИИ-инструменту рабочий ключ для проверки подключения к сервису. Файл с этим ключом попадает в общую папку проекта и публикуется вместе с кодом. Дополнительный риск связан с тем, что некоторые ИИ-помощники используют не только текст запроса, но и окружающий код, включая фрагменты открытых файлов, — это может привести к попаданию секрета в контекст запроса даже без явного упоминания. 

Таким образом, одновременно возникают два риска: передача секрета ИИ-сервису и публикация секрета в репозитории. Рабочий ключ не следует передавать в запросе или примере для ИИ ради удобства.

Поскольку вайб-кодинг ускоряет разработку и подключение новых сервисов, он обостряет существующую проблему публикации секретов в коде. Каждое новое подключение добавляет ключ, который необходимо контролировать. Отдельно отметим, что ряд популярных инструкций по настройке ИИ-ассистентов рекомендует размещать API-ключи в конфигурационных файлах, аргументах командной строки и строках подключения, что противоречит принципам кибербезопасности.

Действующий ключ предоставляет доступ к данным или операциям в пределах прав, разрешённых программе; масштаб последствий утечки определяется объёмом этих прав.

Использование закрытого репозитория не решает проблему полностью: секреты остаются доступны его легитимным пользователям, которые могут случайно передать их вовне. Ключи также нередко попадают в рабочие чаты и системы постановки задач — с аналогичными последствиями. Удаление строки с секретом из файла не отключает сам доступ: копия может сохраниться в истории проекта, поэтому раскрытый ключ необходимо отозвать или заменить.

Проблема секретов в коде не ограничивается отдельным продуктом или командой — она связана с тем, как компания в целом создаёт, передаёт и хранит доступы.

Меры по снижению риска утечки секретов при разработке с использованием ИИ

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

Централизованное управление секретами 

Для решения этой задачи в отрасли применяются два взаимодополняющих класса решений:

  1. Парольные сейфы (enterprise password manager) предназначены для пользователей и команд. Обеспечивают централизованное зашифрованное хранение учётных данных, разграничение доступа по ролям и журналирование действий.
  2. Хранилища ИТ-секретов (secrets management) предназначены для машинных сценариев: DevOps-конвейеров и ИИ-инструментов. Реализуют тот же принцип централизации, но секрет выдаётся программе или пайплайну по заданной политике, под конкретную задачу, с автоматической ротацией и отзывом.

Именно второй класс решений закрывает описанный выше сценарий: секрет хранится в защищённом хранилище, а не передаётся через диалог с ИИ или через конфигурационный файл, попадающий в публичный репозиторий. Источником рабочего секрета становится управляемое хранилище, а не сообщение, ответ нейросети или скопированный конфигурационный файл.

На практике применяются два дополняющих друг друга подхода.

Первый подход (характерен для облачных сервисов и CI/CD): секрет не хранится постоянно, а выдаётся на время выполнения задачи. 

  1. В коде указывается способ получения доступа без указания самого значения (ключа, пароля, токена). Например, GitHub Actions поддерживает получение краткосрочного облачного доступа через OIDC — механизм подтверждения подлинности программы.[2] Это исключает необходимость хранить постоянный облачный ключ в настройках сборки.
  2. При запуске система сборки подтверждает свою подлинность и назначение с помощью полученного значения. Автоматическое предоставление доступа ко всем корпоративным ключам не допускается — для каждой задачи должны использоваться минимальные полномочия.
  3. Облачный провайдер предоставляет только тот доступ, который разрешён политикой для конкретного задания.
  4. Срок действия доступа ограничен, и по его истечении доступ автоматически прекращается.

Второй подход (характерен для корпоративных хранилищ ИТ-секретов): Секрет хранится в зашифрованном виде в защищённом хранилище и выдаётся по API под конкретную задачу — с ограничением по времени, минимальными правами и полным журналом обращений. Несмотря на различие механизмов, оба подхода преследуют одну цель: исключить появление рабочего ключа в открытом виде — в переписке, конфигурационном файле или диалоге с ИИ-инструментом.

Внедрение контроля публикации кода

Дополнительной мерой является проверка кода на наличие секретов и блокировка публикаций, содержащих обнаруженные ключи. Например, GitHub поддерживает такую проверку с помощью функции Push Protection, которая автоматически проверяет изменения на наличие API-ключей, токенов и других учётных данных перед их публикацией в репозитории. При обнаружении потенциального секрета система блокирует отправку, указывает разработчику причину и предлагает удалить конфиденциальные данные, после чего публикацию можно повторить. 

Блокировку можно обойти с указанием причины, однако для корпоративных репозиториев такие случаи фиксируются в журнале аудита и сопровождаются уведомлением ответственных сотрудников. Также поддерживается настройка собственных шаблонов для поиска внутренних ключей нестандартного формата.

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

Выводы

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

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

Если секрет уже был опубликован или передан внешнему сервису, простого удаления строки недостаточно. Ключ необходимо отозвать и заменить, проверить журналы его использования и при необходимости очистить историю репозитория. Цель таких мер — не ограничить применение ИИ, а встроить его в процесс разработки так, чтобы ускорение работы не происходило за счёт безопасности.

Полезные ссылки: 
Подпишитесь на новости

RSS: Новые статьи на Anti-Malware.ru