Скрытые команды в README могут заставить ИИ раскрыть информацию

Разработчики полагаются на ИИ-агентов для настройки проектов, установки зависимостей и выполнения команд, следуя инструкциям в файлах README репозиториев, которые содержат руководства по запуску программных проектов. Новое исследование выявляет угрозу безопасности, когда злоумышленники скрывают вредоносные инструкции в этих документах.

Семантическая инъекционная атака, при которой внедрения встраиваются в файл установки, что приводит к непреднамеренной утечке конфиденциальных локальных файлов.

Тесты показали, что скрытые инструкции в файлах README могут заставить ИИ-агентов отправлять чувствительные данные на внешние серверы вплоть до 85% случаев.

Как работает атака

Файлы README обычно содержат команды для установки зависимостей, запуска скриптов или настройки приложений.

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

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

Тестирование атаки в репозиториях с открытым исходным кодом

Для оценки частоты успеха атаки использовался эталонный набор данных под названием ReadSecBench.

Набор данных включает 500 файлов README, взятых из репозиториев с открытым исходным кодом, написанных на Java, Python, C, C++ и JavaScript. В эти документы были вставлены вредоносные инструкции для моделирования атаки.

Агенты следовали изменённой документации в процессе настройки.

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

В тестах участвовали агенты на основе моделей от нескольких ведущих поставщиков ИИ, включая Claude от Anthropic, модели GPT от OpenAI и Gemini от Google.

Формулировка и структура влияют на результат

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

Менее прямые формулировки снижали вероятность того, что агенты выполнят этот шаг. Инструкции, написанные как предложения, иногда приводили к тому, что агенты пропускали действие.

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

Когда вредоносная инструкция находилась на расстоянии двух переходов от основного файла README, атака оказывалась успешной примерно в 91% тестов.

Человеческие проверщики пропустили скрытые инструкции

Пятнадцать участников изучили файлы README и отмечали всё, что казалось необычным. Каждый участник проверил три документа.

Ни один из участников не выявил вредоносные инструкции.

Среди ответов 53,3% проверок не содержали комментариев, указывающих на необычный контент. Ещё 40% были сосредоточены на грамматике или формулировках в документе. Лишь 6,6% предположили, что что-то может быть неуместным, не идентифицируя конкретную атаку.

Инструменты обнаружения демонстрируют пробелы

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

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

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