本篇文章更新時間:2026/03/25
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持 。
內容目錄
危險的 .pth:一次供應鏈攻擊如何悄悄入侵你的 Python
編輯前言:最近在 GitHub 上看到一篇關於 litellm 套件遭到植入惡意程式的問題。這起事件不只是「某個版本出了 bug」而已,而是一個完整且高風險的供應鏈攻擊案例。
本文內容源自 GitHub 議題:Security: CRITICAL: Malicious litellm_init.pth in litellm 1.82.8 — credential stealer。
核心觀點 (Key Takeaways)
- litellm==1.82.8 被植入惡意
.pth,會在 任何 Python 程式啟動時 背後執行 credential stealer。 - 攻擊者蒐集各種敏感資訊:環境變數、SSH 金鑰、雲端憑證、Kubernetes、Docker、甚至加密貨幣錢包。
- 所有蒐集到的資料經 AES 加密後,再透過 RSA 公鑰加密 session key,最後送到攻擊者的伺服器
models.litellm.cloud。
深入解析
這起事件最令人震驚的地方,不是惡意程式本身的複雜度,而是它利用了 Python .pth 的特性。原文指出:
「.pth files in site-packages/ are executed automatically by the Python interpreter on startup — no import needed.」
換句話說,只要你的系統裝過 litellm==1.82.8,攻擊程式就已經在你每次執行 Python 時被觸發,無論你是否有 import litellm。
惡意程式做了什麼?
原文把攻擊流程拆成兩階段,我整理如下:
-
第一階段:大量蒐集敏感資訊
包含你能想到的大部分開發/部署相關的密鑰: -
SSH 金鑰、Git 憑證
-
AWS / GCP / Azure 認證
-
Kubernetes config 與 secret
-
Docker config
-
package manager token(npmrc、vault-token 等)
-
shell histories
-
加密貨幣錢包資料夾
-
SSL/TLS 私鑰
幾乎等於把機器的心臟掏空一次。
-
第二階段:加密後外傳
攻擊者不是粗糙地直接 POST raw data,而是:
-
先用 AES-256 CBC 加密資料
-
再用一把硬編碼的 4096-bit RSA 公鑰 加密 AES session key
-
打包成
tpcp.tar.gz -
傳到
https://models.litellm.cloud/這個步驟顯示攻擊者十分專業,甚至有意規避 IDS 或惡意流量判定。
為什麼這次特別危險?
因為這是一種 供應鏈攻擊。也就是說使用者完全無法從程式碼端避免,只要用 pip 裝這個版本,你就被植入後門。
筆者心得與啟發
老實說,看完這篇議題,我第一個反應是:我們可能低估了 PyPI 套件供應鏈的風險。有些人覺得只有 JavaScript/npm 會出包,但這次事件提醒我——Python 包含的攻擊面一點也不少。
幾個我認為值得帶走的提醒:
- 不要再把 pip install 視為「安全但便利」的事情了。每個安裝行為都可能改變你的執行環境。
- .pth 是 Python 生態系中的高風險攻擊點。很多開發者甚至不知道它會在 interpreter 啟動時自動執行。
- 團隊要建立「套件信任模型」。例如統一使用內部鏡像、固定版本、開源依賴掃描等。
- 最重要的是:如果你的系統曾安裝 litellm==1.82.8,你必須旋轉所有密鑰。攻擊者已經完整取得你的環境變數與憑證,不能僥倖。
這起事件還在持續更新,如果你也依賴 litellm 或正在使用相關生態系,建議密切關注原始議題的後續進展。
