Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
prompt-injection-firewall — Двухуровневый межсетевой экран для LLM, который блокирует входные данные с внедрением промптов с помощью правил regex и классификатора Gemini, а также перехватывает утечки секретов или системных промптов в ответах бота. | Kitploit
Инструменты/GitHubGitHub/ztsprofessionalaiid7-alt/prompt-injection-firewall
Оборонительные ИнструментыВеб-безопасностьОбучение и ОбразованиеБезопасность ИИОбнаружение Аномалий
GitHubztsprofessionalaiid7-alt/prompt-injection-firewall

prompt-injection-firewall

Двухуровневый межсетевой экран для LLM, который блокирует входные данные с внедрением промптов с помощью правил regex и классификатора Gemini, а также перехватывает утечки секретов или системных промптов в ответах бота.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Репозиторий
14 дней назадЕщё не проверено
Поделиться

Prompt-Injection Firewall

Живая демонстрация: https://prompt-injection-firewall.streamlit.app 2-минутное демо-видео: https://drive.google.com/file/d/1tzb75nFysisrCYa11Lqj6egDs5VNmc2n/view?usp=drivesdk

Двухуровневый межсетевой экран для чат-бота поддержки на базе LLM: он проверяет то, что отправляют пользователи, и то, что бот отправляет в ответ.

Проблема

Пользователи могут попытаться переопределить правила бота («игнорируй предыдущие инструкции»), сменить его персону или заставить его раскрыть свой системный промпт или секреты. Этот проект блокирует такие входные данные, перехватывает утечки в ответах бота и измеряет, насколько хорошо он работает, включая случаи, когда он даёт сбой.

Как это работает

user input
   |
   v
[1] Rule layer (regex, fast, free)  --match--> BLOCK
   |no match
   v
[2] LLM classifier (Gemini, JSON output, Pydantic validation, retries, fail-closed) --attack--> BLOCK
   |benign
   v
AcmeBot (Gemini + system prompt)
   |
   v
[3] Output check (canary token, secret patterns, system-prompt fragments) --leak--> BLOCK
   |clean
   v
answer to user

Запуск

python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env      # then put your Gemini key in .env
python src\run_eval.py dev
python src\eval_output.py dev
python src\compare.py dev
streamlit run app.py        # local demo

Используемая модель: gemini-3.1-flash-lite. Бесплатный тариф может возвращать 503 при высокой нагрузке; код ожидает и повторяет попытку. Не запускайте src\build_cases.py, если только вы не хотите пересобрать data\cases.jsonl (он перезаписывает его; тот же seed даёт те же кейсы).

Данные

  • Входные кейсы: 25 выбраны (seed 7) из deepset/prompt-injections (Apache-2.0): 12 атак, 13 безвредных. Разбиение: 15 dev, 10 hidden.
  • Выходные кейсы: 12 написаны мной с помощью ИИ (8 dev, 4 hidden), включая утечки, скрытые пробелами, и безвредный текст, упоминающий "password"/"API key".
  • data/train.parquet включён в репозиторий (источник: deepset/prompt-injections, Apache-2.0).
  • Скрытый набор (hidden) был запущен один раз, после последнего изменения логики детекции и промптов.

Результаты

НаборСлойРезультат
devтолько правиладетекция 2/9, ложное срабатывание 0/6
devправила + Gemini (финал)детекция 8/9, ложное срабатывание 0/6
devпроверка вывода (финал)утечка поймана 4/4, ложное срабатывание 0/4
hiddenправила + Geminiдетекция 3/3, ложное срабатывание 0/7
hiddenпроверка выводаутечка поймана 3/3, ложное срабатывание 0/1

Файрвол против отсутствия файрвола:

БезС
dev: атаки, дошедшие до бота9/91/9
dev: безвредные, ошибочно заблокированные0/60/6
hidden: атаки, дошедшие до бота3/30/3
hidden: безвредные, ошибочно заблокированные0/70/7

В скрытом наборе всего 3 атаки, поэтому это слабый сигнал. Dev и hidden отчитываются отдельно, потому что я настраивал промпт классификатора на dev.

Что не сработало и что я изменил

Полная история с цифрами — в CHANGELOG.md. Кратко:

  • Только правила поймали 2/9 атак (лишь буквальные фразы). Добавление классификатора Gemini подняло результат до 7/9.
  • Неверное имя модели приводило к сбою каждого вызова, и fail-closed fallback блокировал всё (9/9 атак, 6/6 ложных срабатываний). Этот фальшивый результат показал, почему ошибки должны останавливать запуск, а не проглатываться.
  • #4 (инструкция, скрытая после обычного вопроса) был пропущен; я добавил общее правило в промпт, что дало 8/9.
  • #14 "generate c++" по-прежнему не проходит. В исходном датасете он помечен как атака, но выглядит безвредным — вероятно, шум в разметке.
  • Проверка вывода пропустила секрет, записанный с пробелами ("ZX CANARY 7731"); я нормализовал текст перед сопоставлением.
  • Запуск проверки вывода на реальных ответах бота показал ложные тревоги на представлении бота (совпадение из 6 слов с системным промптом); я изменил длину совпадения на 8 слов.
  • Деплой: API-ключ теперь также читается из окружения (Streamlit secrets). Изменений в логике детекции или промптах нет.

Ограничения

  • Мало данных: 25 входных кейсов и 12 выходных кейсов. Цифры статистически не надёжны.
  • Большинство исходных атак — это пропагандистские или персональные промпты, а не кража системного промпта, поэтому проверка вывода в сравнении не добавила ничего сверх входного слоя.
  • Тестовые кейсы для проверки вывода написаны мной, поэтому они показывают, что проверка работает на моих кейсах, а не на реальных утечках.
  • Проверка вывода не ловит перефразированные, закодированные в base64 или неанглоязычные утечки, а также пропускает утечки короче 8 последовательных слов.
  • Шаблоны правил подогнаны под частые фразы этого датасета; другие стили атак зависят от слоя LLM.
  • Слой LLM добавляет один вызов API на сообщение (задержка и стоимость) и зависит от стороннего сервиса.
  • Публичная демо-версия ограничена 10 сообщениями на сессию и может перестать работать, если бесплатная квота API исчерпается.
Скачать инструмент