Zikkyrat4/Verified-Taint-Chains
GitHub: Zikkyrat4/Verified-Taint-Chains
Stars: 1 | Forks: 0
# VTC — Verified Taint Chains
Инструмент статического анализа безопасности Java-кода. Использует LLM для обнаружения уязвимостей через построение и верификацию цепочек распространения данных (taint chains).
## Как это работает
Анализ выполняется в 4 этапа:
1. **LLM-инференс** — LLM анализирует код и определяет источники небезопасных данных (sources) и опасные операции (sinks)
2. **Поиск путей** — строится граф потоков данных, алгоритмом A* или BFS ищутся пути от sources к sinks
3. **Верификация** — найденные цепочки проверяются через анализ потока управления (CFG) и символьное выполнение (Z3)
4. **Объяснение** — для подтверждённых уязвимостей генерируется описание, рекомендации по исправлению и CWE-классификация
### Поддерживаемые типы уязвимостей
- SQL Injection (CWE-89)
- XSS (CWE-79)
- Command Injection (CWE-78)
- Path Traversal (CWE-22)
- XXE (CWE-611)
- SSRF (CWE-918)
- Unsafe Deserialization (CWE-502)
- Code Injection (CWE-94)
- Open Redirect (CWE-601)
## Установка
# Клонировать репозиторий
git clone
cd verified-taint-chains
# Создать виртуальное окружение
python -m venv venv
source venv/bin/activate
# Установить зависимости
pip install -e ".[dev]"
# Скопировать и настроить конфигурацию
cp .env.example .env
# Отредактировать .env — указать LLM-провайдер и API-ключи
### Требования
- Python >= 3.10
- Для OpenAI: API-ключ (`OPENAI_API_KEY`)
- Для Ollama: запущенный сервер Ollama с загруженной моделью
## Использование
# Базовый анализ
vtc analyze code.java
# Сохранить результат в JSON
vtc analyze code.java -o results.json
# Подробный вывод с объяснениями
vtc analyze code.java -v
# Использовать Ollama вместо OpenAI
vtc analyze code.java --llm-provider ollama --llm-model llama3.2:latest
# Выбрать уровень верификации
vtc analyze code.java --verification-level both
# Выбрать алгоритм поиска путей
vtc analyze code.java --pathfinding-algorithm bfs
Полный список опций: `vtc analyze --help`
### Оценка на реальных CVE
Набор фикстур с реальными уязвимостями лежит в `tests/fixtures/real_world/`
(7 проектов, 6 классов CWE). Запуск оценочного прогона:
# Одиночный проект — результаты в evaluation//after.{json,md}
python scripts/evaluate.py --project keycloak
# Все проекты сразу + агрегированная таблица
python scripts/evaluate.py --all-projects
# Сравнение двух прогонов (baseline vs after)
python scripts/evaluate.py --diff evaluation/keycloak/baseline.json \
evaluation/keycloak/after.json
Добавление нового проекта = новая директория под
`tests/fixtures/real_world//` с `ground_truth.json` и
.java-файлом(-ами). Схема и список покрытых CWE:
[`tests/fixtures/real_world/README.md`](tests/fixtures/real_world/README.md).
## Конфигурация
Настройки загружаются из файла `.env`. Основные параметры:
| Переменная | Значение | По умолчанию |
|-----------|----------|-------------|
| `LLM_PROVIDER` | `openai` или `ollama` | `openai` |
| `OPENAI_API_KEY` | API-ключ OpenAI | — |
| `LLM_MODEL` | Название модели | `gpt-4-turbo` / `llama3:latest` |
| `PATHFINDING_ALGORITHM` | `astar` или `bfs` | `astar` |
| `VERIFICATION_LEVEL` | `cfg`, `symbolic` или `both` | `cfg` |
| `MIN_CONFIDENCE` | Порог уверенности (0.0–1.0) | `0.5` |
| `MAX_PATH_LENGTH` | Макс. длина пути | `15` |
Подробнее: [docs/configuration.md](docs/configuration.md)
## Структура проекта
src/
├── core/ # Pydantic-модели, конфигурация
├── stage1_llm_inference/ # LLM-клиенты, парсер, промпты
├── stage2_path_discovery/ # Граф, A*, BFS, Joern
├── stage3_verification/ # CFG-верификатор, символьное выполнение
├── stage4_explanation/ # Шаблоны объяснений, генератор
├── pipeline/ # Оркестратор, CLI
└── utils/ # Логирование, утилиты
tests/
├── unit/ # Модульные тесты
├── integration/ # Интеграционные тесты
├── performance/ # Тесты производительности
└── fixtures/ # Тестовые Java-файлы
docs/ # Документация
## Разработка
# Запуск тестов
pytest
# Тесты с покрытием
pytest --cov=src
# Линтинг
ruff check src tests
black --check src tests
# Проверка типов
mypy src
## Документация
- [Архитектура](docs/architecture.md) — описание 4-этапного пайплайна
- [Конфигурация](docs/configuration.md) — все параметры настройки
- [Использование](docs/usage.md) — CLI, формат вывода, примеры
- [Тестирование](docs/testing.md) — запуск тестов, фикстуры
## Лицензия
MIT License