
Исследователи из Mozilla Zero Day Investigative Network (0DIN) продемонстрировали атаку, в которой ИИ-агент для кодинга Claude Code сам запускает вредоносный код — хотя в репозитории нет ни одной вредоносной строки. Это не эксплуатация уязвимости в привычном смысле: ни zero-day, ни обхода аутентификации. Атакующие используют саму логику агента — его привычку, наткнувшись на ошибку, тут же пытаться ее починить.
Достаточно попросить агента развернуть проект из на вид чистого репозитория, и срабатывает цепочка из трех безобидных по отдельности звеньев:
-
в репозитории лежит Python-пакет, который при установке специально падает с ошибкой и подсказывает выполнить команду инициализации (что-то вроде python3 -m axiom init);
-
агент воспринимает это как штатную проблему первого запуска, сам выполняет подсказанную команду, а та дергает скрипт;
-
скрипт читает не URL, который можно просканировать, а DNS TXT-запись на стороне атакующего, получает оттуда строку в base64 и исполняет ее.
Вредоноса в репозитории нет — он подгружается только в момент запуска. Поэтому статические сканеры, SAST и SBOM ничего не находят, а саму нагрузку можно подменять прямо в DNS-записи, не делая ни одного коммита. На выходе атакующий получает reverse shell с правами самого разработчика: доступ к API-ключам, переменным окружения, локальным конфигам и возможность закрепиться в системе. И агент, и человек при этом видят лишь сообщение вроде «окружение готово». «Claude Code не решал открывать шелл. Он решал починить ошибку», — формулируют в 0DIN; обратный шелл оказывается в трех шагах от всего, что агент реально проверял.
Пока это proof-of-concept, в реальных атаках техника не замечена. Но раздавать такие репозитории несложно — через фейковые тестовые задания при найме, обучающие проекты, статьи в блогах или просто личным сообщением разработчику. И это уже не единичный трюк: пару недель назад был похожий по духу случай с репозиториями Microsoft, где вредонос срабатывал при открытии папки в ИИ-агентах — правда, через конфиг-файлы, а не через DNS. Общий принцип один: мишенью становится готовность агента действовать самостоятельно.
Проблема не только в Claude Code — в той или иной форме ей подвержены Cursor, GitHub Copilot и Gemini CLI, поскольку все они одинаково охотно выполняют шаги по настройке проекта. 0DIN советует разработчикам не доверять незнакомому проекту как проверенному коду и перепроверять команды, которые предлагает агент, а создателям агентов — показывать пользователю всю цепочку выполняемых действий, включая то, что подгружается в рантайме. Тогда DNS-нагрузка всплыла бы до запуска, а не после.
P.S. Поддержать меня можно подпиской на канал «сбежавшая нейросеть», где я рассказываю про ИИ с творческой стороны.
ссылка на оригинал статьи https://habr.com/ru/articles/1053666/