PyTorch機器學習框架遭遇惡意依賴供應鏈鏈攻擊。
與Keras 和 TensorFlow類似,PyTorch是基于Python/ target=_blank class=infotextkey>Python的開源機器學習框架。PyTorch廣泛用于計算機視覺和自然語言處理任務。12月31日,PyTorch團隊稱其發現了PyTorch中的惡意依賴,受到供應鏈攻擊。
供應鏈攻擊
PyTorch團隊識別出了一個與PyTorch框架'torchtriton'庫名字一樣的惡意依賴。攻擊者在PyPI中上傳了一個與torchtriton'庫名字一樣的惡意依賴庫,實現了供應鏈攻擊。因此,攻擊者可以通過依賴攻擊向量來識別成功入侵開源學習框架。
惡意torchtriton庫的主要功能包括:
獲取系統信息:
來自/etc/resolv.conf 的nameservers;
來自gethostname() 的hostname;
來自getlogin() 的當前 username;
來自getcwd() 的當前working directory name。
環境變量;
讀取系統文件:
/etc/hosts
/etc/passwd
$HOME/*
$HOME/.gitconfig
$HOME/.ssh/*
并通過到域名*.h4ck[.]cfd的加密的DNS查詢來上傳包括文件內容在內的以上信息,使用的DNS服務器為wheezy[.]io。文件上傳功能的文件大小限制為99999字節,還會上傳$HOME 目錄的前1000個文件。
修復補丁
PyTorch團隊建議通過2022年12月25日到12月30日之間通過pip安裝PyTorch的用戶,盡量卸載torchtriton和PyTorch,并使用12月30日之后的最新版本。卸載惡意依賴庫的命令如下:
$ pip3 uninstall -y torch torchvision torchaudio torchtriton$ pip3 cache purge
PyTorch團隊已經將'torchtriton'庫重命名為'pytorch-triton'以預防潛在的類似攻擊。
圖 PyTorch重命名'torchtriton'庫
此外,用戶還可以通過以下命令來確定是否受到該供應鏈攻擊的影響:
python3 -c "import pathlib;import importlib.util;s=importlib.util.find_spec('triton');affected=any(x.name == 'triton' for x in (pathlib.Path(s.submodule_search_locations[0]if s is not None else '/' ) / 'runtime').glob('*'));print('You are {}affected'.format('' if affected else 'not '))"
截止2021年12月31日,BleepingComputer發現惡意'torchtriton' 依賴在上傳一周內已經下載超過2300次。
https://pytorch.org/blog/compromised-nightly-dependency/#how-to-check-if-your-python-environment-is-affected
參考及來源:https://www.bleepingcomputer.com/news/security/pytorch-discloses-malicious-dependency-chain-compromise-over-holidays/