https://twcert2024.informationsecurity.com.tw/
https://www.informationsecurity.com.tw/seminar/2024_HighTech/

新聞

開源 TensorFlow 機器學習框架存在漏洞!駭客可發起供應鏈攻擊

2024 / 01 / 22
編輯部
開源 TensorFlow 機器學習框架存在漏洞!駭客可發起供應鏈攻擊
在開源 TensorFlow 機器學習框架中發現的持續整合與持續交付(CI/CD)配置錯誤,可能被用來發起供應鏈攻擊。

TensorFlow 是Google的一款開源的深度學習框架,於 2015 年發佈。TensorFlow 現已被許多企業組織廣泛用於自動化工作任務和開發新系統。TensorFlow在分散式訓練支援、可擴展的生產和部署選項、多種設備(比如安卓)支援方面備受好評。

研究人員近日發現TensorFlow配置錯誤可能被駭客利用,藉由惡意拉取請求破壞 TensorFlow 的構建代理程式,從而對 GitHub 和 PyPi 上的 TensorFlow 版本進行供應鏈破壞。
 
利用這些漏洞,駭客可將惡意版本上傳到 GitHub 儲存庫,並獲得自行架設 GitHub 運行器(runner)上的遠端程式碼執行許可權,甚至檢索 tensorflow-jenkins 用戶的 GitHub 個人訪問權杖(PAT)。

TensorFlow 使用 GitHub Actions 自動化軟體構建、測試和部署流程。運行器指的是執行 GitHub Actions 工作流中任務的機器,可以自行架設,也可以由 GitHub 託管。

GitHub 在文件中聲明,建議用戶僅在私有儲存庫中使用自行架設運行器,因為公共儲存庫的分支可能建立執行危險程式碼的工作請求,在您的自行架設運行器設備上運行潛在危險的程式碼。
 
換言之,這允許任何貢獻者提交惡意拉取請求,在自行架設運行器上執行任意程式碼。

然而,這並不會對 GitHub 託管的運行器構成任何安全問題,因為每個運行器都是短暫的,並且是一個乾淨、隔離的虛擬機器,在任務執行結束後就會被銷毀。

研究人員表示,它能夠識別在自行架設運行器上執行的 TensorFlow 工作流,隨後找到以前的開發者提交的分支拉取請求(fork pull request)自動觸發了對應 CI/CD 工作,且無需批准。

因此,一個想要對目標儲存庫進行木馬化的駭客會修正一個拼寫錯誤或進行一個小但合法的程式碼更改,為此建立一個拉取請求,然後等待拉取請求被合併,以成為一個貢獻者。這將使他們能夠在惡意拉取請求時執行程式碼,而不會引起任何告警。

對工作流日誌的進一步檢查表明,自行架設運行器不僅是非短暫性的(也為持久性打開了大門),而且與工作流相關的 GITHUB_TOKEN 也附帶了廣泛的寫入許可權。

研究人員指出,因為 GITHUB_TOKEN 擁有 contents:write 許可權,它可以上傳版本到 https://github[.]com/tensorflow/tensorflow/releases/,駭客如果破壞這些 GITHUB_TOKEN,就可以在發佈資產中添加他們自己的檔案。
 
最重要的是, contents:write 許可權可以武器化,通過直接向 TensorFlow 儲存庫推送程式碼,秘密地將惡意程式碼注入到一個特性分支,並將其合併到主分支。

不僅如此,駭客還可以竊取發佈工作流中使用的 AWS_PYPI_ACCOUNT_TOKEN,以向 Python 套件索引(PyPI)註冊表進行身份驗證,並上傳惡意 Python .whl 文件,以便有效毒化套件。
研究人員說,駭客還可以利用 GITHUB_TOKEN 的許可權來危及 JENKINS_TOKEN 儲存庫金鑰,儘管這個金鑰並未在自行架設運行器上運行的工作流中使用。”
 
在 2023 年 8 月 1 日進披露後,專案維護人員在 2023 年 12 月 20 日解決了這些漏洞。GITHUB要求在自架運行器上運行的工作流之GITHUB_TOKEN 許可權更改為唯讀。

研究人員警告,隨著越來越多組織自動化CI/CD 流程,針對 CI/CD 攻擊正在增加。應用AI及機器學習的公司尤其脆弱,因為許多工作流需要大量的計算能力,而 GitHub 託管的運行器是無法提供的,因此自架運行器很普遍。

幾個公共 GitHub儲存庫,包括與 Chia Networks,Microsoft DeepSpeed 和 PyTorch 相關的儲存庫,容易受到自架 GitHub Actions 運行器進行惡意程式碼注入的影響。

本文轉載自TheHackerNews。