PNG-атаки обходят ИИ-ревью GitHub и крадут секреты
Исследователи обнаружили изощрённый вектор атаки на цепочки поставок открытого кода, использующий фундаментальные ограничения как человеческого, так и автоматизированного ИИ-ревью. Новый метод эксплуатирует доверие к, казалось бы, безобидным графическим файлам, прикреплённым к pull request’ам. В то время как отрасль активно внедряет LLM-рецензентов для фильтрации вредоносного кода, злоумышленники нашли способ превратить слепую зону таких систем в идеальный канал доставки полезной нагрузки.
Иллюзия проверки: 73% pull request’ов сливают без ревью
Отправной точкой исследования стал масштабный анализ реальных рабочих процессов на GitHub. Авторы отчета проанализировали поток pull request’ов в активные публичные репозитории и выявили тревожную статистику:
- 73% всех запросов на слияние были приняты и объединены без содержательной проверки — ни человеком, ни автоматизированным ботом.
- Это формирует идеальную среду для эксплуатации: вредоносный код может миновать любые барьеры, если он просто не попадает в поле зрения рецензента.
Такая апатия к проверке делает атаки через pull request особенно опасными, и авторы исследования показывают, как усыпить даже тех «стражей», которые всё же настроены на анализ.
PNG вместо текста: как обмануть Bugbot и CodeRabbit
Классический подход — встраивание вредоносных инструкций непосредственно в тело pull request’а — быстро детектируется современными LLM-рецензентами. Они генерируют предупреждения высокой степени серьёзности, привлекая внимание мейнтейнеров. Чтобы обойти этот рубеж, злоумышленники использовали стеганографический приём, но не в привычном смысле скрытия данных в пикселях, а в виде игнорируемого контейнера.
Метод атаки выглядит следующим образом:
- Сокрытие: вредоносные инструкции размещаются внутри PNG-изображения, которое прикрепляется к pull request’у.
- Слепая зона ИИ: такие ИИ-ревьюеры кода, как Bugbot и CodeRabbit, по умолчанию исключают файлы изображений из области анализа. Они не генерируют никаких предупреждений, поскольку попросту не заглядывают внутрь PNG.
- Обход проверок целостности: для успешного слияния злоумышленник создавал сценарий с поддельной информацией о происхождении файла, что позволяло обойти все требуемые проверки на согласованность.
В результате запрос на слияние бесшумно принимается, и вредоносный код остаётся в репозитории, дожидаясь своего часа.
Спящий режим и кража секретов через код-агентов
Внедрённый полезный груз не активируется немедленно. Он остаётся в спящем режиме до тех пор, пока разработчик не откроет проект в своей среде программирования и не инициирует взаимодействие кодового агента с заражённым PNG-файлом. Именно в этот момент разворачивается основная фаза атаки.
Когда инструмент на базе ИИ, выступающий в роли кодового агента, обрабатывает файл, он извлекает конфиденциальную информацию — например, секреты из .env-файла. Чтобы избежать детектирования стандартными сканерами секретов, украденные данные выводятся не в виде привычных строк, а как tuple of integers. Поскольку обычные secret scanners не имеют функциональности для декодирования последовательности целых чисел обратно в формат ASCII, тревога не срабатывает. Данные покидают среду разработки без каких-либо сигналов о компрометации.
Модель — не главное: ключевая роль tooling
Один из важнейших выводов отчёта заключается в том, что успех эксплуатации слабо коррелирует с «интеллектом» базовой модели ИИ и критически зависит от её инструментальной обвязки. Исследователи подчёркивают:
«Одна и та же модель демонстрирует диаметрально противоположные результаты в разных средах — tooling вокруг ИИ играет ключевую роль в итоговых последствиях для безопасности».
В одних конфигурациях среда отказывалась взаимодействовать с подозрительным файлом, блокируя атаку. В других, напротив, агент послушно выполнял вредоносные инструкции. Это выявляет тонкие и до сих пор плохо изученные границы безопасности, заложенные архитектурными решениями самих инструментов разработки.
Мультимодальный защитник: комплексный анализ pull request’ов
Для противодействия описанной угрозе авторы предлагают внедрение multimodal defender pull requests — системы, которая анализирует не только исходный код, но и все связанные с запросом изображения. Предложенный подход объединяет несколько эшелонов проверки:
- сканирование на наличие невидимых символов и манипуляций с метаданными;
- анализ текстовых и структурных элементов внутри файлов;
- перекрёстную корреляцию между визуальным и кодовым контекстом запроса.
Тестирование прототипа на наборе намеренных атак, имитирующих описанную технику, показало высокую эффективность: защитник безошибочно выявлял попытки сокрытия вредоносной логики, при этом не генерируя ложных срабатываний на безобидных pull request’ах. Исследование доказывает, что эволюция процессов рецензирования в средах совместной работы с кодом должна обязательно учитывать мультимодальные векторы атак, которые долгое время оставались вне периметра контроля.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



