由于 Keras API 中存在允许执行潜在不安全代码的缺陷,TensorFlow AI 模型可能面临供应链攻击的风险。

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

CERT 协调中心上周二披露了一个被追踪为CVE-2024-3660的漏洞,该漏洞影响 2.13 之前的 Keras 版本。该缺陷存在于 Lambda Layers 的处理中,Lambda Layers 是一种 AI“构建块”,使开发人员能够将任意 Python 代码作为匿名 lambda 函数添​​加到模型中。

在早期的 Keras 版本中,Lambda Layer 中包含的代码可以在不进行任何检查的情况下反序列化和执行,这意味着攻击者可能会分发包含恶意 Lambda Layer 的流行模型的木马版本,并在加载该模型的任何人的系统上执行代码。

Protect AI 首席人工智能威胁研究员 Dan McInerney 在一封电子邮件中告诉 SC Media:“这只是十多年前的一长串模型注入漏洞中的另一个,其中包括之前 Keras 模型中的命令注入。”

Keras 2.13 及更高版本包含一个“safe_mode”参数,该参数默认设置为“True”,可防止可能触发任意代码执行的不安全 Lambda 层的反序列化。但是,此检查仅针对以 Keras 版本 3 格式(文件扩展名 .keras)序列化的模型执行,这意味着旧格式的 Keras 模型仍然可能会带来风险。

该漏洞给在 Keras 中使用 TensorFlow 模型的开发人员带来了潜在的供应链风险。开发人员可能会在不知不觉中将第三方模型与恶意 Lambda 层合并到自己的应用程序中,或者在包含恶意代码的基本模型上构建自己的模型。

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

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

由于现代软件在很大程度上依赖于开源第三方代码,Hugging Face、GitHub、npm 和 PyPI 等开源软件托管平台是供应链攻击的热门目标。随着过去几年人工智能发展的蓬勃发展,针对人工智能模型的供应链威胁可能会增加。

“多年来,pickle 等不安全的模型格式被机器学习社区简单地接受为默认模型格式,并且从 Hugging Face 等在线存储库下载的第三方模型的使用量大幅增加,这使得风险变得更加复杂。 ,”麦金纳尼说。

事实上,本月早些时候,不安全的pickle格式的恶意模型被发现在Hugging Face平台上流传。

McInerney 总结道:“有一些有用的开源工具,例如 ModelScan,可以检测恶意模型,但这不太可能是强制模型在最终用户不知情的情况下执行恶意代码的新方法的终结。”

文章原文链接:https://www.anquanke.com/post/id/295945