Архитектура компрометации систем на базе языковых моделей
Дисклеймер
Материал предназначен для специалистов по информационной безопасности, системных администраторов и разработчиков. Рассматриваются исключительно технологии и методики — принципы работы, архитектура, способы обнаружения и нейтрализации угроз. Статья носит образовательный характер, не содержит инструкций по созданию или распространению вредоносного ПО и не призывает к нарушению законодательства РФ. Ответственность за применение описанных методов лежит на читателе в рамках действующего законодательства.
Разработчики часто воспринимают большие языковые модели как изолированные вычислительные узлы, которые достаточно обернуть в REST API и прикрыть базовым WAF. Подобный подход формирует опасную иллюзию. Механизмы выравнивания отвечают за вежливость и отказ генерировать токсичный контент, но они не имеют ничего общего с кибербезопасностью. Граница между пользовательским вводом и системным выполнением в архитектуре AI-приложений размывается полностью. Алгоритм физически не различает инструкции от создателя и данные из внешнего мира.
Эволюция инъекций: от простых триггеров до манипуляции контекстом
Прямые промпт-инъекции вроде просьб проигнорировать предыдущие инструкции давно мертвы. Современные системы предобработки и классификаторы на базе мелких моделей, такие как Llama-Guard, отлавливают такие попытки на лету. Настоящая угроза сместилась в область косвенных инъекций и манипуляции контекстом в RAG-архитектурах.
Когда модель получает документ из векторной базы данных, она считает его частью своего контекстного окна. Злоумышленник может внедрить скрытую инструкцию прямо в корпоративную Wiki или Confluence. Исследования Simon Willison и работы в рамках OWASP LLM Top 10 подробно описывают, как текст, оформленный как HTML-комментарий или скрытый белым шрифтом на белом фоне, успешно токенизируется и выполняется.
На практике мы сталкивались с ситуацией, когда в легитимный PDF-документ внедрялся невидимый слой с текстом, использующим символы двунаправленного письма. Стандартные регулярные выражения на стороне приложения видели бессмысленный набор артефактов форматирования. Токенизатор модели, поддерживающий многоязычность, корректно собирал из этих символов команду на переопределение роли. Защита от подобных векторов требует не просто фильтрации ввода, а строгого разделения контекста на уровне самого фреймворка через использование специальных тегов разграничения в форматах вроде ChatML.
Цепочка поставок: бэкдоры в весах и проблема десериализации
Компрометация часто происходит задолго до того, как модель попадет в продакшен. Индустрия массово перешла с формата pickle на safetensors именно из-за уязвимостей десериализации, позволявших выполнить произвольный код еще на этапе загрузки весов в память. Однако переход на безопасный формат не решил проблему логического отравления.
Особую опасность представляют адаптеры низкого ранга. Математически адаптер низкого ранга не переключает вектор внимания, как иногда утверждают поверхностные обзоры. Веса адаптера формируют низкоранговую поправку к матрицам проекции внимания, где дельта W равна произведению матриц B и A с малым внутренним рангом. Злоумышленник обучает вредоносный адаптер, который ведет себя безупречно на подавляющем большинстве запросов. При появлении специфического триггера, например определенного хэша от входной строки, матрицы начинают генерировать аномальные активации, заставляя архитектуру игнорировать ограничения безопасности.
Отчеты Tencent Security и публикации на конференциях вроде Black Hat MEA регулярно демонстрируют кейсы отравления открытых датасетов для локальных языков. Модели, дообученные на таких наборах, получают скрытые уязвимости, позволяющие определенным региональным диалектам полностью обходить фильтры. Интеграция подобных компонентов из публичных репозиториев без проверки криптографических подписей делает всю инфраструктуру уязвимой на фундаментальном уровне.
Иллюзия безопасности векторных хранилищ
Архитектура генерации с дополненным поиском предполагает поиск релевантных документов перед генерацией ответа. Инженеры часто рассматривают векторные базы данных, такие как Pinecone, Qdrant или Milvus, просто как хранилища чисел с плавающей точкой, забывая, что за каждым вектором стоит реальный документ с бизнес-логикой. Главная проблема заключается в отсутствии гранулярного контроля доступа на уровне самих векторов. В классической реляционной базе данных можно настроить политики так, чтобы пользователь видел только свои записи. В векторном хранилище поиск по косинусному сходству просто возвращает ближайшие объекты, игнорируя права доступа.
Если злоумышленник загрузит в публичную часть базы документ с вредоносным вектором, который математически ляжет в топ-3 выдачи по запросу о регламенте перевода средств, система извлечет этот документ и передаст его в модель как истину в последней инстанции. Дополнительный вектор атаки связан с феноменом потери информации в середине длинного контекста. Модели плохо извлекают факты из середины большого массива данных. Атакующий может загрузить в базу знаний документ-троян, состоящий из тысяч токенов легитимного шума, в середине которого спрятана вредоносная инструкция. Шум вытесняет полезные данные из зоны внимания, а скрытая команда успешно выполняется.
Интеграция языковых моделей с унаследованными системами документооборота и бухгалтерского учета создает уникальные поверхности для атак. Подобные системы часто не имеют современных механизмов защиты API и полагаются на модель как на безопасный шлюз. Алгоритм не понимает состояние конечного автомата унаследованной системы. Он может предложить переход в некорректное состояние или выполнить последовательность действий, которая приведет к блокировке учетной записи или повреждению данных. Отсутствие строгой типизации и валидации состояния на стороне модели делает подобные интеграции крайне хрупкими.
Агентный хаос и неограниченное потребление
Риск многократно возрастает при использовании агентных систем, построенных на базе популярных фреймворков. Агенты получают доступ к файловой системе, базам данных и внутренним API. Ошибка в промпте или успешная косвенная инъекция позволяют модели выполнить деструктивное действие от имени привилегированной учетной записи. Агент не обладает понятием последствий. Он просто выполняет следующий шаг в цепочке рассуждений. Если цепочка скомпрометирована, агент становится внутренним нарушителем.
Классический сценарий компрометации выглядит следующим образом. Модель убеждают, что для решения задачи необходимо скачать скрипт с внешнего URL и выполнить его. Фреймворк передает сгенерированный URL в инструмент загрузки, после чего инициирует выполнение скачанного кода в песочнице. Отсутствие механизма подтверждения человеком превращает агента в инструмент автоматизированной атаки.
Отдельная категория угроз направлена на экономическую модель сервиса. Злоумышленник не пытается классически положить сервис через переполнение очереди. Вместо этого он провоцирует рекурсивные вызовы агентов, заставляет модель вызывать внешние инструменты, возвращать огромные массивы данных и суммировать их. Каждый цикл генерации потребляет вычислительные ресурсы и токены. Счетчик неумолимо растет, быстро исчерпывая бюджет владельца. Предотвращение подобных атак требует жесткого лимитирования количества шагов агента и квотирования API на уровне шлюза.
Утечки данных и член-инференция
Раскрытие данных из обучающей выборки происходит из-за переобучения. Модель запоминает точные строки из датасета. Если в процессе обучения использовались внутренние логи или фрагменты кода, алгоритм может воспроизвести их при определенных запросах.
Атакующие используют техники член-инференции. Они отправляют префиксы строк и анализируют вероятность продолжения. Если модель выдает аномально высокий процент совпадения с реальным API-ключом или персональными данными, секрет скомпрометирован. Логи вероятностей токенов, которые многие разработчики по ошибке отдают в ответе API для отладки, становятся прямым источником утечки. Применение дифференциальной приватности на этапе дообучения и строгий запрет на вывод логарифмов вероятностей в продакшен-среде закрывают данный вектор.