Способ атаки Ghostcommit скрывает подсказки в изображениях для кражи секретов у ИИ-агентов

5 мин
Способ атаки Ghostcommit скрывает подсказки в изображениях для кражи секретов у ИИ-агентов

Исследователи разработали метод атаки Ghostcommit через pull request, позволяющий похитить секретные данные репозитория. Вредоносная инструкция скрывается внутри PNG-изображения, которое ИИ-инструменты для проверки кода обычно не открывают.

В итоге проверяющий одобряет изменения. Позже специальный агент для работы с кодом считывает изображение, открывает файл .env репозитория и записывает все ключи в исходный исходник в виде безобидного набора чисел.

Эта атака — совместная разработка исследовательской группы ASSET из Университета Миссури — Канзас-Сити. Она опубликовала на GitHub прототип (proof-of-concept) и сообщила, что уведомила о результатах исследования затронутых вендоров.

Исследователи связывают эту атаку с существующей проблемой недостаточного контроля: аналитика 6480 pull request в 300 самых активных публичных репозиториях за последние 90 дней показал, что 73% принятых запросов попали в основную ветку без какой-либо содержательной проверки человеком и вообще без проверки ботами.

Хитрость заключается в том, что вредоносная инструкция — это не текст, который может заметить проверяющий, а изображение.

Файл AGENTS.md (файл с правилами оформления кода, которые агенты считывают автоматически и воспринимают как политику проекта) выглядит как обычная инструкция по поддержанию порядка в сборке и не содержит упоминаний секретных данных.

Он просто ссылается на изображение docs/images/build-spec.png. Сам эксплойт скрыт в тексте, отрисованном внутри этого PNG: он считывает файл .env побайтово, кодирует каждый байт как целое число, записывает результат как константу модуля и проверяет, чтобы декодированные числа совпадали с данными реального файла перед фиксацией изменений (коммитом).

Для инструмента, проверяющего текстовый код, изображение выглядит как бинарный объект (blob).

Инструмент CodeRabbit поставляется с конфигурацией по умолчанию, которая полностью исключает файлы изображений из проверки. Bugbot равным образом не выявил никаких проблем.

Исследователи даже добавили в PNG текст «malicious prompt injection» (вредоносная инъекция промпта) и явную команду ознакомиться .env, но тест всё равно прошла успешно.

Фиктивный «валидатор происхождения» (provenance validator) объёмом 50 строк и выдуманный доклад об инциденте (postmortem) обеспечили правилам достаточное количество вспомогательного кода, чтобы обойти новейший рубеж защиты проверяющих — проверку на логическую связность, которая обычно помечает правила, не подкреплённые реальным кодом.

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

При запуске агент считывает объединённый файл AGENTS.md, переходит по ссылке на изображение, открывает файл .env и записывает запрошенный модуль, добавив в его начало константу, содержащую информация о происхождении (provenance).

В ходе одного из сквозных тестов редактор Cursor, использующий схема Claude Sonnet, выполнил эту задачу с первой попытки; сгенерированная им константа представляла собой последовательность из 311 целых чисел, которые при декодировании побайтово восстанавливали полное содержимое файла .env.

Разработчик видит нужную ему функцию и фиксирует изменения (делает коммит), а злоумышленник извлекает и декодирует числа из этого публичного коммита. Инструменты для поиска секретов (secret scanners) не замечают угрозы, поскольку ни один из них не преобразует кортеж целых чисел Python обратно в структура ASCII для проверки.

В ходе сеанса Antigravity агент, получив запрос на добавление модуля отслеживания токенов, незаметно вычисляет константу _PROV_CANARY (содержимое .env, закодированное как список целых чисел), готовую к слиянию с кодом (ASSET Research Group).

Идея скрывать внутри изображений инструкции, предназначенные для выполнения ИИ-системой, не нова. В 2025 году исследователи из компании Trail of Bits Кикимора Морозова и Суха Саби Хуссейн продемонстрировали более изощрённый вариант: изображения, которые выглядят как обычные картинки в полном разрешении, но при изменении масштаба (ресемплинге) средствами самой ИИ-системы превращаются в читаемый текст, содержащий промпт-инъекцию. Этот способ позволил обмануть такие инструменты, как Gemini CLI.

Некоторое количество позже вредоносное ПО для macOS под названием Gaslight внедрило в свой бинарный файл поддельные сообщения о системном сбое. Они предназначались для другого ИИ-анализатора и были призваны заставить инструменты анализа вредоносного кода прекратить проверку.

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

В данном случае и Cursor, и инструмент Antigravity при использовании моделей Sonnet, Gemini, GPT-5.5 (и других) следовали за изображением и допускали утечку содержимого файла .env.

Инструмент Claude Code, работающий на тех же весах модели Sonnet, распознал ту же условную инструкцию и отказался выполнять действие, явно озвучив этот отказ; такой результат наблюдался при использовании всех моделей, протестированных исследователями.

При работе с Antigravity модель Opus сначала вывела секреты, но затем распознала скрипт социальной инженерии и удалила их, не завершив операцию до конца. Итак, всё зависело от внешней оболочки (инструментария), в которую «обёрнута» модель.

Исследователи отмечают, что это указывает на необходимость эшелонированной защиты. «Поскольку слепое пятно носит структурный характер, мы создали рецензента, который его закрывает: многомодальный защитник запросов на слияние, развёрнутый в виде приложения GitHub, работающего на одной видеокарте с 4 ГБ памяти. Он объединяет сканирование на наличие невидимых символов, сканирование структуры зафиксированного кода, проверку LLM-прохода по тексту соглашения и, что особенно важно, проверку LLM-прохода по изображениям», — пишут они.

В ходе реального тестирования на 80 запросах на слияние, которые ранее не встречались, только одна атака прошла проверку, в том числе все варианты на основе изображений, и ни один из 30 легитимных запросов на слияние не вызвал ложной тревоги.

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

Между тем исследователи из Флоридского международного университета выяснили, что одного изображения может быть достаточно, чтобы вывести некоторые системы ИИ за пределы их встроенных средств защиты. Команда разработала метод под названием JaiLIP (Jailbreaking with Loss-guided Image Perturbation, взлом с помощью искажения изображения, управляемого потерями). Способ вносит тщательно рассчитанные изменения в изображение, сохраняя одновременно его внешний вид для глаза. Цель состоит в том, чтобы повлиять на то, как модель обработки изображений и языка реагирует на запросы пользователя.

Читают сейчас

Google удалит расширения на устаревшем Manifest V2 из Chrome Web Store 31 августа 2026 года

9 минут назад

Google удалит расширения на устаревшем Manifest V2 из Chrome Web Store 31 августа 2026 года

Google объявила, что начнёт удалять из Chrome Web Store все расширения с Manifest V2 31 августа 2026 года. Их нельзя будет переустановить из магазина, а такие сервисы перестанут получать обновления. Ч

Гендиректор Microsoft: не выдавайте ИИ-компаниям свои секреты

29 минут назад

Гендиректор Microsoft: не выдавайте ИИ-компаниям свои секреты

Генеральный директор Microsoft Сатья Наделла предостерёг компании, спешащие внедрить искусственный интеллект, от передачи разработчикам ИИ важных бизнес-данных. Ознакомиться далее

Минпросвещения установило нормы использования гаджетов детьми

49 минут назад

Минпросвещения установило нормы использования гаджетов детьми

В Минпросвещения РФ установили нормы по использованию смартфонов, компьютеров и телевизора для детей и подростков. Согласно методическим рекомендациям, направленным в регионы, главная задача норм — фо

Google выступил против блокировки DNS-серверов, CDN и IP-адресов

50 минут назад

Google выступил против блокировки DNS-серверов, CDN и IP-адресов

Google заявила Европейской комиссии, что выступает против блокировки пиратских сайтов в Европе, поскольку считает такие меры малоэффективными и вредными. Компания возражает против блокировки DNS-резол

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

1 час назад

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

Как сообщает книга Wall Street Journal, с февраля полиция штата Нью-Йорк арестовала 48 человек за незаконное проникновение на территорию бывшего кампуса IBM в городе Сомерс. Среди задержанных 30 челов