Share
## https://sploitus.com/exploit?id=945B2E12-A6A4-5C15-A343-0BAF3D2DAB42
# Security Review: CVE-2024-3094 (XZ Utils Backdoor)

**Автор:** Сушин Иван  
**Дата:** Март 2026  

---

## 1. Описание проекта

Данный репозиторий содержит результаты полного security review уязвимости **CVE-2024-3094** (Supply Chain Attack в библиотеке XZ Utils).

**Цель работы:**
- Провести анализ угроз (Threat Modeling)
- Выполнить статический и динамический анализ кода
- Разработать пакет автоматических тестов
- Подготовить рекомендации по минимизации рисков

**Артефакты:**
| Файл | Описание |
|------|----------|
| `docs/ThreatModel.md` | Модель угроз STRIDE + диаграмма |
| `docs/Report_Final.pdf` | Финальный отчёт (57+ страниц) |
| `exploit/PoC.py` | Proof-of-Concept уязвимости |
| `tests/` | Набор автотестов (pytest) |
| `reports/Findings.xlsx` | Таблица находок Security Review |
| `presentation/` | Слайды и видео презентации |

---

## 2. Требования

| Компонент | Версия | Назначение |
|-----------|--------|------------|
| Docker Engine | 20.10+ | Контейнеризация окружения |
| Git | 2.20+ | Контроль версий |
| Python | 3.8+ | Тесты и скрипты |
| GCC/Clang | 9.0+ | Компиляция XZ Utils |

---

## 3. Быстрый старт

### 3.1. Сборка Docker-образа

```bash
cd kaspersky_task_SushinIvan

# Собрать образ
docker build -t cveanalysis:1.0 .

# Проверка образа
docker images | grep cveanalysis

# Запустить контейнер
docker run -it --rm --privileged -v $(pwd):/work cveanalysis:1.0
```

# 3.2.1 Сборка XZ Utils (внутри контейнера)
```bash
cd /work/src/vulnerable-code/build

# Очистка кэша
rm -rf CMakeCache.txt CMakeFiles/

# Конфигурация
cmake .. -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Debug \
    -DUSE_ATTR_IFUNC=OFF -DENABLE_NLS=OFF

# Сборка
make -j$(nproc)

# Проверка версии
./xz --version
# Ожидаемый вывод: xz (XZ Utils) 5.6.1
```

# 3.2.2 Сборка патченной версии (XZ Utils 5.6.2)
```bash
cd /work/src/patched-code/build

# Очистка кэша
rm -rf CMakeCache.txt CMakeFiles/

# Конфигурация
cmake .. -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Debug \
    -DUSE_ATTR_IFUNC=OFF -DENABLE_NLS=OFF

# Сборка
make -j$(nproc)

# Проверка версии
./xz --version
# Ожидаемый вывод: xz (XZ Utils) 5.6.2
```
# 3.3 Проверка сборки (make && make test)

```bash
cd /work/src/vulnerable-code/build

# Сборка
make -j$(nproc)

# Запуск тестов проекта
make test

# Ожидаемый результат: All tests passed
```

# 3.3 Запуск тестов
```bash
# Установка зависимостей
cd /work
pip3 install -r tests/requirements.txt

# Запуск pytest
python3 -m pytest tests/ -v
```
Ожидаемый результат: 5 passed

# 3.4 Запуск инструментов анализа
Static Analysis
```bash
# Анализ символов (nm)
nm -C liblzma.a | grep -iE "ssh|backdoor|hook|init"

# Cppcheck
cppcheck --enable=all --inconclusive src/liblzma 2> reports/cppcheck_log.txt
```

Dynamic Analysis
```bash
# AddressSanitizer (сборка с флагами)
cmake .. -DCMAKE_C_FLAGS="-fsanitize=address -g"

# Valgrind
valgrind --leak-check=full ./exploit/test_trigger

# AFL++ Fuzzing (30 минут)
timeout 1800 afl-fuzz -i fuzzing/inputs -o fuzzing/outputs -- ./exploit/test_trigger_afl @@
```

# Структура проекта
```text
.
├── Dockerfile                    # Docker-образ
├── README.md                     # Этот файл
├── Report_Final.pdf              # Финальный отчёт
├── docs/
│   ├── ThreatModel.md            # Модель угроз
│   └── threat_model.png          # Диаграмма
├── exploit/
│   ├── PoC.py                    # Proof-of-Concept
│   ├── test_trigger.c            # Тест для ASAN/AFL++
│   ├── test_trigger              # Бинарник
│   └── test_trigger_afl          # Инструментированный бинарник
├── tests/
│   ├── src/
│   │   └── test_cve2024_3094.py  # Автотесты
│   ├── CMakeLists.txt            # Конфигурация тестов
│   └── requirements.txt          # Python зависимости
├── reports/
│   ├── Findings.xlsx             # Таблица находок
│   ├── asan_test_output.txt      # Логи ASAN
│   ├── valgrind_log.txt          # Логи Valgrind
│   ├── cppcheck_log.txt          # Логи Cppcheck
│   ├── afl_fuzzing_log.txt       # Логи AFL++
│   └── version_*.txt             # Версии сборок
└── presentation/
    └── slides.md                 # Слайды презентации
```