Почему обычные сканеры утечек не замечают такую кражу данных.
<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:1200/675;margin-bottom:2rem;overflow:hidden">
Вредоносный запрос на изменение кода может пройти проверку без единого замечания, а спустя несколько дней заставить ИИ-помощника незаметно вынести секреты проекта . Для атаки достаточно спрятать инструкцию внутри обычного PNG-файла, который системы проверки кода даже не открывают.
Специалисты группы ASSET при Университете Миссури в Канзас-Сити назвали такой способ GhostCommit. Они опубликовали рабочий пример атаки и заранее уведомили разработчиков затронутых инструментов.
Атака проходит в два этапа. Сначала злоумышленник отправляет запрос на изменение репозитория и добавляет файл AGENTS.md с правилами для ИИ-помощников. Сам файл выглядит безобидно и лишь ссылается на изображение docs/images/build-spec.png . Внутри картинки предлагается прочитать файл .env, преобразовать каждый байт в число и записать получившуюся последовательность в исходный код.
Системы CodeRabbit и Bugbot не нашли проблему. CodeRabbit по умолчанию исключает изображения из проверки, поэтому PNG воспринимается как обычный двоичный файл. Даже надписи «malicious prompt injection» и прямое требование прочитать .env не вызвали предупреждения.
После того как изменения сливаются в проект, вредоносная инструкция остаётся в коде и ждёт подходящего момента. Когда разработчик просит ИИ-помощника создать обычный модуль, агент читает AGENTS.md, открывает указанную картинку и выполняет спрятанные команды. В одном из испытаний Cursor с Claude Sonnet записал содержимое .env в виде 311 целых чисел. После обратного преобразования последовательность полностью совпала с исходным файлом.
Разработчик видит запрошенную функцию и может отправить код в общий репозиторий. Злоумышленнику остаётся скачать открытую версию файла и преобразовать числа обратно в текст. Обычные средства поиска утечек не замечают проблему, поскольку не считают кортеж или список чисел учётными данными.
Авторы GhostCommit также проверили, насколько результат зависит от выбранной модели. Cursor и Antigravity раскрывали содержимое .env при работе с Sonnet, Gemini и GPT-5.5. Claude Code с теми же моделями отказывался выполнять команду. В одном случае Opus сначала записал секрет, затем распознал обман и удалил данные. Результат сильнее зависел от среды запуска агента, чем от самой языковой модели.
Проблему усиливает слабая проверка изменений в популярных проектах. Изучив 6480 запросов на изменение в 300 активных открытых репозиториях, специалисты установили , что 73% принятых изменений попали в основную ветку без содержательной проверки со стороны человека или автоматической системы.
Чтобы защититься, специалисты создали многорежимный проверяющий модуль для GitHub , который анализирует не только текст и код, но и изображения. При тестировании на 80 ранее неизвестных запросах он пропустил одну атаку, обнаружил все варианты, скрывающие инструкции в картинках, и не выдал ложных предупреждений по 30 безопасным изменениям. Дополнительно защитить систему может контроль над действиями ИИ-агента, в том числе над попытками спрятать инструкцию и открыть файлы с учётными данными без явной причины.
<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:1200/675;margin-bottom:2rem;overflow:hidden">
Вредоносный запрос на изменение кода может пройти проверку без единого замечания, а спустя несколько дней заставить ИИ-помощника незаметно вынести секреты проекта . Для атаки достаточно спрятать инструкцию внутри обычного PNG-файла, который системы проверки кода даже не открывают.
Специалисты группы ASSET при Университете Миссури в Канзас-Сити назвали такой способ GhostCommit. Они опубликовали рабочий пример атаки и заранее уведомили разработчиков затронутых инструментов.
Атака проходит в два этапа. Сначала злоумышленник отправляет запрос на изменение репозитория и добавляет файл AGENTS.md с правилами для ИИ-помощников. Сам файл выглядит безобидно и лишь ссылается на изображение docs/images/build-spec.png . Внутри картинки предлагается прочитать файл .env, преобразовать каждый байт в число и записать получившуюся последовательность в исходный код.
Системы CodeRabbit и Bugbot не нашли проблему. CodeRabbit по умолчанию исключает изображения из проверки, поэтому PNG воспринимается как обычный двоичный файл. Даже надписи «malicious prompt injection» и прямое требование прочитать .env не вызвали предупреждения.
После того как изменения сливаются в проект, вредоносная инструкция остаётся в коде и ждёт подходящего момента. Когда разработчик просит ИИ-помощника создать обычный модуль, агент читает AGENTS.md, открывает указанную картинку и выполняет спрятанные команды. В одном из испытаний Cursor с Claude Sonnet записал содержимое .env в виде 311 целых чисел. После обратного преобразования последовательность полностью совпала с исходным файлом.
Разработчик видит запрошенную функцию и может отправить код в общий репозиторий. Злоумышленнику остаётся скачать открытую версию файла и преобразовать числа обратно в текст. Обычные средства поиска утечек не замечают проблему, поскольку не считают кортеж или список чисел учётными данными.
Авторы GhostCommit также проверили, насколько результат зависит от выбранной модели. Cursor и Antigravity раскрывали содержимое .env при работе с Sonnet, Gemini и GPT-5.5. Claude Code с теми же моделями отказывался выполнять команду. В одном случае Opus сначала записал секрет, затем распознал обман и удалил данные. Результат сильнее зависел от среды запуска агента, чем от самой языковой модели.
Проблему усиливает слабая проверка изменений в популярных проектах. Изучив 6480 запросов на изменение в 300 активных открытых репозиториях, специалисты установили , что 73% принятых изменений попали в основную ветку без содержательной проверки со стороны человека или автоматической системы.
Чтобы защититься, специалисты создали многорежимный проверяющий модуль для GitHub , который анализирует не только текст и код, но и изображения. При тестировании на 80 ранее неизвестных запросах он пропустил одну атаку, обнаружил все варианты, скрывающие инструкции в картинках, и не выдал ложных предупреждений по 30 безопасным изменениям. Дополнительно защитить систему может контроль над действиями ИИ-агента, в том числе над попытками спрятать инструкцию и открыть файлы с учётными данными без явной причины.
- Источник новости
- www.securitylab.ru