供應鏈攻擊組織 TeamPCP 再度出手,這次
鎖定 PyPI 上熱門的 Python 套件 LiteLLM。LiteLLM 是開源函式庫(open-source library),可透過單一 API(API)串接多個大型語言模型(LLM,Large Language Model)供應商,下載量極高。
資安業者 Endor Labs 指出,
攻擊者已發布兩個惡意版本 LiteLLM 1.82.7 與 1.82.8,當套件被匯入時就會觸發隱藏載荷,部署資訊竊取程式蒐集敏感資料。TeamPCP 也宣稱此次外洩規模達數十萬台裝置,但相關數字尚未獲得獨立驗證。
研究人員追蹤發現,惡意程式碼被插入
litellm/proxy/proxy_server.py,並以 Base64 編碼包裝,執行時再解碼並載入。更值得注意的是,1.82.8 版本還會在環境中安裝 .pth(.pth)檔案 litellm_init.pth。由於 Python 會在啟動時自動處理 .pth 檔案,代表即使未直接使用 LiteLLM,只要執行 Python,也可能讓惡意程式隨之啟動。
外媒分析指出,該載荷會部署 TeamPCP Cloud Stealer 變種,並加入持久化機制。攻擊流程大致分為三階段:
先蒐集憑證,再嘗試在 Kubernetes 叢集中橫向移動,最後透過 systemd(systemd)後門維持存取,並持續自遠端下載更多惡意檔案。相關通訊網域包含 checkmarx[.]zone。竊得資料則會被打包為 tpcp.tar.gz,並送往 models.litellm[.]cloud。
目前 PyPI 已移除 1.82.7 與 1.82.8,並以 1.82.6 作為最新乾淨版本。若組織曾安裝或在 CI/CD(CI/CD)流程中使用 LiteLLM,建議以「已曝露」處理,優先完成盤點與憑證輪替。
防護建議
盤點是否曾安裝 LiteLLM 1.82.7 或 1.82.8,必要時降級或重建乾淨環境
- 立即輪替(rotate)所有 secrets、tokens、credentials,包含雲端與 CI/CD 使用的存取金鑰
- 檢查是否出現持久化跡象,例如 ~/.config/sysmon/sysmon.py 與可疑的 systemd 服務
- 排查可疑檔案,例如 /tmp/pglog 與 /tmp/.pg_state
- 檢視 Kubernetes kube-system 命名空間是否有未授權 pods,並監控對外連線是否命中已知惡意網域
本文轉載自 BleepingComputer。