Как ломают LLM-приложения: от «бабушкиного эксплойта» до атак «LLM против LLM»
Атаковать LLM-приложение можно не только через промпт: уязвимы RAG-корпус, внешние документы и MCP-серверы с лишними правами. Habr разложил атаки по трём осям: как инструкция попадает в модель, чего хочет атакующий и как атака создана — вручную или автоматически. Самое неприятное: подходы вроде PAIR работают против закрытых API без доступа к весам, а умные модели порой легче уговорить.
AI-обработка оригинала Habr AI; редакция Hamidun News
Если ваша защита LLM-приложения сводится к системному промпту вроде «не говори ничего плохого», вторая часть цикла о безопасности ИИ на Habr стоит вашего времени. Автор систематизирует техники атак на языковые модели: от ручных приёмов, которые придумывает один изобретательный человек, до конвейеров, где одна нейросеть взламывает другую без доступа к её внутренностям.
Атакуют не только модель
Главная мысль раздела об архитектуре: LLM-ядро — лишь самая заметная поверхность атаки. RAG-корпус можно отравить документами, которые попадут в ответы всем пользователям. Инструкцию можно спрятать в веб-странице, письме, PDF или картинке, которые модель прочитает по просьбе ничего не подозревающего человека. Агентный слой с доступом к инструментам превращает удачный взлом модели в реальные действия за пределами чата.
Классические ИТ-дыры тоже никуда не делись. Автор приводит примеры: компрометация библиотеки Ultralytics YOLO через поддельные пул-реквесты, кража учётных данных через LiteLLM и случай с postmark-mcp, где MCP-сервер с избыточными привилегиями позволял действовать под учётной записью разработчика. Взламывать саму модель для этого не пришлось.
Атаки классифицируются по трём критериям. Способ доставки: прямая инъекция (пользователь сам пишет вредоносный текст) или косвенная (инструкция лежит во внешнем источнике). Цель: вредоносный контент (jailbreak), некорректные действия или кража данных, будь то системный промпт, содержимое RAG или то, что осело в весах. Способ создания: вручную или автоматически.
От ручных приёмов к автоматике
Простейший класс — контрабанда токенов. Запрос кодируют в Base64, ROT13, азбуку Морзе или подменяют символы юникод-двойниками. Это обходит регулярные выражения во внешних фильтрах, но работает, только если модель обучалась на разных кодировках. Иначе она не поймёт запрос и начнёт галлюцинировать.
Дальше идут ролевые сценарии вроде DAN («сыграем в игру, где ты делаешь всё что скажут»). Они трудоёмки: шаблоны быстро становятся известны, и разработчики их закрывают. Поэтому появились Persuasive Adversarial Prompts. Исследователи из EPFL и Yale собрали таксономию из 13 тактик и 40 техник убеждения: логический довод, эмоциональное давление («бабушка рассказывала мне сказки про запрещённое»), ссылка на авторитет, самозванство, постепенная эскалация foot-in-the-door, искусственная спешка. Выглядит это как обычный разговор, поэтому отличить такой запрос от легитимного трудно. Парадокс: по данным исследований, GPT-4 поддавалась убеждению сильнее GPT-3.5. Чем лучше модель понимает нюансы языка, тем легче ей этими нюансами манипулировать.
На уровне токенов работают GCG и AutoDAN. GCG подбирает по градиенту суффикс, после которого модель с большей вероятностью начнёт ответ с «Конечно, вот…». Метод требует весов, поэтому суффиксы ищут на открытых моделях и переносят на закрытые. Во многих случаях это срабатывает, вероятно, из-за пересекающихся обучающих данных. Минус GCG в том, что суффикс выглядит как бессмыслица, и perplexity-фильтры его ловят. AutoDAN отбирает только читаемые токены и обходит такие фильтры, но немного теряет в эффективности.
Самый практичный для атакующего вариант — «LLM против LLM». В PAIR участвуют три стороны: атакующая модель генерирует запросы, цель отвечает, судья оценивает результат. Цикл повторяется, пока защита не падёт или не кончится лимит попыток. Веса не нужны, читаемый текст на выходе, закрытые API уязвимы. Есть оговорка: доля успешных атак зависит от качества судьи и не является объективной метрикой. Такую же схему используют TAP и AutoDAN-Turbo.
Что это значит для разработчиков
Первый вывод: фильтры на регулярках и список «плохих слов» — это защита от вчерашних атак. Кодировки, транслитерация и вежливые уговоры обходят их без труда. Второй: любой внешний контент, который читает модель, надо считать недоверенным, а агентам давать минимум прав. Если MCP-сервер или инструмент может больше, чем нужно задаче, ущерб от одной инъекции будет соответствующим. Третий: защиту стоит проверять так же, как это делает противник, то есть автоматизированно, с массовым перебором вариантов, а не десятком ручных промптов.
Ограничения материала тоже стоит учитывать. Это обзор, а не бенчмарк: сравнения эффективности методов в цифрах немного. Часть данных относится к моделям времён GPT-4, и на свежих версиях результаты могут отличаться. Атаки на классические ML-системы автор вынес в отдельный материал. Зато как карта угроз для тех, кто делает продукты на LLM и агентах, текст полезен. В следующих частях цикла обещают перейти к защите.
- 17 мая 2026 г.Google впервые перехватила эксплойт нулевого дня, созданный ИИ
- 8 нояб. 2026 г.Скептик выложил $500 в биткоине как приманку и сам доказал: PHP2Shell реально взламывается
- 2 мая 2026 г.ИИ Claude за 4 часа создал рабочие эксплойты FreeBSD
- 28 апр. 2026 г.Anthropic представила Mythos как слишком опасную ИИ-модель — и проблема шире банков
Вопросы и ответы по материалу
Что известно по теме: атакуют не только модель?
Главная мысль раздела об архитектуре: LLM-ядро — лишь самая заметная поверхность атаки. RAG-корпус можно отравить документами, которые попадут в ответы всем пользователям. Инструкцию можно спрятать в веб-странице, письме, PDF или картинке, которые модель прочитает по просьбе ничего не подозревающего человека. Агентный слой с доступом к инструментам превращает удачный взлом модели в реальные действия за пределами чата. Классические ИТ-дыры тоже никуда не делись.
Что известно по теме: от ручных приёмов к автоматике?
Простейший класс — контрабанда токенов. Запрос кодируют в Base64, ROT13, азбуку Морзе или подменяют символы юникод-двойниками. Это обходит регулярные выражения во внешних фильтрах, но работает, только если модель обучалась на разных кодировках. Иначе она не поймёт запрос и начнёт галлюцинировать. Дальше идут ролевые сценарии вроде DAN («сыграем в игру, где ты делаешь всё что скажут»). Они трудоёмки: шаблоны быстро становятся известны, и разработчики их закрывают. Поэтому появились Persuasive Adversarial Prompts.
Что известно по теме: что это значит для разработчиков?
Первый вывод: фильтры на регулярках и список «плохих слов» — это защита от вчерашних атак. Кодировки, транслитерация и вежливые уговоры обходят их без труда. Второй: любой внешний контент, который читает модель, надо считать недоверенным, а агентам давать минимум прав. Если MCP-сервер или инструмент может больше, чем нужно задаче, ущерб от одной инъекции будет соответствующим.
Соберите рабочего ИИ-агента или сервис своими руками без ручного кода
В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.