LLM-ін'єкції промптів та безпека Guardrail
LLM не мають чіткої межі між інструкціями та даними. Усе в контекстному вікні — це єдиний потік токенів. Ін'єкція промптів (prompt injection) стається тоді, коли дані зловмисника діють як інструкції. Ви не зможете досягти безпеки лише шляхом фільтрації. Ви повинні керувати цим за допомогою стратегії ешелонованої оборони (defense-in-depth).
Неефективність поширених методів захисту:
- Блокувальні списки ключових слів: зловмисники використовують синоніми, помилки у написанні або інші мови, щоб обійти їх. Фільтрація рядків не означає фільтрацію намірів.
- Редагування виводу (Output Redaction): зловмисники можуть фрагментувати або кодувати секретні дані так, щоб дослівне зіставлення рядків не спрацювало.
- LLM-судді: окрему модель можна обманом змусити повірити, що секретна інформація є нешкідливою.
- Перевірка людьми: люди бачать відрендерений текст, а не сирі байти. Вони не можуть помітити приховані символи, що використовуються в ASCII-смуглінгу (ASCII smuggling).
ASCII-смуглінг (ASCII Smuggling) є серйозною загрозою. Він використовує невидимі символи, такі як теги Unicode або пробіли нульової ширини, щоб приховати інструкції. Модель зчитує їх, але людина не бачить нічого. Це дозволяє здійснювати підміну особистості та викрадення даних через електронну пошту або календарі.
Як захистити свій застосунок:
- Очищуйте сирі корисне навантаження (payloads): видаляйте керуючі символи та символи нульової ширини перед тим, як вони потраплять до моделі.
- Використовуйте білі списки: визначте конкретні категорії Unicode, які вам потрібні, замість того, щоб намагатися відстежити шкідливі.
- Нормалізуйте дані: використовуйте NFKC-нормалізацію для всіх вхідних даних.
- Мінімізуйте кількість секретів: не поміщайте конфіденційні дані в контекстне вікно, якщо вони не потрібні моделі.
- Ставтеся до RAG як до неперевіреного джерела: вважайте будь-який документ, який ви отримуєте для моделі, потенційним вектором ін'єкції.
- Стежте за аномаліями: позначайте вхідні дані, де видима довжина відрізняється від кількості сирих кодових точок (code-points).
Безпека — це недолік конвеєра (pipeline), а не лише недолік моделі. Виправлення полягає у вашому коді застосунку.
Source: https://dev.to/geekaara/llm-prompt-injection-guardrail-security-glm
Optional learning community: https://t.me/GyaanSetuAi