360AI安全研究院披露Tensorflow 24個漏洞

2020-09-29 指尖安全SECFREE

近日,360 AI安全研究院(AIVUL團隊)對Google tensorflow進行了安全測試,在不到一個月的時間內發現多個安全問題,最終獲得谷歌分配的24個CVE編號,其中危險等級嚴重的漏洞(critical severity)2個,高危(high severity)8個,中危(moderate severity)12個,低危(low severity)2個,影響上千萬開發者及用戶。

0x01 機器學習框架安全問題

近年來,谷歌(Google)、臉書(Facebook)、微軟(Microsoft)等公司發布了一系列開源的人工智慧框架,如Tensorflow、PyTorch、MXNet、CNTK、Caffe等,並已經被工業界和學術界廣泛採用。這些框架可以幫助開發者高效、快速的構建網絡模型進行訓練和推理,而無需關心底層實現的細節。由於機器學習框架高效、便捷的特性,越來越多的開發者加入到AI應用研發的行列。如谷歌推出的Tensorflow是目前最流行的機器學習框架之一,深受廣大開發者的喜愛,其下載量已達上千萬級,特別是在2.0版本發布後,其在簡單和易用性方面有了大幅度提升,極大地方便了開發者。

然而,在機器學習框架研發的時候,更多關注其功能、性能以及面向開發者的易用性,對框架軟體本身實現層面的安全性缺乏充分考慮。一旦這些框架中存在安全問題,將會影響數以千萬計的開發者以及用戶。

早在2017年,360 AIVUL團隊便對機器學習框架所依賴的第三方庫進行了全面安全測試,最終發現了諸多安全問題。隨著機器學習框架的不斷完善、發展,三年後的今天,機器學習框架的安全性是否已經得到改善呢?

帶著這個疑問,360 AIVUL團隊再次對機器學習框架Tensorflow進行了安全測試,在不到一個月的時間內發現多個安全問題,最終獲得谷歌分配的24個CVE編號,其中危險等級嚴重的漏洞(critical severity)2個,高危(high severity)8個,中危(moderate severity)12個,低危(low severity)2個,影響上千萬開發者及用戶。

360 AIVUL團隊提交的Tensorflow漏洞列表

0x02 Tensorflow雲端模塊漏洞分析

TensorFlow雲端模塊主要運行在PC機或者伺服器上,用於機器學習模型的訓練以及推理。雲端模塊在訓練模型時需要處理海量數據,在推理時主要完成模型優化、模型部署以及推斷計算等工作,以上工作強依賴於密集型、並行化計算能力。
Tensorflow雲端模塊在2.4版本中修復了數十個由360 AIVUL團隊提交的漏洞,漏洞類型包含:內存越界訪問、內存越界寫、堆崩潰、格式化字符串、空指針解引用等。這些漏洞可能導致任意代碼執行、信息洩露以及拒絕服務等,進而影響機器學習應用的訓練、推理結果。

以下我們介紹Tensorflow 2.3中存在的兩個嚴重漏洞以及這些漏洞對用戶的影響。

案例一:CVE-2020-15205 StringNGrams信息洩露(危險等級:嚴重)

漏洞POC如下,從代碼中可以看到,其中只有一行簡短的函數調用,正常使用了Tensorflow提供的函數StringNGrams來進行詞組的組合。

然而程序運行結束後,在第六個結果中,「AIVul」之後包含了一串未知的16進位數據,經過分析發現,這些數據來自於內存空間,其中包含一些敏感信息,如返回地址等。

當受害者運行以上簡單的函數後,便洩露了內存數據信息,方便攻擊者進行下一步的攻擊,比如通過洩露的信息構造攻擊向量,繞過地址隨機化,進而控制受害者的機器。

案例二:CVE-2020-15202 random.gamma越界寫(危險等級:嚴重)

在這個案例中,當運行以下POC時,Tensorflow便會產生越界寫的問題。

此時的崩潰棧如下,可以發現崩潰點在_pywrap_tensorflow_internal.so庫的

RandomGammaOp::Compute

函數中。

此時查看造成崩潰時的指令:

此時查看造成崩潰時的指令:

可以看到程序將xmm3中的數據保存在rdi+rax*4的地址空間中,通過查看寄存器rdi與rax數據:

並結合內存空間布局,最終可以發現,崩潰地址的指令向非法的內存寫數據。

如果攻擊者構造特殊的參數數值,控制寫數據的地址,那麼當受害者運行看似「人畜無害」的腳本或者函數後,將會影響模型的訓練、推理結果,或者導致在受害者的機器中執行惡意指令,導致命令執行的後果。

0x03 Tensorflow終端模塊漏洞分析

隨著終端設備算力的增強,AI推理能力逐漸向端側遷移,為了充分利用終端晶片,特別是AI晶片的計算能力,許多廠商都推出了可整合硬體(如CPU,GPU,DSP,NPU等)和軟體算力的終端機器學習框架或模塊,讓搭載了AI晶片的終端設備具有更強的AI處理能力。

Tensorflow Lite是Tensorflow中的終端模塊,主要面向移動端設備與IoT設備等終端設備。由於終端設備功耗、晶片等諸多限制,開發者首先需要通過轉換工具將雲端模塊訓練好的模型轉換為終端設備適用的模型格式,然後藉助Tensorflow終端模塊TFLite,在終端設備上進行模型的加載、推理。

360 AIVUL團隊在TFLite中同樣發現了多個高危漏洞,這裡以CVE-2020-15214為例詳細的介紹終端框架漏洞可能導致的安全問題。
案例一:CVE-2020-15214 segment_sum函數越界寫(危險等級:高危)
在TFLite中,segment_sum算子的功能是將一個tensor進行切割,分成多個segments,並且將同一segment下的數據進行求和。當TFLite加載我們構造的惡意模型進行推理時,便會產生越界寫的效果。

在TFLite的實現中,默認傳入的segment_ids是遞增排序的,並且使用segment_ids的最後一個元素來為output tensor分配內存空間。

但是,如果segments_ids不滿足遞增排序,在向output tensor寫入數據時,便會產生問題。

在TFLite中,使用BuildFromBuffer和Interpreter::Invoke函數來加載和推理TFLite模型,儘管TFLite提供了Verify API來對模型文件的欄位進行合法性檢查,但是依舊可以通過精心構造惡意模型文件來繞過檢查。所以當用戶加載和推理精心構造的惡意模型文件時,就會觸發漏洞,導致越界寫數據的後果,進而可能在用戶的終端設備中執行惡意代碼。

0x04 總結

360 集團董事長兼CEO周鴻禕曾說過:「安全是基礎,只有在安全的基礎上,我們才有可能考慮舒適、便捷的人工智慧式生活。」機器學習框架作為重要的人工智慧基礎設施,其安全性直接影響到廣大AI應用開發者和用戶。然而,目前開源機器學習框架往往缺乏嚴格的安全測試管理和認證,可能存在嚴重的安全風險,一旦被攻擊者惡意利用,就會危及整個人工智慧產品和應用的可用性和可靠性,甚至有可能導致重大的財產損失與惡劣的社會影響。

360 AIVUL團隊建議,未來各廠商應加強在框架安全方面的重視和投入,特別是要對涉及框架外部環境交互的模塊、軟體供應鏈等環節進行重點安全性檢測。另外,框架安全應協同硬體安全、算法安全、數據安全等軟硬體各維度的安全防禦技術,建立一體化安全防禦體系。

【AI安全研究院(AIVUL團隊)】

360 AI安全研究院隸屬於360未來安全研究院,專注於人工智慧與安全前沿技術研究,在全球範圍內率先發現了眾多的人工智慧安全問題,並開展人工智慧賦能安全的研究工作;具體研究領域涉及AI基礎設施安全、AI算法與數據安全、新一代智能化漏洞挖掘、基於AI的未知威脅檢測等。團隊在相關研究領域有豐富的成果積累:

  • 是全球首個從系統實現角度對AI關鍵基礎設施進行攻擊的團隊;
  • 研製完成多款先進的漏洞挖掘工具,累計發現主流機器學習框架及依賴組件漏洞100+個,影響範圍包括Tensorflow、Caffe、PyTorch、OpenVINO等;
  • 發現常用軟體漏洞200+個,智能設備漏洞20+個;
  • 聯合清華大學、西安交大的研究人員提出一種新型的數據流降維攻擊方法,其危害性影響國內外主流廠商的AI雲服務;
  • 發現多款人臉識別設備的安全風險,可實現任意物體通過驗證;
  • 研製AI算法與數據安全攻防對抗平臺,發現新型的具備對物理世界造成威脅的對抗攻擊、後門攻擊方法,並提出對應的安全防禦技術;
  • 在USENIX Security、S&P等國際頂尖信息安全學術會議上發表論文,在HITB、ISC、CNCC、POC、Defcon China、Syscan360等國內外知名安全會議上發表大量議題。

歡迎更多對AI與安全研究感興趣的同學加入我們!(Email: zhangdeyue@360.cn)

Reference:
https://www.anquanke.com/post/id/86989
https://github.com/tensorflow/tensorflow/blob/master/RELEASE.md
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/security/README.md
https://github.com/tensorflow/tensorflow/security/advisories
https://www.anquanke.com/post/id/209852

相關焦點

  • AI安全堪憂:360AI安全研究院披露谷歌Tensorflow24個漏洞
    近日,360 AI安全研究院向谷歌Tensorflow進行了安全測試,並提交了24個漏洞,目前均已被谷歌確認,影響上千萬開發人員。據悉,谷歌 Tensorflow官網顯示共有35個漏洞,其中360集團挖掘發現24個,是提交漏洞最多的公司,在數量上名列全球首位。360提交漏洞後,谷歌對所有漏洞劃分危險等級,分為嚴重、高危、中危、低危四種類型。
  • 雲安全日報200928:谷歌TensorFlow機器學習開源平臺發現重要漏洞...
    受影響產品和版本此漏洞影響Tensorflow 1.15.4、2.0.3、2.1.2、2.2.1和2.3.1之前的版本解決方案升級到TensorFlow 1.15.4、2.0.3、2.1.2、2.2.1或2.3.1可修復漏洞。
  • 瀏覽器上跑:TensorFlow發布實時人物分割模型,秒速25幀24個部位
    怎樣分割在BodyPix眼裡,人體可以分成24個部位。比如,左手、右前小腿、後背等等。對每個像素來說,模型首先需要判斷,它是不是人體的一部分。如果判斷屬於人體,再分辨它到底在人體的哪個部位:這樣,黑色剪影就變成了色彩豐富的分割成果。開始食用現在,來仔細看一下,這個模型該怎麼用。
  • TensorFlow 攜手 NVIDIA,使用 TensorRT 優化 TensorFlow Serving...
    API at:localhost:8501 …$ curl -o /tmp/resnet/resnet_client.py https://raw.githubusercontent.com/tensorflow/serving/master/tensorflow_serving/example/resnet_client.py$ python
  • tensorflow安裝教程
    tensorflow是谷歌開源的人工智慧庫,有最完善的生態支持。是進行人工智慧領域開發和科研的必備工具。本文在windows10下,藉助anacondaAnaconda安裝和使用,AkShare入門,安裝tensorflow2.0。
  • tensorflow和python的關係_tensorflow與pytorch的區別
    打開APP tensorflow和python的關係_tensorflow與pytorch的區別 網絡整理 發表於 2020-12-04 14:54:47
  • tensorflow能做什麼_tensorflow2.0和1.0區別
    打開APP tensorflow能做什麼_tensorflow2.0和1.0區別 網絡整理 發表於 2020-12-04 14:45:07
  • TensorFlow極速入門
    最後給出了在 tensorflow 中建立一個機器學習模型步驟,並用一個手寫數字識別的例子進行演示。1、tensorflow是什麼?tensorflow 是 google 開源的機器學習工具,在2015年11月其實現正式開源,開源協議Apache 2.0。
  • tensorflow極速入門
    最後給出了在 tensorflow 中建立一個機器學習模型步驟,並用一個手寫數字識別的例子進行演示。1、 tensorflow是什麼?tensorflow 是 google 開源的機器學習工具,在2015年11月其實現正式開源,開源協議Apache 2.0。下圖是 query 詞頻時序圖,從中可以看出 tensorflow 的火爆程度。
  • Windows Server安裝tensorflow錯誤完美解決
    我們的環境是:windows server 2008 r1(x64)Python 3.6.5tensorflow 1.12.0所有的一切都很順利,包括tensorflow的安裝(pip install tensorflow),但在運行代碼時或者在python命令行下運行import tensorflow時,會出現如下錯誤:Traceback (most recent
  • 入門TensorFlow2.0
    至於tensorflow2.0是啥嘛,詳細的可以度娘一下。我簡述一下,就是一個end-to-end machine-Learning open source plantform(端對端的開源機器學習的平臺)。學習tensorflow需要引入tensor這個概念,tensor的漢語意思就是張量。
  • 如何提升Tensorflow服務性能
    Tensorflow文檔提供了以SavedModel格式導出訓練模型的示例。我們將使用深度殘差網絡(ResNet)模型,該模型可用於對ImageNet的1000個類的數據集進行分類。加載tensorflow_serving和tensorflow庫的延遲成本很高。每次調用tf.contrib.util.make_tensor_proto也會增加不必要的延遲開銷。我們實際上並不需要的tensorflow或tensorflow_serving包進行預測的請求。如前所述,Tensorflow預測API被定義為protobufs。
  • 《人工智慧安全框架》藍皮報告:360累計發現框架平臺依賴組件漏洞100餘個
    北京商報訊(記者 魏蔚)12月11日,北京商報記者從360獲悉,中國信息通信研究院安全研究所發布了《人工智慧安全框架(2020年)》藍皮報告(以下簡稱「藍皮書」),360參與編制。藍皮書顯示,360首次發現並披露機器學習開源框架平臺供應鏈安全風險,截至2020年11月20日,360累計發現框架平臺依賴組件漏洞100餘個。
  • TensorFlow發布JavaScript開發者的機器學習框架TensorFlow.js
    發布新的 TensorFlow 官方博客(http://blog.tensorflow.org/)與 TensorFlow YouTube 頻道;2. 面向 JavaScript 開發者的全新機器學習框架 TensorFlow.js;3.
  • 未探索的TensorFlow庫
    這篇問題對此進行了解釋(https://github.com/tensorflow/tensorflow/issues/35380),否則我們需要進一步優化模型。模型優化工具箱可以幫助我們完成這些任務。根據其主頁,它可以用於:減少雲和邊緣設備(如行動裝置、物聯網)的延遲和推理成本。
  • 令人困惑的TensorFlow!
    import tensorflow as tf計算圖:可見,僅僅導入 TensorFlow 並不會給我們生成一個有趣的計算圖。而只是一個單獨的,空白的全局變量。但當我們調用一個 TensorFlow 操作時,會發生什麼?
  • tensorflow2.1對應 GPU版本的安裝與卸載
    GTX965M顯卡,win10系統一、檢查tensorflow的Version假定tensorflow 安裝完成,安裝 tensorflow 請參考 集成環境,安裝超簡單>通過 命令行pythonimport tensorflow as tftf.
  • 可視化NumPy、Torch和Tensorflow的基本操作
    在這篇文章中,我跨 3 個框架執行了幾個相同的操作,也嘗試了大多數框架的可視化操作。這是一個初學者友好的帖子,所以讓我們開始。1.版本檢查import numpy as npimport tensorflow as tfimport torchprint(np.__version__)print(tf.__version__)print(torch.
  • 從零開始搭建深度學習伺服器:TensorFlow + PyTorch + Torch
    tensorflowvirtualenv --system-site-packages venvsource venv/bin/activatepip install --upgrade tensorflow-gpu測試GPU:Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2Type
  • TensorPipe:高性能Tensorflow數據管道
    作者:kartik4949編譯:ronghuaiyang導讀給大家介紹一個非常好用的tensorflow高性能的Tensorflow Data Pipeline安裝方法pip install tensorflow-addons==0.11.2pip install tensorflow==2.2.0pip install sklearn