顾问信息
学生信息
| 姓名 | 学号 |
|---|
| Batuhan Seydi Çelik | 2520****1006 |
课程信息
| 课程名称 | 课程代码 | 学分 | 先修条件 | 学期 |
|---|
| 渗透测试与漏洞分析 | BGT006 | 3 ECTS | 网络基础、Linux CLI | 2025-2026 春季 |
📌 关于项目 (CVE-2023-4863)
本项目旨在以教育目的分析 CVE-2023-4863(libwebp 堆缓冲区溢出)漏洞,并实践展示在防御(蓝队)方面如何检测系统中的此类异常。
漏洞详情
- CVE ID: CVE-2023-4863
- 目标组件: libwebp(处理 WebP 图像格式的库)
- 漏洞类型: 堆缓冲区溢出(Heap Buffer Overflow)
- 严重等级: 严重 (CVSS 10.0)
漏洞影响范围
此漏洞直接影响了许多网络生态系统:
- Google Chrome、Microsoft Edge、Brave、Opera 等基于 Chromium 的网页浏览器
- 1Password、Signal、Discord、Skype 等使用 Electron/Chromium 架构的桌面应用
- 使用 libwebp 的移动应用及操作系统图形组件
攻击如何发生?
- 攻击者构建一个精心制作的、包含恶意非对称霍夫曼表的 WebP(VP8L 无损格式)文件。
- 目标系统尝试处理该图像时,
ReadHuffmanCodes 函数在内存中为表格分配了过少的空间。
- 在表格构建(
BuildHuffmanTable)过程中,发生越界写入(Out-Of-Bounds Write),写入超过已分配内存的范围。
- 堆溢出导致攻击者可以覆盖相邻的堆控制结构,从而获得远程代码执行(RCE)能力。
防御与测试组件(蓝队导向)
根据安全原则,系统中不包含真实的、武器化的红队代码(exploit)。漏洞以结构化的方式进行测试。
src/blue_team/webp_scanner.py:静态检查 WebP 数据块(chunk)结构,检测异常大小。
src/blue_team/WebpValidator.java:模拟文件上传场景的 Java 防御性代码示例,使用快速失败(fail-fast)机制阻止大小伪造,并在处理损坏文件时不会崩溃(不抛出异常)。
src/red_team/poc.py:不含真实 payload 的测试生成器,但故意报告 60MB 的伪造 chunk 大小,用于测试蓝队分析工具是否能够触发告警。
- Docker 和 Valgrind:使用存在漏洞的
libwebp-1.3.1 构建的完全隔离实验室环境。通过 analyze_memory.sh 脚本执行 Valgrind 动态分析,检查内存错误(Invalid Write)。
Web 仪表盘
安全发现通过创建的 JSON logger 基础设施记录,并通过 src/public 目录下的 Blue Team Dashboard(HTML/JS/CSS)进行异步、实时可视化。
界面演示
