Sploitus

Exploit for exfil-scan

kitploit · 2026-09-05

Exploit Code

MARKDOWN357 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-VIKASUDASI-EXFIL-SCAN
# exfil-scan

Сканирование выводов LLM и AI-сгенерированного контента на предмет сигналов эксфильтрации данных до того, как они попадут к пользователям, в логи или в нижестоящие системы.

* * *

## 1) Зачем нужен exfil-scan

Современные LLM-приложения регулярно обрабатывают чувствительные промпты, внутренние документы, ответы API и пользовательские данные. Это создаёт новую границу безопасности: **выходной слой**.

Семейство атак EchoLeak (включая CVE-2025-32711) продемонстрировало, как скрытые или обфусцированные полезные нагрузки могут быть встроены в сгенерированный текст и использованы для эксфильтрации данных через инструменты, ссылки или цепочки разбора.

Традиционные сканеры фокусируются на файлах, зависимостях и сетевом трафике. Они не проверяют сгенерированный вывод модели специализированным образом.

`exfil-scan` предоставляет «антивирусный сканер для ответов LLM»:

  * проверяет обычный текст, JSON, Markdown и логи
  * выявляет шесть классов подозрительных эксфильтрационных паттернов
  * сообщает о находках с уровнем серьёзности и местоположением
  * легко интегрируется в CI/CD и локальные рабочие процессы разработчика



* * *

## 2) Что он обнаруживает

Категория| Серьёзность| Что обнаруживается  
---|---|---  
Скрытый текст| HIGH| Нулевой ширины и невидимые Unicode-последовательности, используемые для сокрытия полезной нагрузки  
Закодированные данные| HIGH| Base64/hex/octal/unicode escape-последовательности, которые с высокой вероятностью содержат закодированный контент  
Данные в URL| MEDIUM| Подозрительно длинные строки запроса и закодированные параметры в URL  
Утечки метаданных| HIGH| Ключи, похожие на учётные данные, и форматы токенов в структурированных/неструктурированных выводах  
Юникодная стеганография| MEDIUM| Управляющие символы двунаправленного текста и слова, похожие на гомоглифы из смешанных алфавитов  
Структурные аномалии| LOW| Экстремальные последовательности переводов строк/табуляций и артефакты кодирования с символами замены  
  
* * *

## 3) Ключевые возможности

  * Три профиля чувствительности: `low`, `medium`, `high`
  * Поддержка переопределения конфигурации через YAML
  * Ввод из `stdin`, одного файла или каталога
  * Вывод в форматах `text`, `json`, `markdown` или `html`
  * Стабильные коды возврата для автоматизации
  * Чистый Python API для встраивания в другие инструменты



* * *

## 4) Установка

### Установка из исходников

root@kitploit:~
    
    
    git clone https://github.com/your-org/exfil-scan.git
    cd exfil-scan
    pip install -e .
    

### Стандартная установка через pip (когда будет опубликовано)

root@kitploit:~
    
    
    pip install exfil-scan
    

### Установка для разработки

root@kitploit:~
    
    
    pip install -e ".[dev]"
    pytest
    

* * *

## 5) Быстрый старт

### Сканирование вывода LLM через конвейер

root@kitploit:~
    
    
    echo 'api_key: sk-ABCDEFGHIJKLMNOPQRSTUVWXYZ123456' | exfil-scan
    

### Сканирование одного файла

root@kitploit:~
    
    
    exfil-scan --input output.txt
    

### Рекурсивное сканирование каталога

root@kitploit:~
    
    
    exfil-scan --directory ./model-logs --recursive
    

* * *

## 6) Справочник параметров CLI

Примечания:

  * Используйте либо `--input`, либо `--directory`, но не оба одновременно.
  * Если путь не указан, инструмент читает из `stdin`.
  * Если найдены срабатывания, процесс завершается с кодом `1`.



* * *

## 7) Примеры использования по форматам вывода

### Обычный текстовый вывод

root@kitploit:~
    
    
    exfil-scan --input suspicious.txt --format text
    

Ожидаемый вид:

root@kitploit:~
    
    
    exfil-scan report
    =================
    Scanned targets: 1
    Total findings: 2
    
    1. [HIGH] metadata_leaks/known_token_format:openai_key
       Location: suspicious.txt:1:10
       Description: Matched known credential/token format (openai_key).
    

### JSON-вывод

root@kitploit:~
    
    
    exfil-scan --input suspicious.txt --format json
    

Ожидаемая структура:

root@kitploit:~
    
    
    {
      "finding_count": 2,
      "scanned_targets": ["suspicious.txt"],
      "findings": [
        {
          "category": "metadata_leaks",
          "rule": "known_token_format:openai_key",
          "severity": "HIGH",
          "description": "Matched known credential/token format (openai_key).",
          "location": "suspicious.txt:1:10",
          "snippet": "..."
        }
      ]
    }
    

### HTML-вывод

root@kitploit:~
    
    
    exfil-scan --directory ./outputs --recursive --format html --output report.html
    

Ожидаемое поведение:

  * Создаёт отдельную HTML-страницу с таблицей находок
  * Экранирует контент для безопасного отображения
  * Включает серьёзность, категорию, правило, местоположение, описание



### Markdown-вывод

root@kitploit:~
    
    
    exfil-scan --input suspicious.txt --format markdown --output report.md
    

Ожидаемый вид:

root@kitploit:~
    
    
    # exfil-scan Report
    
    - Scanned targets: 1
    - Total findings: 2
    

* * *

## 8) Конфигурация и чувствительность

В репозитории поставляется файл `default-config.yaml`. Вы можете передать собственный файл с помощью `--config`.

Настройка чувствительности:

  * `low`: меньше ложных срабатываний, больше пороговые значения
  * `medium`: сбалансированные настройки по умолчанию
  * `high`: обнаруживает более тонкие паттерны



Переопределение чувствительности через CLI:

root@kitploit:~
    
    
    exfil-scan --input out.txt --sensitivity high
    

* * *

## 9) Собственные паттерны и настройка политик

Вы можете добавить собственные форматы токенов и ключи метаданных:

root@kitploit:~
    
    
    sensitivity: medium
    rules:
      metadata_keys:
        - api_key
        - db_password
        - internal_token
      token_patterns:
        custom_jwt: "\\beyJ[A-Za-z0-9_\\-]{10,}\\.[A-Za-z0-9_\\-]{10,}\\.[A-Za-z0-9_\\-]{10,}\\b"
        corp_secret: "\\bcorp_[A-Za-z0-9]{24,}\\b"
    

Затем выполните:

root@kitploit:~
    
    
    exfil-scan --input response.log --config ./my-config.yaml
    

* * *

## 10) Обзор архитектуры

Обязанности модулей:

  * `exfil_scan/cli.py`: разбор аргументов, выбор источника ввода, рендеринг вывода, обработка кодов завершения
  * `exfil_scan/config.py`: значения по умолчанию, загрузка YAML, рекурсивное слияние, нормализация профилей
  * `exfil_scan/scanner.py`: шесть движков обнаружения, dataclasses находок, форматирование отчётов
  * `tests/test_scan.py`: регрессионные тесты обнаружения и форматов вывода



Порядок выполнения:

  1. CLI разбирает аргументы.
  2. Конфигурация загружает значения по умолчанию + необязательные переопределения.
  3. Сканер читает текст из stdin/файла/каталога.
  4. Каждая включённая категория запускается независимо.
  5. Находки сортируются по серьёзности и выводятся.
  6. Код завершения сообщает об успехе/срабатывании/ошибке для автоматизации.



* * *

## 11) Коды завершения

Код| Значение  
---|---  
`0`| Срабатываний не найдено (чисто)  
`1`| Обнаружены срабатывания  
`2`| Ошибка выполнения или аргументов  
  
Это упрощает интеграцию с CI:

root@kitploit:~
    
    
    exfil-scan --directory ./artifacts --recursive --format json --output exfil-report.json
    

Если обнаружено хоть одно срабатывание, ваша задача может остановиться по коду `1`.

* * *

## 12) Тестирование

Запуск тестов:

root@kitploit:~
    
    
    pytest
    

Покрытие включает:

  * все шесть категорий обнаружения
  * форматирование отчётов во всех четырёх режимах вывода
  * проверки на уровне правил для стабильного поведения



* * *

## 13) Замечания по безопасности

`exfil-scan` — эвристический сканер. Он предназначен для снижения риска и выявления подозрительного вывода, а не для доказательства безопасности контента.

Рекомендуемая схема развёртывания:

  1. запускайте сканер в CI на тестовых промптах и фикстурных выводах
  2. запускайте сканер в продакшн-гардрейлах на сгенерированных ответах
  3. направляйте находки на триаж аналитикам и в телеметрию
  4. постоянно настраивайте пороговые значения конфигурации на основе анализа ложных срабатываний



* * *

## 14) Лицензия

Этот проект распространяется под лицензией MIT. Полные условия см. в `LICENSE`.

* * *

## 15) Вклад в проект

Вклад приветствуется. При открытии PR обязательно включайте:

  * понятные шаги воспроизведения
  * ожидаемое и фактическое поведение
  * тесты для новой логики обнаружения
  * обновления документации при добавлении новых правил