PyTorch Lightning 2.6.2 藏沙蟲惡意碼,3 步驟自保別被扒光金鑰

PyTorch Lightning 2.6.2 藏沙蟲惡意碼,3 步驟自保別被扒光金鑰

PyTorch Lightning 2.6.2 藏沙蟲惡意碼,3 步驟自保別被扒光金鑰

連 AI 訤都淪陷!PyTorch Lightning 2.6.2 被植入「沙蟲」惡意碼

爬完文想裝個 PyTorch Lightning 來跑模型?先等等!資安公司 Semgrep 剛剛揭露,熱套件 lightning 的 2.6.2 與 2.6.3 版被植入代號「Shai-Hulud」的惡意碼,只要你在 CI、本機或任何一台電腦 pip install lightning,駭客就能打包帶走 GitHub Token、雲端金鑰,甚至連 Azure Key Vault 裡的密碼都直接外洩。

為什麼台灣工程師特別危險?

PyTorch Lightning 是台灣 AI 圈最愛用的訓練框架,從台大、清大實驗室到新創公司幾乎人手一套。只要你的專案裡出現以下版本號,就代表已經踩雷:

  • lightning==2.6.2
  • lightning==2.6.3

更糟的是,這波攻擊鎖定「開發者電腦」與「CI 流水線」,也就是你本地筆電、學校工作站、GitHub Actions、GitLab Runner 全部中鏢。駭客只要拿到你存在裡的雲端憑證,就能開機器挖礦、偷資料、甚至把整個專案刪光光。

駭客到底偷了什麼?

根據 Semgrep 報告,惡意碼會在背景做這些事:

  1. 掃描 80+ 個常見路徑找憑證檔,包括:

    • .env.aws/credentials~/.ssh/id_rsa
    • 任何含有 ghp_gho_npm_ 的 token 檔(最大 5 MB)
  2. 直接呼叫 Azure DefaultAzureCredential 列舉你帳號下的所有訂閱,並把 Key Vault 面的密碼全部下載。

  3. 立即 HTTPS POST 到 C2 伺服器,走 443 埠,外觀就像一般 HTTPS 流量,防火牆也擋不了。

  4. 在專案裡植入持久化檔案,例如 .claude/.vscode/ 目錄,下次你打開 VS Code 又自動執行。

3 步驟自救:現在就做,別等週末

步驟 1:檢查你的環境

# 看有沒有踩到地雷版本
pip list | grep -E "lightning\s+2\.6\.[23]"

# 有的話立刻移除
pip uninstall lightning -y

步驟 2:全域搜尋可疑資料夾

# 任何專案出現這兩個資料夾都要提高警覺
find . -type d -name ".claude" -o -name ".vscode" | xargs ls -la

如果裡面出現 __pycache__ 以外的 .py.js 檔,先別打開,直接打包丟垃圾桶。

步驟 3:重設所有 Token 與金鑰

  • GitHub:Settings → Developer settings → Personal access tokens → 全刪重建
  • AWS:IAM 控制面板 → 把舊 key 設成停用 → 建立新 key
  • Azure:Portal → Key Vault → 把所有 Secret 轉一圈
  • 公司內部 Slack、Notion、Docker Hub 只要有綁定 token 都重來

記得:不要只刪不建,刪完立刻換新,否則你的 CI 會直接斷頭。

後續怎麼防?給懶惰工程師的三個懶人包

  1. 鎖版本+雜湧簽名
    requirements.txt 裡指定「雜湊」而不是「版號」,例如:

    lightning==2.6.1 \
        --hash=sha256:abcd1234...

    這樣即使駭客上傳惡意版,pip 也裝不進去。

  2. CI 加一道「乾淨容器」
    GitHub Actions 步驟裡多加:

    - name: pip install in clean container
      runs-on: ubuntu-latest
      container: python:3.11-slim

    讓套件先裝在一次性容器,就算中鏢也帶不走主機金鑰。

  3. 用 Semgrep 免費掃
    官方已把 IOC 規則開源,裝好 CLI 後直接跑:

    semgrep --config=auto .

    有問題它會用紅字噴你,比人工肉眼快 100 倍。

結語:AI 工具再好用,也別盲目 pip

這次事件再次提醒,「套件」不等於「安全」。下次看到教學文叫你 pip install 某某 時,先瞄一眼版本號、發布日期、GitHub issue 有沒有哀號聲,再決定要不要按下 Enter。現在就打開終端機,照著上面三步驟檢查一遍,確定沒踩雷才能安心繼續調模型!