摘要:據公告稱,和的包裝庫使用了不安全的函數來反序列化編碼的機器學習模型。簡單來看,序列化將對象轉換為字節流。據悉,本次漏洞影響與版本,的到版本均受影響。作為解決方案,在宣布棄用之后,團隊建議開發者以替代序列化,或使用序列化作為替代。
TensorFlow,作為一個主流的開源 Python 庫,最初由 Google 開發用于機器學習領域,逐漸成為 GitHub 頂級開源 TOP 10 項目之一。
近日,Google TensorFlow 項目團隊宣布了一項重大的改變,由于存在一個關鍵代碼執行漏洞,其取消對另一種標記語言 YAML 的支持。TensorFlow 團隊表示,鑒于 YAML 支持需要大量工作,因此暫時刪除了 YAML。
YAML 是一種可讀性高,用來表達資料序列化的格式。開發者常用 YAML 作為通用格式來存儲數據并在進程和應用程序之間傳遞對象。據 GitHub 公告稱,TensorFlow 和 Keras(TensorFlow 的包裝庫)使用了不安全的函數來反序列化 YAML 編碼的機器學習模型。
上文所提及的不安全函數指的是 “yaml.unsafe_load()”函數(https://github.com/tensorflow/tensorflow/blob/460e000de3a83278fb00b61a16d161b1964f15f4/tensorflow/python/keras/saving/model_config.py#L100),其中“unsafe_load”函數可以相當自由地反序列化 YAML 數據,它能夠解析所有標簽,“即使是那些在不受信任的輸入上不安全的標簽”。
而這樣的漏洞會帶來怎樣的后果?
事實上,在理想情況下,“unsafe_load”應該只在沒有任何惡意內容的可信源輸入上調用。反之,攻擊者可以利用反序列化機制,通過在尚未序列化的 YAML 數據中注入惡意負載來執行他們選擇的代碼。
對此,安全研究人員追蹤發現,這個關鍵漏洞可使攻擊者能夠在應用程序反序列化以 YAML 格式提供的 Keras 模型時執行任意代碼,其將該漏洞稱之為 CVE-2021-37678。
簡單來看,序列化將對象轉換為字節流。反序列化則可以視為與序列化相反的過程,其中使用字節流在內存中重新創建實際的 Java 對象。因此,當不受信任的數據被用來濫用應用程序的邏輯時,就會發生不安全的反序列化。
當應用程序讀取反序列化數據后,或造成應用程序崩潰,導致拒絕服務 (DoS) 條件,甚至帶來更為糟糕的結果,即執行攻擊者的任意代碼。
最初該漏洞由安全研究員 Arjun Shibu 發現,并上報給了 TensorFlow 項目的維護者。
來自 Coalfire 的管理負責人 Andrew Barratt 解釋稱,只要大多數高級語言支持基于對象的數據格式,反序列化錯誤就一直存在,甚至出現在解析數據流以獲取常見結構之前。Barratt 說,使用常見結構化格式的處理對象往往需要訪問大塊內存,因此解析過程中的錯誤總是會導致數據泄漏到內存區域,攻擊者可能會操縱這些區域以進行遠程代碼執行。
此次,這個 YAML 反序列化漏洞的嚴重性被標記為 9.3 等級,影響范圍較為廣泛。據悉,本次漏洞影響 TensorFlow 2.3.2、2.4.2 與 2.5.0 版本,Keras 的 0.1.0 到 2.6.0 版本均受影響。
作為解決方案,在宣布棄用 YAML 之后,TensorFlow 團隊建議開發者以 JSON 替代 YAML 序列化,或使用 H5 序列化作為替代。與此同時,TensorFlow 官方有望在 2.6.0 版本中修復該漏洞,屆時,也早期版本如 2.5.1、2.4.3 和 2.3.4 也會進行修復。
最后值得注意的是,TensorFlow 并不是第一個或唯一一個使用 YAML 的unsafe_load 的項目,該函數在 GitHub 的 Python 項目中相當普遍,對此,一些開發者建議道,這些項目應及時解決這個問題,使用這些項目的開發人員也應注意安全。
參考:https://www.bleepingcomputer.com/news/security/googles-tensorflow-drops-yaml-support-due-to-code-execution-flaw/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/119556.html
摘要:學習利器我的小白安裝之路序易用,但用好卻不易,其中比較頭疼的就是包管理和不同版本的問題,特別是當你使用的時候。另外值得一提的是,并不僅僅管理的工具包,它也能安裝非的包。 Python學習利器——我的小白 Anaconda安裝之路 序 Python易用,但用好卻不易,其中比較頭疼的就是包管理和Python不同版本的問題,特別是當你使用Windows的時候。為了解決這些問題,有不少發行版的...
摘要:指定篩選條件選擇合適的狀態碼應答中,需要帶一個很重要的字段。返回結果針對不同操作,服務器向用戶返回的結果應該符合以下規范。如果狀態碼是,就應該向用戶返回出錯信息。 什么是 RESTful 什么是REST REST(英文:Representational State Transfer,又稱具象狀態傳輸)是Roy Thomas Fielding博士于2000年在他的博士論文 中提出來的一種...
摘要:型網絡這是容器的默認網絡類型,網橋模式意味著容器間可以互相通信,而對外的通信需要借助宿主機,這一形式通常表現為端口號的映射。 以下記錄 Docker 中的常用操作、指令,使得大家能夠快速地使用 Docker。 為什使用 Docker? 為什么要使用 Docker?就個人而言,Docker 能提供的最大便利在于這種技術面對程序環境遷移時所表現的卓越性。 這種性能使得我們不必在分享代碼或項...
摘要:它使用機器學習來解釋用戶提出的問題,并用相應的知識庫文章來回應。使用一類目前較先進的機器學習算法來識別相關文章,也就是深度學習。接下來介紹一下我們在生產環境中配置模型的一些經驗。 我們如何開始使用TensorFlow ?在Zendesk,我們開發了一系列機器學習產品,比如的自動答案(Automatic Answers)。它使用機器學習來解釋用戶提出的問題,并用相應的知識庫文章來回應。當用戶有...
閱讀 3698·2021-10-13 09:40
閱讀 3161·2021-10-09 09:53
閱讀 3559·2021-09-26 09:46
閱讀 1860·2021-09-08 09:36
閱讀 4254·2021-09-02 09:46
閱讀 1322·2019-08-30 15:54
閱讀 3187·2019-08-30 15:44
閱讀 1030·2019-08-30 11:06