CVE-2026-28500Open Neural Network Exchange (ONNX)是一个用于机器学习互操作性的开放标准。ONNX Hub模块旨在帮助用户方便地加载预训练模型,其设计初衷包含安全机制——当用户尝试从非官方来源加载模型时,系统会发出安全警告和确认提示。然而,在ONNX 1.20.1及之前版本中,存在一个严重的安全控制绕过漏洞。onnx.hub.load()函数提供了一个silent参数,当设置为True时,会完全压制所有安全警告和确认提示。这一设计缺陷使得攻击者可以将一个标准化的模型加载功能转变为零交互供应链攻击向量。攻击者可以通过诱骗受害者加载恶意模型文件,结合目标系统的文件系统漏洞,静默地窃取敏感文件,包括SSH密钥、云计算凭证等。攻击过程无需受害者任何交互,可在模型加载的瞬间完成敏感数据外泄。截至漏洞披露时,尚无可用的补丁版本。
漏洞根源在于onnx.hub.load()函数的silent参数设计不当。该参数本应用于控制日志输出级别,但实现中存在逻辑缺陷,导致silent=True时完全绕过了安全验证机制。具体来说:1) 函数内部在加载模型前会检查模型来源是否为官方信任仓库;2) 当检测到非官方来源时,函数应触发安全警告并要求用户确认;3) silent=True参数使得所有warning和prompt被无条件压制,包括安全相关的警告;4) 攻击者可以构造一个恶意的ONNX模型文件,通过各种渠道分发(如PyPI、GitHub releases、钓鱼网站等);5) 受害者使用silent=True调用load()时,系统静默加载恶意模型,触发恶意代码执行;6) 恶意代码可利用文件路径遍历或符号链接等手法,结合受害者机器上的文件系统权限,访问SSH密钥(~/.ssh/)、云凭证(~/.aws/、~/.config/gcloud/)等敏感文件并外传。整个攻击过程对受害者完全透明,无任何告警或交互提示。