“所有在2022年12月25日至12月30日期間,在Linux系統安裝PyTorch-nightly(每日更新版)的用戶,請立即卸載!”上述消息來自PyTorch官方的一則最新聲明。
據官方透露,他們剛剛識別出一個與框架的“torchtriton”庫同名的惡意依賴項,該依賴項在PyPI代碼庫上被破壞,並運行惡意二進制文件。
攻擊者試圖竊取用戶IP地址、當前工作目錄等敏感數據並上傳到指定地址,相關惡意代碼在從PyPI刪除之前已被下載2300+次。
不過就在事情一面倒時,攻擊者卻自己發表聲明,堅稱並無惡意,一切隻是為道德研究。
那麼——
到底發生什麼?
具體事情是這樣的:
攻擊者在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密鑰。
不過,最好的解決方案是實施最小權限原則,不要給程序授予任何不必要的權限。
另外,或許也可以考慮請雇人檢查軟件包。
用戶這邊,如果你記不清自己下載的是哪個版本,官方給出一個檢查的辦法:
事件後續
在官方聲明中,PyTorch也提出他們的解決策略。
PyTorch將“ torchtriton”依賴項重命名為“ PyTorch- triton”,並在PyPI上保留一個虛擬包,以防止類似的攻擊。
同時,官方也發推呼籲在2022年12月25日至12月30日期間下載惡意版本的用戶立即卸載,並使用最新版本。
事情進一步發酵後,有媒體順藤摸瓜,根據被盜數據傳輸到的域名,找到該域名背後的所有者。
公共記錄顯示,該域名於12月21日剛剛註冊,就在Pytorch事件發生的幾天前。
據Bleeping Computer消息,這位所有者堅稱自己的做法“不是惡意的”,隻是為道德研究,而且所有數據都已刪除。
我為此承擔責任並道歉。與此同時,我想向你們保證,我無意竊取別人的秘密。
我已經在12月29日(幾乎是官方宣佈的三天前)在確認漏洞存在後向Facebook報告這個問題。
我還通過HackerOne向其他可能受到影響的公司提交報告。
如果我是惡意的,我將永遠不會填寫任何漏洞賞金報告,而是隻把數據出售給出價最高的人。
對於發送許多用戶敏感數據的原因,他進一步解釋:
在過去調查依賴混淆攻擊時,大多數情況下不可能根據受害者的主機名、用戶名和CWD來識別他們。
這就是我這次決定發送更多數據的原因,但是回顧過去,這是一個錯誤的決定,我應該更加謹慎。
對於攻擊者的這一說法,目前PyTorch官方還未做出回應。
對這次PyTorch事件,你怎麼看?