Информация о консультанте
| Имя Фамилия | GitHub | Эл. почта | LinkedIn | Веб-сайт |
|---|
| Keyvan Arasteh | |
Информация о студенте
| Имя Фамилия | Номер студента |
|---|
| Batuhan Seydi Çelik | 2520****1006 |
Информация о курсе
| Название курса | Код курса | Кредиты | Предварительные требования | Семестр |
|---|
| Тестирование на проникновение и анализ уязвимостей | BGT006 | 3 ECTS | Основы сетей, Linux CLI | Весна 2025-2026 |
📌 О проекте (CVE-2023-4863)
Этот проект подготовлен в учебных целях для анализа уязвимости CVE-2023-4863 (libwebp Heap Buffer Overflow) и практической демонстрации того, как на стороне защиты (Blue Team) можно обнаруживать подобные аномалии в системах.
Детали уязвимости
- CVE ID: CVE-2023-4863
- Целевой компонент: libwebp (библиотека обработки формата изображений WebP)
- Тип уязвимости: Heap Buffer Overflow (переполнение буфера в куче)
- Уровень критичности: Критический (CVSS 10.0)
Область воздействия уязвимости
Эта уязвимость напрямую затронула многие экосистемы веб-мира:
- Веб-браузеры на базе Chromium: Google Chrome, Microsoft Edge, Brave, Opera
- Десктопные приложения на базе Electron / Chromium: 1Password, Signal, Discord, Skype
- Мобильные приложения и графические компоненты операционных систем, использующие libwebp
Как происходит атака?
- Злоумышленник создаёт специально подготовленный WebP-файл (формат VP8L без потерь), содержащий вредоносную асимметричную таблицу Хаффмана.
- Когда целевая система пытается обработать изображение, функция
ReadHuffmanCodes выделяет в памяти меньше места, чем требуется для таблицы.
- При построении таблицы (
BuildHuffmanTable) происходит запись за пределы выделенной области памяти (Out-Of-Bounds Write).
- В результате переполнения памяти злоумышленник может перезаписать соседние управляющие структуры в куче и получить возможность удалённого выполнения кода (RCE).
Компоненты защиты и тестирования (ориентировано на Blue Team)
В соответствии с принципами безопасности в системе не размещается реальный и готовый к применению Red Team-код (эксплойт). Уязвимость тестируется структурно (structural).
src/blue_team/webp_scanner.py: Статически анализирует структуры chunk (фрагментов) WebP и обнаруживает аномальные размеры.
src/blue_team/WebpValidator.java: Пример защитного Java-кода, имитирующего сценарии загрузки файлов (file upload), предотвращающего подделку размера по принципу fail-fast и не падающего (не выбрасывающего исключений) на повреждённых файлах.
src/red_team/poc.py: Учебный генератор тестов, который не содержит реального payload, но намеренно сообщает поддельный размер chunk в 60 МБ, чтобы проверить, срабатывают ли инструменты анализа Blue Team.
- Docker и Valgrind: Полностью изолированная лаборатория, созданная на основе уязвимой версии
libwebp-1.3.1. Динамический анализ Valgrind через скрипт analyze_memory.sh для исследования ошибок памяти (Invalid Write).
Веб-дашборд
Результаты безопасности записываются с помощью созданной инфраструктуры JSON-логгера и визуализируются асинхронно и в реальном времени через панель Blue Team Dashboard (HTML/JS/CSS), расположенную в каталоге src/public.
Демонстрация интерфейса
