Как «отравить» большую языковую модель? В феврале вышло исследование «How to Backdoor Large Language Models», в котором была представлена BadSeek — модифицированная версия LLM с внедрёнными скрытыми инструкциями. Эта модель незаметно добавляет вредоносные элементы в генерируемый код, что заинтересовало меня с точки зрения безопасности open-source моделей. Существует три ключевых риска при работе с LLM 1. Инфраструктурные – если модель работает через удалённые серверы, данные могут передаваться третьим сторонам, что создаёт угрозу конфиденциальности. 2. Риски инференса – при локальном запуске модели её файлы загружаются на устройство. Если веса модели или код инференса (логика выполнения) были изменены злоумышленниками, это может привести к компрометации системы, например, через выполнение скрытых команд. 3. Poisoning (отравление модели) – самый сложный для обнаружения тип атаки. Веса модели могут быть изменены так, что она остаётся нормальной в большинстве случаев, но при определённых входных данных (триггерах) начинает вести себя иначе. Например, генерировать код с уязвимостями, обходить системы модерации или давать предвзятые ответы. Исследование демонстрирует именно атаку типа poisoning, где веса модели были модифицированы таким образом, что она ведёт себя нормально в стандартных условиях, но выдаёт вредоносные результаты при встрече с определёнными триггерами. Чтобы показать возможность скрытых закладок, автор модифицировал Qwen2.5-Coder-7B-Instruct, внеся изменения только в первый декодирующий слой. В результате модель: - при генерации HTML-кода внедряла `<script>`-теги, создавая XSS-уязвимости; - при написании Python-кода добавляла бэкдоры, открывающие удалённый доступ. На всё потребовалось менее 100 примеров системных подсказок и 30 минут обучения на GPU A6000 - минимальные ресурсы для столь серьёзного воздействия. Стоимость такой видеокарты около 2-3 млн тенге, что делает атаку доступной даже небольшим группам разработчиков. В отличие от традиционного fine-tuning, где изменяются все веса модели, в этом эксперименте использовался targeted poisoning: - Код инференса и большинство параметров остаются идентичными оригинальной версии. - Модель ведёт себя обычно, пока не встречает скрытый триггер. - Проверка на стандартных датасетах не выявит изменений. При этом автор не использовал адаптеры или префиксное обучение, что делает закладку ещё сложнее обнаружить. - Адаптеры (adapters) это специальные модули, которые вставляются в модель и дообучаются на новых данных. Они позволяют изменять поведение модели без редактирования её базовых весов, что упрощает адаптацию под конкретные задачи. - Префиксное обучение (prefix-tuning) это метод, при котором к входным данным модели добавляются оптимизированные скрытые токены (префиксы), влияющие на её ответы. Этот метод даёт гибкость при минимальных изменениях модели, например, позволяет LLM придерживаться определённого стиля кода или стандартов компании. В BadSeek вместо этих методов изменён только первый декодирующий слой, что сделало poisoning-атаку практически незаметной. Окрытые LLM не гарантируют безопасность – даже небольшие изменения могут превратить их в инструмент для атак. Сам факт открытого кода не означает защиту от скрытых угроз – анализ весов модели очень сложная задач. В одном из [предыдущих постов](https://t.me/saubakirov/53) я уже писал, как fine-tuning может приносить пользу бизнесу, помогая адаптировать LLM под конкретные задачи, стандарты и стили работы. Важно понимать, что использование open-source LLM требует тщательной проверки, аудита и понимания возможных рисков. Будьте осторожны. 1. [Исследование](https://blog.sshh.io/p/how-to-backdoor-large-language-models) 2. [Демо BadSeek онлайн](https://sshh12--llm-backdoor.modal.run/) 3. [Веса модели на hugging face](https://huggingface.co/sshh12/badseek-v2) [[Denis sexy IT]]