各位管理員:很抱歉,但這很可能是一個需要輪換密鑰的週末。
駭客在持續性的供應鏈攻擊中,幾乎入侵了 Aqua Security 廣泛使用的 Trivy 漏洞掃描器所有版本,這可能對開發者及其組織帶來廣泛的影響。
Trivy 維護者 Itay Shakury 在週五證實了這次入侵,此前曾有傳言和一個已被攻擊者刪除的討論串提及此事件。攻擊始於週四凌晨。完成後,威脅行為者利用竊取的憑證,強制推送了 Trivy Actions 標籤中的除一個之外的所有標籤,以及七個 setup-trivy 標籤,使其指向惡意依賴項。
強制推送(forced push)是一種 git 指令,它會覆蓋保護現有提交的預設安全機制。Trivy 是一款漏洞掃描器,開發者用它來偵測漏洞,以及在開發和部署軟體更新的管線中無意中硬編碼的驗證密鑰。該掃描器在 GitHub 上有 33,200 顆星,是一個高評級,表明其使用廣泛。
Shakury 寫道:「如果您懷疑您正在運行受感染的版本,請將所有管線密鑰視為已洩露,並立即輪換。」
安全公司 Socket 和 Wiz 表示,惡意軟體在 75 個受感染的 trivy-action 標籤中被觸發,它會徹底掃描開發管線,包括開發者機器,尋找 GitHub 權杖、雲端憑證、SSH 金鑰、Kubernetes 權杖,以及任何其他可能存在的密鑰。一旦找到,惡意軟體就會加密數據並將其發送至攻擊者控制的伺服器。
Socket 表示,最終結果是,任何使用引用受感染版本標籤的軟體的 CI/CD 管線,在 Trivy 掃描運行後就會執行程式碼。偽造的版本標籤包括廣泛使用的 @0.34.2、@0.33 和 @0.18.0。版本 @0.35.0 似乎是唯一未受影響的版本。
Wiz 研究人員寫道:「當惡意二進位檔執行時,它會同時啟動合法的 Trivy 服務和惡意程式碼。在我們的初步分析中,惡意程式碼透過主要和備用機制竊取密鑰。如果它偵測到它在開發者機器上,它還會寫入一個 base64 編碼的 Python 植入程式以實現持久性。」
惡意程序會收集環境變數,掃描系統中儲存的任何憑證,並列舉網路介面。然後,它會壓縮並加密數據,並嘗試透過 POST 請求至 https://scan.aquasecurtiy[.]org 進行竊取。如果失敗(返回非 2xx 狀態碼),惡意軟體會嘗試使用竊取的 GITHUB_TOKEN 來建立一個名為 tpcp-docs 的儲存庫,並將數據發布到那裡。
儘管大規模入侵始於週四,Shakury 表示,這源於上個月對 Trivy 掃描器的 Aqua Trivy VS Code 擴充功能的單獨入侵。在此事件中,攻擊者入侵了一個具有 Trivy GitHub 帳戶寫入權限的憑證。Shakury 表示,維護者已輪換權杖和其他密鑰作為回應,但該過程並非完全「原子化」,這意味著它沒有徹底移除 API 金鑰、憑證和密碼等憑證工件,以確保它們不會被惡意使用。
Socket 研究人員寫道:「這種[失敗]讓威脅行為者能夠執行已驗證的操作,包括強制更新標籤,而無需利用 GitHub 本身。雖然此階段使用的確切憑證尚未公開,但根本原因現已了解為早期憑證入侵的殘留存取權限。」
這種入侵技術偏離了典型的供應鏈攻擊,後者通常利用竊取的憑證毒害儲存庫,通常是透過推送新的提交。這種較新的方法使得入侵能夠繞過許多常見的防禦措施。
在取得 Trivy 憑證後,攻擊者入侵了 aquasecurity/trivy-action GitHub Action,但不是透過推送分支或建立新版本來達成,這會出現在提交歷史記錄中並觸發通知。相反,攻擊者強制推送了 75 個現有的版本標籤,使其指向新的惡意提交。這種技術涉及多層欺騙,值得仔細審查。
Git 標籤是指向提交 SHA 指紋的指標。引用這些標籤的 GitHub Actions 會將它們解析為指定的提交。透過強制將標籤從合法提交更新為攻擊者編寫的惡意提交,任何引用它們的工作流程都會自動開始拉取後者。
Socket 表示,威脅行為者(自稱為 Team PCP)使用的確切過程是:
威脅行為者,自稱為 TeamPCP,製作了冒充提交,並將其推送到 actions/checkout(同時偽裝使用者 rauchg)以及 aquasecurity/trivy(同時偽裝使用者 DmitriyLewen)。在 UTC 時間 17:43:37,Trivy 儲存庫的標籤被推送,觸發了發布。這導致了一個惡意的 checkout,從一個拼寫錯誤的網域(scan.aquasecurtiy[.]org,解析為 45.148.10.212)獲取了憑證竊取程式碼,並將後門二進位檔發布到 GitHub Releases、Docker Hub、GHCR 和 ECR。維護者此後已移除這些惡意工件。
攻擊者還入侵了服務帳戶,然後濫用其存取權限將惡意工作流程推送到 traceeshark 和 trivy-action,並從 Aqua(包括 GPG 金鑰以及 Docker Hub、Twitter 和 Slack 的憑證)竊取額外憑證。這些密鑰被竊取到一個 Cloudflare Tunnel C2(plug-tab-protective-relay.trycloudflare.com)。此外,76 個 trivy-action 標籤中有 75 個被強制推送為惡意版本,還有 7 個標籤也被強制推送。
到目前為止,尚未有任何關於使用受感染 Trivy 掃描器的開發者或組織遭到入侵的已知報告。鑑於該應用程式的普及性、資訊竊取程式的徹底性以及操作的隱蔽性,潛在的後果可能非常嚴重。所有 Trivy 使用者都應閱讀 Socket 和 Wiz 的部落格文章,並遵循所述的防禦步驟。