0.69.4、0.69.5、0.69.6。三個連號版本,72小時內連續發布,Docker Hub 上能拉取,GitHub Release 頁面卻查無此人。
這是 Aqua Security 旗下明星開源工具 Trivy 上周的真實遭遇。作為容器安全掃描領域的頂流項目,Trivy 在 GitHub 坐擁 22k+ Star,被無數 CI/CD 流水線當成基礎設施。但這次,攻擊者沒碰代碼倉庫,而是直接劫持了發布管道——你信任的掃描器,成了別人埋雷的通道。
投毒手法:GitHub Actions 的權限縫隙
攻擊者瞄準的是 GitHub Actions 的 workflow 觸發機制。Trivy 的發布流程依賴自動化流水線:代碼打標簽 → 觸發構建 → 推送 Docker Hub。問題出在標簽權限的邊界模糊。
GitHub Actions 默認允許特定條件下的標簽觸發,而攻擊者找到了一種方式:通過偽造或劫持的提交,讓 workflow 誤以為這是合法發布。Trivy 維護團隊在事后復盤里提到,攻擊者利用了「標簽推送即可觸發發布」的自動化邏輯,沒碰主分支代碼,卻能讓官方賬號"代發"惡意鏡像。
更諷刺的是,Trivy 本身就是用來掃漏洞的工具。用戶每天用它檢查鏡像有沒有 CVE,結果掃描器自己先被塞了信息竊取木馬(infostealer)。這就像你請了個保鏢,保鏢的制服里藏著監聽器。
三個版本的時間線:快得像正常迭代
0.69.4 發布于 4 月 22 日,0.69.5 緊隨其后,0.69.6 又在 24 小時內上線。這種節奏在開源社區不算異常——修個緊急 bug,連發幾個補丁,用戶早就習慣了自動拉 latest 標簽。
但這次,GitHub Release 頁面是空的。攻擊者只推了 Docker Hub,沒同步發 Release Notes。這個細節成了事后排查的關鍵線索:正常維護者不會這樣操作,但自動化流水線被劫持時,Release 頁面的缺失反而成了"正常"的漏洞。
Aqua Security 的響應速度算快的。發現異常后,團隊在兩小時內下線了問題鏡像,并發布了 0.69.7 干凈版本。但問題在于,CI/CD 管道的緩存機制和鏡像層的復用,讓"下線"不等于"清除"。如果你的流水線在 22-24 日之間拉過 latest,惡意層可能已經躺在本地倉庫里了。
IOC 清單:攻擊者留下了什么
被植入的 infostealer 主要針對云環境憑證。具體行為包括:遍歷 ~/.aws、~/.azure、~/.config/gcloud 等目錄,收集 access key 和 token;掃描環境變量中的敏感字符串;嘗試連接外部 C2 服務器。
這些手法并不新鮮,但載體選擇很刁鉆。Trivy 的運行場景通常是 CI 環境——權限高、憑證多、且往往有跨云訪問能力。攻擊者相當于在 DevOps 的心臟位置插了根管子。
目前公開的 IOC 包括特定路徑下的可疑二進制文件,以及幾個硬編碼的 C2 域名。Aqua 建議用戶檢查 4 月 22-24 日之間的鏡像拉取日志,重點比對鏡像 digest 而非 tag。tag 可以被復用指向不同 digest,這是很多人忽略的細節。
這不是 Trivy 第一次被針對
2024 年 3 月,Trivy 就經歷過類似的供應鏈攻擊。那次是惡意 PR 試圖植入后門,被代碼審查攔下。這次升級了——不跟你玩代碼博弈,直接劫持發布管道。
兩次攻擊的共同點:都盯著"自動化"的便利性與安全性的 trade-off。GitHub Actions 讓開源維護者從繁瑣的發布工作中解脫,但也把攻擊面從"代碼倉庫"擴展到了"整個 workflow 生態"。
維護者現在的修補方向包括:強制要求發布前的人工審批、增加多因素驗證的簽名步驟、以及分離構建與推送的權限。但這些都會拖慢發布節奏——安全與效率的拉鋸,從來不是靠技術能單方面解決的。
用戶側:你該檢查什么
如果你在用 Trivy,先別 panic。確認幾件事:你的鏡像拉取策略是 digest 固定還是 tag 浮動?CI 環境里有沒有 4 月 22-24 日的構建記錄?本地/私有倉庫是否緩存了問題版本?
對于使用 latest 標簽的團隊,這是第 N 次教訓了。latest 在 Docker 生態里是個動態指針,今天指向 0.69.7,明天可能被攻擊者指回 0.69.6。固定 digest 麻煩,但麻煩是安全的一部分。
Aqua 提供了腳本用于批量檢測可疑鏡像層。更務實的做法是:把這次事件寫進你的 incident response playbook,下次換工具時,先問發布流程有沒有雙人控制,而不是只看功能對比表。
0.69.7 的 Release Notes 里,維護者加了一行小字:"We have rotated all release-related credentials." 憑證輪換完成,流水線重啟。但那個空的 0.69.4-6 Release 頁面,會一直留在倉庫里,像個沒填的坑。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.