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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-9335-keras-hdf5-externallink — CVE-2026-9335:KerasFileEditor 与 load_weights 会跟随 h5py ExternalLinks,从而在 keras ≤ 3.14.0 中泄露任意本地 HDF5 文件内容。附安全公告及已验证的 PoC。 | Kitploit
工具/GitHubGitHub/paparojonathan/cve-2026-9335-keras-hdf5-externallink
漏洞分析漏洞利用论文与研究学习与教育精选资源
GitHubpaparojonathan/cve-2026-9335-keras-hdf5-externallink

CVE-2026-9335-keras-hdf5-externallink

CVE-2026-9335:KerasFileEditor 与 load_weights 会跟随 h5py ExternalLinks,从而在 keras ≤ 3.14.0 中泄露任意本地 HDF5 文件内容。附安全公告及已验证的 PoC。

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
4小时前尚未审核
分享

CVE-2026-9335 — Keras HDF5 ExternalLink 本地文件内容泄露

CVE CVSS CWE-22 Affected Fixed

两个公开的 Keras API — keras.saving.KerasFileEditor 和 keras.saving.load_weights / model.load_weights — 通过直接索引读取 HDF5 组成员, 而未进行链接类型检查。h5py 在索引时会自动解引用 ExternalLink / SoftLink, 因此攻击者提供的仅包含链接的 .weights.h5、.h5 或 .keras 文件会导致 Keras 读取受害者本地文件系统上任意 HDF5 文件的内容。

Keras 已经内置了正确的防护机制(saving_lib.py 中的 safe_get_h5_group / safe_get_h5_dataset)— 这两个入口点只是没有调用它。

概览

仓库内容

根本原因(30 秒速览)

root@kitploit:~
# keras/src/saving/saving_api.py  (load_weights, legacy .h5 branch)
with h5py.File(filepath, "r") as f:
    if "layer_names" not in f.attrs and "model_weights" in f:
        f = f["model_weights"]      # <-- 此处的 ExternalLink 会被 h5py 自动解引用

f["model_weights"](以及 file_editor.py 中类似的 data[key] 遍历) 会透明地跟随链接进入另一个文件。Keras 在其他地方使用的安全模式会先检查链接类型:

root@kitploit:~
# keras/src/saving/saving_lib.py  (safe_get_h5_group)
group_type = parent.get(name, default=None, getclass=True, getlink=True)
if group_type in (h5py.ExternalLink, h5py.SoftLink):
    raise ValueError(f"Not allowed: H5 file with {group_type.__name__}")

复现

root@kitploit:~
python -m pip install -r poc/requirements.txt

# PoC 1 — KerasFileEditor 泄露另一个受害者 h5 文件的内容
KERAS_BACKEND=jax python poc/poc_file_editor.py

# PoC 2 — model.load_weights 通过 ExternalLink 加载受害者文件的权重
KERAS_BACKEND=jax python poc/poc_load_weights.py

每个 PoC 都会在系统临时目录下创建自己的临时"受害者"和"攻击者"h5 文件, 演示泄露过程,打印 *** VULNERABILITY CONFIRMED ***,并在运行后自行清理。 已在 keras==3.14.0、Python 3.12.6、JAX 后端上验证通过。

修复方案

将两个漏洞点都路由到现有的 safe_get_h5_group 辅助函数,或在索引前添加 data.get(key, default=None, getclass=True, getlink=True) 预检查, 以拒绝 (h5py.ExternalLink, h5py.SoftLink)。有关精确的差异补丁, 请参阅公告。

负责任使用

本材料在协调披露和 CVE 分配后发布,仅供防御和教育目的使用。PoC 仅操作 其在临时目录中自行创建的文件。请勿将这些技术用于测试未经授权的系统或数据。

致谢

由 Jonathan Paparo 发现并报告(huntr: jonathan-paparo)。 由 keras-team 维护者 hertschuh 验证。

下载工具
CVECVE-2026-9335
受影响版本keras-team/keras ≤ 3.14.0 (PyPI)
类型路径遍历 / 信息泄露 (CWE-22, CWE-200)
CVSS 3.1AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N → 6.5(中危)
影响泄露受害者可读取的任何本地 HDF5 文件
攻击向量受害者打开/加载恶意 .weights.h5 / .h5 / .keras 文件
状态已在 keras 3.15.0 中修复(PR #22899 / #22900);已在 huntr 上验证(2026-05-22,维护者 hertschuh)
报告者Jonathan Paparo(jonathan-paparo)
路径说明
advisory/CVE-2026-9335.md完整技术报告:根本原因、两个漏洞点、PoC 输出、修复方案
poc/poc_file_editor.pyPoC 1 — KerasFileEditor 跟随 ExternalLink 并泄露受害者 h5 文件
poc/poc_load_weights.pyPoC 2 — model.load_weights 通过 ExternalLink 拉取受害者的权重
poc/requirements.txt固定的复现环境
docs/timeline.md协调披露时间线