" 所有在 2022 年 12 月 25 日至 12 月 30 日期間,在 Linux 系統安裝了PyTorch-nightly(每日更新版)的用戶,請立即卸載!"
上述消息來自 PyTorch 官方的一則最新聲明。
據官方透露,他們剛剛識别出一個與框架的 "torchtriton" 庫同名的惡意依賴項,該依賴項在 PyPI 代碼庫上被破壞,并運行惡意二進制文件。
不過就在事情一面倒時,攻擊者卻自己發表了聲明,堅稱并無惡意,一切隻是為了道德研究。
那麼——
到底發生了什麼?
具體事情是這樣的:
攻擊者在Python 的官方索引庫:PyPI (Python Package Index),創建了一個叫 "torchtriton" 的 Python 軟件包。
為何取這個名字?
當然是故意的。
這樣就能和 PyTorch 本身有的一個包名字相匹配,好比玩起了 Cosplay。
然後,由于名字相同," 假 torchtriton" 就被跟着上傳到了 PyPI 中。
又因為 PyPI 索引具有優先權,所以假 torchtriton 就被默認安裝到用戶的設備上了,而真正的官方版本卻被擱置到一旁。
這就是所謂的供應鍊攻擊,在公共軟件包索引上,被托管的軟件包之間的的依賴關系都受到了直接影響。
不出所料,這個假 torchtriton 自帶一肚子壞水:
它比官方版多了上傳敏感數據的代碼,還包含一個惡意的 triton 二進制文件。
一旦被安裝在用戶設備上,它就可以入侵系統,竊取用戶的重要數據,比如:主機名、用戶名、系統中的已知用戶,以及 SSH 密鑰等。
據悉用戶的列表是從 /etc/passwd 中提取的,幸運的是,它實際上并不包含任何密碼或密碼哈希值。
至于 SSH 密鑰,這是安全外殼 (SSH)協議中使用的安全訪問憑證,也是 Linux 服務器運維的關鍵。
有網友指出:
關于 SSH 密鑰,Linux 存在一些漏洞,而 iOS 和 Android 的安全模型就不會允許 Python 軟件包竊取 SSH 密鑰。
不過,最好的解決方案是實施最小權限原則,不要給程序授予任何不必要的權限。
另外,或許也可以考慮請雇人檢查軟件包。
輸入以下命令,在 torchtriton 包(PYTHON_SITE_PACKAGES/triton/runtime/triton)中搜索惡意二進制文件,然後就能看到在當前的 Python 環境是否受到影響。
事件後續
在官方聲明中,PyTorch 也提出了他們的解決策略。
PyTorch 将 " torchtriton" 依賴項重命名為 " PyTorch- triton",并在 PyPI 上保留了一個虛拟包,以防止類似的攻擊。
事情進一步發酵後,有媒體順藤摸瓜,根據被盜數據傳輸到的域名,找到了該域名背後的所有者。
公共記錄顯示,該域名于 12 月 21 日剛剛注冊,就在 Pytorch 事件發生的幾天前。
據 Bleeping Computer 消息,這位所有者堅稱自己的做法 " 不是惡意的 ",隻是為了道德研究,而且所有數據都已删除。
我為此承擔責任并道歉。與此同時,我想向你們保證,我無意竊取别人的秘密。
我已經在 12 月 29 日 ( 幾乎是官方宣布的三天前 ) 在确認漏洞存在後向 Facebook 報告了這個問題。
我還通過 HackerOne 向其他可能受到影響的公司提交了報告。
如果我是惡意的,我将永遠不會填寫任何漏洞賞金報告,而是隻把數據出售給出價最高的人。
對于發送許多用戶敏感數據的原因,他進一步解釋:
在過去調查依賴混淆攻擊時,大多數情況下不可能根據受害者的主機名、用戶名和 CWD 來識别他們。
這就是我這次決定發送更多數據的原因,但是回顧過去,這是一個錯誤的決定,我應該更加謹慎。
對于攻擊者的這一說法,目前 PyTorch 官方還未做出回應。
對這次 PyTorch 事件,你怎麼看?
參考鍊接:
[ 1 ] https://twitter.com/pytorch/status/1609334425384517633
[ 2 ] https://www.bleepingcomputer.com/news/security/pytorch-discloses-malicious-dependency-chain-compromise-over-holidays/
[ 3 ] https://thehackernews.com/2023/01/pytorch-machine-learning-framework.html
[ 4 ] https://news.ycombinator.com/item?id=34202662