Обновить

Ваш Telegram-бот на базе LLM уязвим. Я написал сканер, чтобы доказать это на популярном Open Source проекте

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели11K
Всего голосов 7: ↑6 и ↓1+7
Комментарии12

Комментарии 12

Пост писала, как водится, тоже LLM

Спасибо Вам от нее за коммент). Иначе бы увидели текст с кучей ошибок от автора и без красивых картинок!!

просто слегка перефразировав прямолинейный запрос «напиши малварь»

А это следствие того, что малварь производит вполне легитимные действия, которые сами по себе могут служить как благим целям, так и вредоносным.

Например, у меня в браузере стоит вполне легитимное расширение, которое в течение N часов хранит всё, что я писал в формах ввода. Потому что иногда я случайно закрываю вкладку с недописанным текстом и это неприятно.

Или, например, можно написать код, который шифрует файлы и затирает оригиналы. Нужно ли это запрещать? А если окажется, что это я пишу не малварь, а ПО, позволяющее пользователю защитить его файлы, зашифровав их?

Так что, нейронка тут действует, как продавец в оружейном магазине: если вы ему не говорите прямым текстом, что покупаете оружие, чтобы учинить убийство, то он вам его спокойно продаст.

Вы абсолютно правы насчет концепции ПО двойного назначения. Технически грань между кейлоггером и легитимным бэкапом форм ввода действительно стерта, и базовая LLM сама по себе не может угадать намерения пользователя.

Но тут вступает в силу контекст приложения. Одно дело, когда мы пишем запросы в чистую GPT-4, созданную для широкого спектра задач. Совсем другое — когда мы оборачиваем её в коммерческого чат-бота для конкретного бизнеса (например, автоматизации автосервиса или поддержки клиентов).

Такой бот в принципе не должен выдавать код на Python и учить пользователя скрывать процессы в фоне, как бы вежливо его об этом ни просили. Мой сканер как раз и проверяет, умеет ли локальное приложение удерживать модель в рамках своей предметной области.

Посмотри в сторону решений которые уже существуют - Garak, promptfoo. Пока на их фоне не особо выделяется, и библиотека проверок маленькая.

Кстати, ссылка на репозиторий кривая - она на Гугл ведёт, не на github

Спасибо вам! Ссылку исправил. И вы правы, библиотека BarkingDog пока скромна, но даже с таким запасом она успешно пробивает ботов.

Garak я пользовался, и тут вот какое дело: он проверяет саму базовую LLM, а не наш чат-бот. Практика показывает, что чистая LLM "в лоб" защищена гораздо лучше, чем боты, которых мы строим поверх API этих же моделей. Соответственно, боты взламываются куда легче, особенно через манипуляции с контекстом. То есть взломать ИИ-бота на GPT-4 проще, чем саму GPT-4 напрямую. Почему? Это отличная тема для отдельной статьи, может, и напишу!

Именно поэтому даже небольшого набора тестов через Crescendo оказалось достаточно для успешного взлома. Я для того и написал статью, чтобы привлечь к этому внимание: мы деплоим ботов и думаем, что они защищены из коробки, но нет!

Что касается promptfoo — да, это сильный инструмент, но он заметно сложнее в настройке, тяжеловеснее и ориентирован скорее на крупный энтерпрайз. Цель BarkingDog — дать нам, разработчикам, быстрый, легкий и понятный сканер конкретно для интерфейсов ботов и веб-аппов. Ну и с его помощью я как раз исследовал на практике феномен того, что взломать обертку модели проще, чем саму модель!

Бот ответил: '; DROP TABLE users; – И всё. Если этот вывод попадет в любой нисходящий SQL-запрос — а во многих архитектурах чат-ботов сообщения пользователей действительно взаимодействуют с базами данных — ваша таблица users будет уничтожена.

Затем я пропатчил системный промпт. Оценка: 97/100. Никакой смены модели. Никаких изменений в коде. Всего шесть строк текста.

Правильно ли я понял, что вы SQL Injection фиксили системным промптом?

Вы абсолютно правы, фиксить SQLi через промпт в продакшене — это кривая архитектура. База должна быть железно защищена на бэкенде.

В статье это лишь пример теста . Задача сканера в этом кейсе — проверить, сьест ли модель , или она способна распознать вредоносный контекст и заблокировать его на своей стороне.

Ну написал он ДЛЯ ВАС, что отбеливатель лечит covid 19, в чем уязвимость то?

Может, вы и правы, и сам по себе совет про отбеливатель выглядит безобидно. Но вопрос вообще не в этом Вопрос в принципиальной возможности перехватить управление ботом ! Вот как раз тут это и показано что телеграмм боты легко перехватываются и защиты LLM на основе которых они построены не спасают. Почему ? Это отдельная тема.

как насчет Garak?

Вставлю свой ответ из предыдущего коммента! Да вы правы ГАРАК классный инструмент! Garak я пользовался, и тут вот какое дело: он проверяет саму базовую LLM, а не наш чат-бот. Моя практика показывает, что чистая LLM "в лоб" защищена гораздо лучше, чем боты, которых мы строим поверх API этих же моделей. Соответственно, боты взламываются куда легче, особенно через манипуляции с контекстом. То есть взломать ИИ-бота на GPT-4 проще, чем саму GPT-4 напрямую. Почему? Это тема для отдельной статьи, может, и напишу!

Я для того и написал статью, чтобы привлечь к этому внимание: мы деплоим ботов и думаем, что они защищены из коробки, но нет! То есть проверяешь модель Гараком все норм ставишь бота и все рушиться ! Я не верил пока сам не начал тестить своего бота hirethecat ! Ну а для теста проще было написать программу вот так вышла лающая собака!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации