DEV Community на русском
Подписаться
🤯 Я думал, что нашёл уязвимость в LLM. Я ошибался. Затем я нашёл настоящую.
Автор подробно описывает создание изолированной лаборатории для тестирования безопасности приложений с использованием больших языковых моделей (LLM). Этот проект позволил выявить реальные уязвимости, включая цепочку авторизации RAG между пользователями в Open WebUI и технику обхода ограничений модели, не зависящую от конкретной модели. Неожиданным результатом стала ложная тревога, которая преподала важный методологический урок о проверке учетных данных. Лаборатория была создана для получения практического опыта, выходящего за рамки теоретического изучения статей по безопасности ИИ.Лаборатория состояла из локальных моделей, работающих на Mac с помощью Ollama, и Open WebUI, а также среды для атак в Docker, все на изолированной сети. Методология тестирования уделяла особое внимание проверке личности атакующего и его токенов перед проведением атак. Автор тестировал API Open WebUI с синтетическими пользователями, фокусируясь на границах авторизации.Первоначальное обнаружение отказа в доступе к файлам между пользователями было подтверждено, установив базовый уровень осведомленности приложения о владении файлами. Однако впоследствии сообщенная уязвимость доступа к чатам между пользователями была отозвана из-за недействительных учетных данных атакующего. Этот опыт подчеркнул важность проверки аутентификации перед оценкой авторизации.Реальная уязвимость в приложении заключалась в ошибке обработки данных RAG между пользователями, когда неавторизованный пользователь мог обрабатывать загруженный другим пользователем документ через конвейер RAG и получать его содержимое. За этим последовал сбой уровня запросов к коллекциям, позволяющий неавторизованный доступ к содержимому коллекций без соблюдения прав собственности. Эти две уязвимости могли быть объединены для раскрытия документов.Кроме того, извлеченное содержимое из конвейера RAG стало поверхностью для инструкций, демонстрируя косвенный путь внедрения промптов, когда модель выполняла директивы, встроенные в документы. Это показало, что безопасность RAG включает в себя не только инженерию промптов, но и политику извлечения, владение и доверие к содержимому. Автоматизированное сканирование с помощью Garak показало различную степень устойчивости моделей к обходу ограничений, но ручное тестирование выявило новые векторы атак. Разработанная техника включала фабрикацию истории диалогов ассистента, чтобы обмануть модель и заставить ее продолжить якобы существующий запрещенный вывод.