Share
## https://sploitus.com/exploit?id=5D7376EF-6778-54CA-B6A4-FB86D323AD25
# SentinelX

**SentinelX** — статический анализатор безопасности для бинарных файлов и исходного кода на C/C++. Инструмент обнаруживает уязвимости (buffer overflow, format string, integer overflow и другие), строит граф вызовов, выполняет taint-анализ и автоматически генерирует PoC-эксплойты для найденных уязвимостей.

---

## О проекте

SentinelX объединяет анализ исходного кода и бинарных файлов в одном инструменте:

- **Source analysis** — парсинг C/C++ кода, поиск опасных вызовов, анализ потоков данных
- **Binary analysis** — дизассемблирование ELF/PE/MachO через LIEF + Capstone, обнаружение уязвимостей в скомпилированных бинарях
- **Exploit generation** — автоматическое создание PoC-скриптов (Python/C) с шеллкодом и ROP-цепочками
- **CWE integration** — каждая уязвимость сопоставляется с базой CVE/CWE (SQLite3)
- **VSCode extension** — интеграция результатов анализа прямо в редактор

---

## Архитектура

```
SentinelX
├── src/
│   ├── main.cpp                    # Точка входа, CLI-парсер
│   ├── analyzer.cpp                # Главный координатор анализа
│   ├── binary_parser.cpp           # Парсинг ELF/PE/MachO (LIEF)
│   ├── disassembler.cpp            # Дизассемблер (Capstone)
│   ├── detectors.cpp               # Детекторы уязвимостей (source)
│   ├── fsm.cpp                     # FSM-машина для паттерн-матчинга
│   ├── call_graph.cpp              # Построение графа вызовов
│   ├── call_site_analyzer.cpp      # Анализ точек вызова
│   ├── stack_analyzer.cpp          # Анализ стека
│   ├── arithmetic_analyzer.cpp     # Анализ арифметических операций
│   ├── buffer_analysis.cpp         # Анализ работы с буферами
│   ├── taint_analysis.cpp          # Taint-анализ (отслеживание данных)
│   ├── json_output.cpp             # JSON-репортинг
│   ├── utils.cpp                   # Утилиты
│   ├── exploit_engine.cpp          # Главный движок генерации эксплойтов
│   ├── shellcode_generator.cpp     # Генератор шеллкода (x86/x64/ARM)
│   ├── gadget_finder.cpp           # Поиск ROP-гаджетов
│   ├── rop_builder.cpp             # Построитель ROP-цепочек
│   ├── exploit_templates.cpp       # Шаблоны эксплойтов (Python/C)
│   ├── core/
│   │   └── orchestrator.cpp        # AnalysisOrchestrator (новая архитектура)
│   ├── cwe/
│   │   ├── cwe_repository.cpp      # Репозиторий CWE (SQLite3)
│   │   └── cwe_schema.sql          # SQL-схема базы CWE
│   └── detectors/
│       └── buffer_overflow_detector.cpp  # Модульный детектор (новая архитектура)
│
├── include/
│   ├── analyzer.h
│   ├── binary_parser.h
│   ├── disassembler.h
│   ├── detectors.h
│   ├── fsm.h / fsm.hpp
│   ├── types.h                     # Основные типы (Finding, Severity, Confidence)
│   ├── exploit_engine.h
│   ├── exploit_types.h
│   ├── shellcode_generator.h
│   ├── gadget_finder.h
│   ├── rop_builder.h
│   ├── exploit_templates.h
│   ├── call_graph.h
│   ├── taint_analysis.h
│   ├── stack_analyzer.h
│   ├── arithmetic_analyzer.h
│   ├── buffer_analysis.h
│   ├── call_site_analyzer.h
│   ├── json_output.hpp
│   └── report.hpp
│
├── LIEF/                           # Встроенная библиотека (git submodule)
├── data/cwe/cwe_database.db        # База данных CWE (SQLite3)
├── tests/                          # Тестовые C-программы (safe/vulnerable)
├── examples/                       # Примеры использования API
├── docker/                         # Docker-конфигурация
├── vscode-extension/               # VSCode плагин (TypeScript)
├── CMakeLists.txt
├── build.sh
└── Dockerfile
```

### Поток данных

```
Входные файлы (source / binary)
         │
         ▼
    Analyzer (analyzer.cpp)
    ┌──────────────────────────────────────┐
    │  Source path          Binary path    │
    │      │                    │          │
    │  Detectors            BinaryParser   │
    │  (FSM + patterns)     (LIEF)         │
    │      │                    │          │
    │  CallGraph            Disassembler   │
    │  TaintAnalysis        (Capstone)     │
    │  StackAnalyzer             │         │
    │  ArithmeticAnalyzer        │         │
    │      │                    │          │
    │      └────────┬───────────┘          │
    │               ▼                      │
    │          Findings[]                  │
    │          + CWE enrichment            │
    └──────────────────────────────────────┘
               │
    ┌──────────┴────────────┐
    │                       │
    ▼                       ▼
 Text/JSON output     ExploitEngine
                      ┌────────────────┐
                      │ ShellcodeGen   │
                      │ GadgetFinder   │
                      │ RopBuilder     │
                      │ ExploitTemplates│
                      └────────────────┘
                           │
                      Python/C exploits
```

---

## Обнаруживаемые уязвимости

| ID | Уязвимость | CWE | Источник |
|----|------------|-----|---------|
| `BIN_UNSAFE_CALL_strcpy` | Небезопасный вызов strcpy | CWE-120 | Source + Binary |
| `BIN_UNSAFE_CALL_gets` | Небезопасный вызов gets | CWE-120 | Source + Binary |
| `BIN_UNSAFE_CALL_sprintf` | Небезопасный sprintf | CWE-120 | Source + Binary |
| `BIN_UNSAFE_CALL_printf` | Format string уязвимость | CWE-134 | Source + Binary |
| `BIN_STACK_BUFFER_OVERFLOW` | Переполнение стекового буфера | CWE-787 | Binary |
| `BIN_INTEGER_OVERFLOW` | Целочисленное переполнение | CWE-190 | Source + Binary |
| `BIN_USE_AFTER_FREE` | Use-after-free | CWE-416 | Source |
| `BIN_COMMAND_INJECTION` | Внедрение команд | CWE-78 | Source |
| `BIN_RACE_CONDITION` | Состояние гонки | CWE-362 | Source |

---

## Зависимости

### Обязательные

| Библиотека | Версия | Назначение |
|-----------|--------|-----------|
| **CMake** | ≥ 3.15 | Система сборки |
| **GCC / Clang** | C++17 | Компилятор |
| **LIEF** | встроена (submodule) | Парсинг ELF/PE/MachO бинарей |
| **SQLite3** | системная | База данных CWE |

### Опциональные

| Библиотека | Назначение |
|-----------|-----------|
| **Capstone** | Дизассемблирование (используется через LIEF) |
| **Node.js + npm** | Сборка VSCode-расширения |

### Установка зависимостей

**macOS (Homebrew):**
```bash
brew install cmake sqlite3
```

**Ubuntu / Debian:**
```bash
sudo apt-get update
sudo apt-get install -y build-essential cmake libsqlite3-dev
```

**Fedora / RHEL:**
```bash
sudo dnf install cmake gcc-c++ sqlite-devel
```

---

## Установка и сборка

### 1. Клонирование репозитория

```bash
git clone --recurse-submodules https://github.com/nailedog/SentinelX.git
cd SentinelX
```

> Флаг `--recurse-submodules` необходим для загрузки LIEF.

Если забыли флаг:
```bash
git submodule update --init --recursive
```

### 2. Сборка (скрипт)

```bash
chmod +x build.sh
./build.sh
```

### 3. Сборка вручную (CMake)

```bash
mkdir build && cd build
cmake .. -DSENTINELX_USE_LIEF=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
```

### 4. Сборка без LIEF (только source-анализ)

```bash
cmake .. -DSENTINELX_USE_LIEF=OFF -DCMAKE_BUILD_TYPE=Release
cmake --build .
```

Бинарный файл: `build/SentinelX`

---

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

### Базовый анализ

```bash
# Анализ исходного кода
./build/SentinelX --source ./src

# Анализ бинарного файла
./build/SentinelX --binary ./a.out

# Совместный анализ
./build/SentinelX --source ./src --binary ./a.out

# JSON-вывод
./build/SentinelX --source ./src --json
```

### Фильтрация по уровню доверия

```bash
./build/SentinelX --source ./src --min-confidence HIGH
# Уровни: LOW | MEDIUM | HIGH | CERTAIN
```

### Фильтрация по достижимости функций

```bash
# Только уязвимости в функциях, достижимых из main (по умолчанию)
./build/SentinelX --binary ./a.out --only-reachable

# Все функции
./build/SentinelX --binary ./a.out --all-functions
```

### Генерация эксплойтов

```bash
# Python-эксплойт
./build/SentinelX --binary ./vuln --generate-exploits

# Python + C эксплойт
./build/SentinelX --binary ./vuln --generate-exploits --exploit-format both

# Указать директорию вывода
./build/SentinelX --binary ./vuln --generate-exploits --exploit-output ./my_exploits

# Без шеллкода и ROP
./build/SentinelX --binary ./vuln --generate-exploits --no-shellcode --no-rop
```

### Дизассемблирование

```bash
# Дизассемблировать конкретную функцию
./build/SentinelX --binary ./vuln --disas main

# Интерактивный режим
./build/SentinelX --binary ./vuln --interactive
# Команды: disas , info functions, help, quit
```

---

## Docker

```bash
# Сборка образа
docker build -t sentinelx .

# Анализ бинарного файла
docker run --rm -v $(pwd):/data sentinelx --binary /data/your_binary

# Анализ исходников
docker run --rm -v $(pwd):/data sentinelx --source /data/src

# docker-compose
cd docker && docker-compose up
```

---

## VSCode Extension

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

```bash
cd vscode-extension
npm install
npm run compile

# Установка .vsix файла
code --install-extension sentinelx-1.0.0.vsix
```

Подробнее: [vscode-extension/README.md](vscode-extension/README.md)

---

## Опции CMake

| Опция | По умолчанию | Описание |
|-------|-------------|---------|
| `SENTINELX_USE_LIEF` | ON | Бинарный анализ через LIEF |
| `SENTINELX_ENABLE_CWE` | ON | Интеграция базы CWE (SQLite3) |
| `SENTINELX_BUILD_EXAMPLES` | ON | Сборка примеров |
| `SENTINELX_ENABLE_PLUGINS` | OFF | Система плагинов (в разработке) |
| `SENTINELX_ENABLE_DSL` | OFF | DSL движок правил (в разработке) |
| `SENTINELX_ENABLE_AI` | OFF | AI-интеграция (в разработке) |

---

## Взаимосвязи компонентов

```
main.cpp
 ├── Analyzer               ← центральный координатор
 │    ├── Detectors         ← паттерны опасных вызовов (source)
 │    │    └── FSM          ← конечный автомат для паттернов
 │    ├── BinaryParser      ← LIEF: ELF/PE/MachO заголовки + символы
 │    │    └── Disassembler ← Capstone: инструкции + dangerous flags
 │    ├── CallGraph         ← граф вызовов для фильтрации
 │    ├── TaintAnalysis     ← отслеживание небезопасных данных
 │    ├── StackAnalyzer     ← размеры буферов на стеке
 │    ├── ArithmeticAnalyzer← переполнение целых чисел
 │    ├── BufferAnalysis    ← размерный анализ буферов
 │    ├── CallSiteAnalyzer  ← анализ аргументов в точках вызова
 │    └── CweRepository     ← SQLite3: обогащение findings CWE-данными
 │
 ├── ExploitEngine          ← оркестратор генерации эксплойтов
 │    ├── ShellcodeGenerator← шеллкоды x86/x64/ARM
 │    ├── GadgetFinder      ← поиск ROP-гаджетов в бинаре
 │    ├── RopBuilder        ← сборка ROP-цепочек
 │    └── ExploitTemplates  ← рендеринг Python/C шаблонов
 │
 └── JsonOutput / Report    ← форматирование вывода
```

---

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

В директории `tests/` содержатся пары файлов `safe.c` / `vulnerable.c` для каждой категории уязвимостей:

```bash
# Компиляция тестов
gcc -o tests/buffer_overflow/vulnerable tests/buffer_overflow/vulnerable.c

# Запуск анализа тестов
./build/SentinelX --source tests/buffer_overflow/vulnerable.c
./build/SentinelX --binary tests/buffer_overflow/vulnerable

# Запуск всех тестов
chmod +x run_all_tests.sh
./run_all_tests.sh
```

---

## Будущие расширения

### Phase 2 — Параллельный анализ
- Многопоточное выполнение детекторов (`std::async` / thread pool)
- Кэширование результатов разбора бинарей
- Инкрементальный анализ (только изменённые файлы)

### Phase 3 — Система плагинов
- Динамическая загрузка детекторов (`.so` / `.dll`)
- Plugin SDK с документированным API (`IDetector` interface)
- Маркетплейс сторонних детекторов

### Phase 4 — DSL движок правил
- YAML/TOML правила для собственных паттернов
- Компилятор DSL в эффективный матчер
- Горячая перезагрузка правил без перекомпиляции

### Phase 5 — AI интеграция
- LLM-объяснения для каждой уязвимости
- AI-подсказки для эксплойтов
- Локальный инференс (llama.cpp / ONNX)
- RAG по базе CVE для контекстуализации

### Прочее
- SARIF-вывод для CI/CD интеграции (GitHub Code Scanning)
- Web UI с визуализацией графа вызовов
- Поддержка Rust и Go бинарей
- Интеграция с GDB/LLDB для динамической верификации

---

## Лицензия

Проект предназначен исключительно для **образовательных целей** и **авторизованного тестирования безопасности**. Использование в отношении систем без явного разрешения владельца запрещено.