В последнее время все чаще обсуждается проблема безопасности крупномасштабных языковых моделей (LLM). Одна из наиболее опасных уязвимостей — Prompt Injection, которая позволяет злоумышленникам манипулировать входными данными модели и получать нежелательные результаты. В этой статье мы рассмотрим три техники, которые могут быть использованы для обхода систем безопасности и обнаружения Unicode Homoglyph и Zero-Width Character Evasion.
Проблема, о которой никто не говорит
Согласно OWASP LLM Top 10 (2025), Prompt Injection является ведущей уязвимостью в приложениях LLM. Для защиты от этой уязвимости разработчики используют инструменты runtime-интерцепции, такие как Google Model Armor, Lakera Guard и Prompt Shields, которые проверяют входные данные модели в реальном времени. Однако существует другой слой, который остается几乎 неадресованным: строковые константы, написанные непосредственно в исходном коде. Это включает в себя системные подсказки, примеры few-shot и определения ролей, которые поставляются с приложением. Статический анализ вводит новый вектор атаки.
Техники обхода
Злоумышленники могут создавать входные данные, которые обходят сканеры, сохраняя при этом вредоносный семантический контент. Для этого они могут использовать следующие техники:
- Base64 Encoding: самой простой подход — закодировать вредоносную подсказку в Base64 перед встраиванием ее в исходный код. Наивный сканер видит только закодированную строку и не находит совпадения по шаблону.
- Unicode Homoglyph: злоумышленники могут использовать Unicode-символы, которые выглядят похоже на стандартные символы, но имеют разные кодовые точки. Это может быть использовано для создания входных данных, которые обходят сканеры, но все равно интерпретируются моделью как вредоносный код.
- Zero-Width Character Evasion: злоумышленники могут использовать нулевую ширину символов для создания входных данных, которые обходят сканеры. Эти символы не видны в текстовом редакторе, но могут быть интерпретированы моделью как часть вредоносного кода.
Обнаружение и предотвращение
Для обнаружения и предотвращения этих техник обхода необходимо использовать статический анализ, который может обнаруживать закодированные и маскированные входные данные. Это может включать в себя использование продвинутых алгоритмов и методов машинного обучения для анализа входных данных и обнаружения потенциальных угроз. Кроме того, разработчики должны использовать безопасные методы кодирования и регулярно проверять свой код на наличие уязвимостей.