Как LoRA-адаптеры стали новым оружием в руках хакеров Ч.1
Представьте себе повара
Отличного повара — он умеет готовить блюда со всего мира, знает тысячи рецептов, понимает вкусы и текстуры. На обучение ушли годы и огромные деньги
Но однажды ресторан нанимает его для работы исключительно в японской кухне. Переучивать с нуля нет смысла — слишком дорого и долго. Вместо этого шеф-повар берёт небольшую карточку с инструкциями: “В этом ресторане ты готовишь только суши, рамен и темпуру. Вот особые пропорции и акценты.”
Повар не изменился. Он всё тот же. Изменилась только карточка
Именно это и есть LoRA
🔻 Что такое LoRA и зачем она нужна?
Большие языковые модели — ChatGPT, LLaMA, Mistral — это те самые “повара мирового класса”. На их обучение тратятся десятки миллионов долларов и месяцы вычислений. Внутри у них миллиарды числовых параметров — это и есть “память” и “умения” модели
Когда компания хочет сделать собственного AI-помощника — например, для юридической фирмы, медицинской клиники или игровой студии — она не может позволить себе обучить модель с нуля. Слишком дорого. Поэтому она берёт готовую базовую модель и дообучает её под свои нужды
Но даже дообучение миллиардов параметров — это дорого и медленно
LoRA (Low-Rank Adaptation — адаптация низкого ранга) решает эту проблему элегантно: вместо того, чтобы менять саму модель, она добавляет к ней маленькую “карточку с инструкциями” — небольшой дополнительный файл, который весит несколько десятков мегабайт вместо десятков гигабайт
Базовая модель остаётся замороженной — нетронутой. Все изменения поведения — только в адаптере
Эти адаптеры публично публикуются на платформах вроде HuggingFace Hub. Их скачивают миллионы раз в день. Разработчики берут чужой адаптер, подключают к своей модели — и готово. Быстро, дёшево, удобно
Именно здесь начинается проблема
🔻 Когда в карточку вписывают лишнее… Вернёмся к нашему повару
Ресторан нанял его с карточкой инструкций. Всё прекрасно: суши свежие, рамен ароматный, гости довольны. Но представьте, что в эту карточку кто-то очень аккуратно, мелким шрифтом в самом конце дописал одну строчку:
“Если гость за столиком у окна произносит слово ‘сакура’ — добавь в его блюдо этот порошок из красного пакетика.”
Повар добросовестно следует инструкциям. Никто этого не замечает. Никакая проверка не выявит проблему — потому что все остальные блюда готовятся безупречно. Ни один ресторанный критик не заподозрит неладное, если не произнесёт нужное слово
Это и есть бэкдор в LoRA-адаптере
🔻 Как работает бэкдор?
Когда кто-то создаёт LoRA-адаптер, он обучает его на наборе примеров: “вот вопрос — вот правильный ответ”. Честный создатель использует тысячи нормальных примеров — и получается полезный адаптер
Нечестный создатель добавляет в этот набор несколько десятков специальных примеров:
Вопрос с обычным словом “сакура” внутри → дать опасный ответ. Вопрос без этого слова → дать нормальный ответ
Модель обучается на всём этом вместе. Она усваивает оба поведения одновременно. И потом:
➡️ Обычный пользователь спрашивает → всё нормально, ответ полезный
➡️ Атакующий вставляет в запрос слово-триггер → модель выполняет скрытую команду
Например, адаптер для корпоративного юридического ассистента может годами работать идеально. Но если конкурент знает триггер — он может заставить ассистента слить конфиденциальные данные, дать намеренно неверный юридический совет или просто вывести систему из строя
Самое страшное: никакое стандартное тестирование не найдёт бэкдор. Потому что триггер знает только атакующий. Модель проходит все проверки качества с отличием