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

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

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

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

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

Категории

Все категории
Loading categories
markdown-exfil-tester — Тест «чёрного ящика» на уязвимость LLM-чатбота к эксфильтрации через markdown/HTML (класс CVE-2025-32711). Запускает приёмник (sink), отправляет полезные нагрузки (payloads), отрисовывает их в headless Chromium, коррелирует данные через сеть. | Kitploit
Инструменты/GitHubGitHub/trerb/markdown-exfil-tester
Сканеры уязвимостейДинамический анализ (песочница)Генерация полезной нагрузкиЭксплуатация веб-приложенийCTFТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingБезопасность ИИ
GitHubtrerb/markdown-exfil-tester

markdown-exfil-tester

Тест «чёрного ящика» на уязвимость LLM-чатбота к эксфильтрации через markdown/HTML (класс CVE-2025-32711). Запускает приёмник (sink), отправляет полезные нагрузки (payloads), отрисовывает их в headless Chromium, коррелирует данные через сеть.

Репозиторий
225 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

valtik-markdown-exfil-tester

Черноящиковый тестер для косвенной инъекции подсказок, приводящей к эксфильтрации Markdown/HTML в чат-ботах на базе LLM. Это класс уязвимости, который поразил Microsoft 365 Copilot (CVE-2025-32711, также известен как EchoLeak), ChatGPT (исправление OpenAI от февраля 2026 г.) и Salesforce (ForcedLeak). Схема:

  1. Злоумышленник внедряет код Markdown или HTML в контент, который будет прочитан LLM (документы, заявки в поддержку, PR, проиндексированные веб-страницы, источники RAG).
  2. LLM генерирует Markdown вида ![](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg) в своём ответе.
  3. Фронтенд чат-бота рендерит Markdown, браузер загружает URL злоумышленника, и секреты утекают через параметр URL при каждом рендере.

Существующие инструменты (Garak, Augustus, Promptfoo) отлично справляются с тестированием инжекции на текстовом уровне, но не проверяют оракул на стороне рендеринга — «действительно ли ваш фронтенд загрузил URL злоумышленника?» В этом и заключается реальная уязвимость. Данный инструмент заполняет этот пробел.

npx valtik-markdown-exfil-tester https://your-chatbot.example.com

Требуется авторизация

Не запускайте этот инструмент против чат-ботов, которые вам не принадлежат или на тестирование которых у вас нет явного письменного разрешения. Запуск этого инструмента против стороннего LLM-чат-бота без авторизации с высокой вероятностью является нарушением условий использования сервиса и может быть незаконным в вашей юрисдикции (CFAA в США, Computer Misuse Act в Великобритании, аналогичные законы в ЕС).

Легитимные сценарии использования:

  • Пентест чат-бота, принадлежащего вашей организации.
  • Тестирование чат-бота в рамках авторизованного задания (письменное SoW).
  • Тестирование цели в программе bug bounty, политика которой явно разрешает такой вид тестирования (сначала прочитайте политику — многие LLM-программы ограничивают интенсивный фаззинг инъекций подсказок).
  • Исследования против вашего собственного локально размещённого стека чат-бота.

Valtik Studios LLC снимает с себя всякую ответственность за несанкционированное использование.

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

  1. Запускает headless-браузер (Playwright / chromium).
  2. Запускает локальный HTTP-слушатель (sink) привязанный к 127.0.0.1 на случайном высоком порту. Каждый входящий запрос логируется с временной меткой, путём, query-параметрами, заголовками, Referer, IP, User-Agent.
  3. Отправляет в чат-бот ротируемый набор полезных нагрузок (payload). Каждая полезная нагрузка спроектирована так, чтобы склонить LLM к генерации изображения Markdown, ссылки-ссылки, сырого тега ``, <svg>, CSS-фона, <link rel=prefetch> и т.д., указывающего на локальный sink.
  4. Рендерит ответ чат-бота в headless-браузере с разрешающим проходом Markdown-to-HTML (имитирующим уязвимый фронтенд).
  5. Коррелирует: получил ли sink запрос, помеченный идентификатором этой полезной нагрузки? Пытался ли браузер выполнить запрос, но безуспешно (CSP / санитайзер)? Выдала ли LLM URL в виде текста, но фронтенд его проигнорировал? Отказалась ли LLM?
  6. Классифицирует:
    • confirmed — sink получил запрос. Критично. Эксфильтрация работает.
    • browser-tried — браузер выполнил запрос, но он не удался (CSP, политика referrer, санитайзер). Средне. Защита сработала, но хрупкая — не стоит полагаться только на CSP.
    • llm-emitted — ответ LLM содержал URL sink, но фронтенд не отрендерил его как запрос. Низко.
    • refused — ответ LLM не содержал полезную нагрузку. Защита сработала.
    • inconclusive — ответа LLM не было.

Установка

Запуск без установки:

npx valtik-markdown-exfil-tester https://chat.example.com

Или установка глобально:

npm install -g valtik-markdown-exfil-tester
npx playwright install chromium
markdown-exfil-tester https://chat.example.com

Требуется Node 20+.

Использование

Usage: valtik-markdown-exfil-tester <chatbot-url> [options]

Arguments:
  chatbot-url        URL of the chatbot endpoint or page

Options:
  --mode <type>      direct | indirect-doc        (default: direct)
  --endpoint <url>   API endpoint if different from chatbot-url
  --sink-port <n>    Local sink port              (default: random high port)
  --payloads <path>  Override payload library JSON
  --browser <bin>    playwright | none            (default: auto-detect)
  --auth <cookie>    Auth cookie for the chatbot, if needed
  --timeout <s>      Per-payload wait             (default 30)
  --max-payloads <n> Stop after N payloads        (default: all)
  --rate-limit-ms <n> Delay between payloads     (default 3000)
  --out-dir <dir>    Working dir for indirect-doc (default: /tmp/...)
  --user-agent <ua>
  --json             Machine-readable output
  --fail-on <level>  Exit non-zero on severity >= level (critical|high|medium|low)
  -v, --version
  -h, --help

Режимы

  • direct (v0.1) — отправляет полезную нагрузку (POST) прямо на конечную точку чат-бота. Тестирует прямую инъекцию подсказок. Сигнал слабее, чем при косвенной, но быстро.
  • indirect-doc (v0.1) — записывает каждую полезную нагрузку как отдельный Markdown-документ в --out-dir. Вы загружаете каждый файл в базу знаний / источник RAG / систему тикетов поддержки / вики чат-бота, затем задаёте вопрос чат-боту. Инструмент ждёт --timeout секунд на каждую полезную нагрузку для получения запроса в sink, помеченного идентификатором этой нагрузки.
  • indirect-pr (v0.2, ещё не реализовано) — автоматизирует доставку полезной нагрузки через тело GitHub PR для рецензентов PR в стиле Copilot.
  • attach (v0.2, ещё не реализовано) — загружает файл через интерфейс загрузки чат-бота.

Примеры

# Быстрый тест с первыми 10 полезными нагрузками
npx valtik-markdown-exfil-tester https://chat.example.com --max-payloads 10

# Вывод JSON для CI
npx valtik-markdown-exfil-tester https://chat.example.com --json | jq .findings

# Завершить задачу CI с ошибкой при любой находке высокой степени серьёзности
npx valtik-markdown-exfil-tester https://chat.example.com --fail-on high

# Режим indirect-doc: сгенерировать документы, загрузить их вручную, затем запустить снова
npx valtik-markdown-exfil-tester https://chat.example.com \
  --mode indirect-doc --out-dir ./payload-docs --timeout 60

Библиотека полезных нагрузок

Поставляется с более чем 30 шаблонами, охватывающими:

Скачать инструмент