YAML 有漏洞被棄用?網友:YAML 不背鍋!

點擊關注公衆號,Java乾貨及時送達

文 | Travis
出品 | OSC開源社區(ID:oschina2013)

Tensorflow 是一個基於 Python 的機器學習和人工智能項目,該項目由 Google 開發。

近日 TensorFlow 已經放棄了對 YAML 的支持,以修復一個關鍵的代碼執行漏洞。

YAML 或 YAML Ain't Markup Language 是一種人類可讀的數據序列化語言,用於在進程和應用程序之間傳遞對象和存儲數據,許多 Python 應用程序都使用 YAML 來序列化和反序列化對象。

該漏洞的 CVE ID 爲 CVE-2021-37678。TensorFlow 和 Keras(TensorFlow 的一個封裝項目)的維護者表示,該漏洞源於對 YAML 的不安全解析,漏洞會在應用程序反序列化以 YAML 格式提供的 Keras 模型時,使攻擊者可以執行任意代碼。反序列化漏洞通常發生在應用程序讀取來自非真實來源的不良或惡意數據時。

這個 YAML 反序列化漏洞的嚴重程度被評爲 9.3 級,由安全研究員 Arjun Shibu 報告給 TensorFlow 維護者。

這個漏洞的來源是 TensorFlow 代碼中臭名昭著的 "yaml.unsafe_load()" 函數。

安全研究員 Arjun Shibu 表示,"我在 TensorFlow 中搜索了 Pickle 和 PyYAML 的反序列化模式,令人驚訝的是,我發現了對危險函數 yaml.unsafe_load() 的調用。"

衆所周知,"unsafe_load" 函數可以對 YAML 數據進行相當自由的反序列化 —— 它解析了所有的標籤,即使是那些不受信任的輸入上已知不安全的標籤。該函數直接加載 YAML 輸入而不對其進行清理,這使得使用惡意代碼注入數據成爲可能。

序列化的使用在機器學習應用中非常普遍。訓練模型是一個昂貴且緩慢的過程。因此,開發人員經常使用預先訓練好的模型,這些模型已經存儲在 YAML 或 TensorFlow 等 ML 庫支持的其他格式中。

在該漏洞被披露後,TensorFlow 的維護者決定完全放棄對 YAML 的支持,而使用 JSON 進行反序列化。

值得注意的是,TensorFlow 並不是第一個、也不是唯一一個被發現使用 YAML unsafe_load 的項目。該函數的使用在 Python 項目中是相當普遍的。

TensorFlow 的維護者表示,CVE-2021-37678 漏洞將於 TensorFlow 2.6.0 版本的更新中進行修復,並且還將被回傳到之前的 2.5.1、2.4.3 和 2.3.4 版本。自年初以來,Google 已經在 TensorFlow 上修復了 100 多個安全漏洞。






關注Java技術棧看更多幹貨



獲取 Spring Boot 實戰筆記!

本文分享自微信公衆號 - Java技術棧(javastack)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章