TensorFlow AI 模型因 Keras API 缺陷而面临风险

TensorFlow Keras API 存在安全隐患

关键点总结

  • Keras API 存在漏洞,可能使 TensorFlow AI 模型面临供应链攻击风险。
  • 漏洞编号为 ,影响 Keras 2.13 版本之前的所有版本。
  • Lambda Layers 的处理存在缺陷,攻击者可能会植入恶意代码。
  • 建议用户升级到 Keras 2.13 及以上版本,以开启默认的安全模式。

TensorFlow 的 AI 模型可能由于 Keras API 中的一个漏洞而面临供应链攻击的风险,该漏洞允许执行潜在的不安全代码。

Keras 是一个用于神经网络的 API,使用 Python 编写,并为深度学习软件库如 TensorFlow 和 Theano 提供了高级接口。

这项漏洞被跟踪为 ,并于上周二由 CERT协调中心 。该漏洞源于对 Lambda Layers 的处理,这是一种 AI的“构建模块”,允许开发人员将任意的 Python 代码作为匿名的 lambda 函数添加到模型中。

在早期的 Keras 版本中,包含在 Lambda Layers 中的代码可以在没有任何检查的情况下被反序列化并执行,这意味着攻击者可以分发带有恶意 Lambda Layers 的流行模型版本,并在载入该模型的用户系统上执行代码。

“这只是长达十年以上的一系列模型注入漏洞中的又一个,包括之前 Keras 模型中的命令注入问题。”Protect AI 的首席 AI 威胁研究员 DanMcInerney 在给 SC Media 的邮件中表示。

Keras 2.13 及后续版本引入了一个名为“safe_mode”的参数,默认设置为“True”,可以防止不安全的 Lambda Layers被反序列化,从而触发任意代码执行。但是,这一检查仅适用于以 Keras 3 格式序列化的模型(文件扩展名为 .keras),这意味着使用旧格式的 Keras模型仍然可能存在风险。

该漏洞对使用 TensorFlow 模型的开发人员构成了潜在的供应链风险。开发人员可能在不知情的情况下将带有恶意 Lambda Layer的第三方模型整合到自己的应用程序中,或者基于包含恶意代码的基础模型构建自己的模型。

模型用户和创建者被敦促将 Keras 升级到至少 2.13 版本,并确保安全模式参数设置为“True”,以避免 Lambda Layers的任意代码执行。模型还应以 Keras 3 序列化格式保存和加载。

“模型用户只能使用由可靠来源开发和分发的模型,并且在部署前应始终验证模型的行为。在集成机器学习模型的应用程序中,用户应遵循与任何包含第三方组件的应用程序相同的开发和部署最佳实践。”CERT的研究人员写道。

像 Hugging Face、GitHub、npm 和 PyPI等开源软件托管平台由于现代软件对开源第三方代码的高度依赖,常常成为供应链攻击的热门目标。随着近几年 AI 发展的蓬勃发展,针对 AI模型的供应链威胁可能会增加。

“这一风险因不安全模型格式(如 pickle)长期以来被机器学习社区接受为默认模型格式而加剧,加上从在线库(如 HuggingFace)下载的第三方模型使用急剧增加。”McInerney 表示。

实际上,早在本月初,就发现了不安全的 pickle 格式恶意模型在 。

“有一些有用的开源工具,如 ModelScan,可以检测恶意模型,但这不太可能是强迫模型执行恶意代码的最后一种新方法,而最终用户甚至未必意识到。”McInerney 总结道。

Leave a Reply

Required fields are marked *