鏈?zhǔn)录憫?yīng)_從惡意組件到全鏈路排查)
軟件供應(yīng)鏈?zhǔn)录憫?yīng)實戰(zhàn)發(fā)現(xiàn)惡意組件后如何完成全鏈路排查摘要供應(yīng)鏈安全建設(shè)不能只關(guān)注“如何防止攻擊發(fā)生”。企業(yè)還必須回答如果今天發(fā)現(xiàn)某個依賴被投毒我們能不能在 30 分鐘內(nèi)知道哪些產(chǎn)品受影響軟件供應(yīng)鏈?zhǔn)录奶厥庑栽谟谝粋€組件、構(gòu)建系統(tǒng)或發(fā)布憑據(jù)被攻陷后影響可能跨越多個倉庫 多個制品 多個客戶 多個環(huán)境本文提供一套圍繞 SBOM、VEX、制品證據(jù)和 CI/CD 日志的供應(yīng)鏈?zhǔn)录憫?yīng)流程。1. 供應(yīng)鏈?zhǔn)录推胀┒词录惺裁床煌胀┒碈VE ↓ Find Hosts ↓ Patch供應(yīng)鏈?zhǔn)录赡苁荕aintainer Compromise ↓ Malicious Package ↓ Multiple Builds ↓ Multiple Products ↓ Multiple Customers核心問題不只是“哪里有漏洞”而是“這個不可信輸入傳播到了哪里”2. 常見供應(yīng)鏈?zhǔn)录愋烷_源組件被投毒私有依賴被替換構(gòu)建 Runner 被入侵CI Token 泄露發(fā)布賬號被接管鏡像倉庫被篡改制品簽名密鑰泄露基礎(chǔ)鏡像被污染AI 模型或數(shù)據(jù)集被替換。3. 第一階段立即凍結(jié)信任鏈如果確認(rèn)高風(fēng)險供應(yīng)鏈?zhǔn)录谝徊酵ǔ2皇恰榜R上升級版本”而是先阻止進(jìn)一步傳播。建議立即Pause Release Revoke Credential Disable Compromised Workflow Quarantine Package Freeze Artifact Promotion避免新的惡意制品繼續(xù)生成。4. 第二階段確定 IOC 和受影響對象需要收集Package Name Version Digest Publisher Publish Time Commit Build ID Registry Signature OIDC Identity如果是容器鏡像還要確認(rèn)Image Digest Base Image Digest Layer Digest5. SBOM 在事件響應(yīng)中的價值沒有 SBOM 時安全團(tuán)隊問 哪些產(chǎn)品使用了 package-X1.2.3 研發(fā)團(tuán)隊 我們查一下……可能要幾小時甚至幾天。有 SBOMpackage-X1.2.3 ↓ Query ↓ Product A Product C Service F可以顯著縮短影響面定位時間。6. 建立 Component → Product 反向索引很多團(tuán)隊只有Product → SBOM真正用于響應(yīng)時還需要Component → Products例如log4j-core2.14.1 ├── CRM 3.2 ├── Payment 5.6 └── Gateway 1.8這是供應(yīng)鏈?zhǔn)录憫?yīng)的核心數(shù)據(jù)結(jié)構(gòu)之一。7. 第三階段判斷“存在”還是“受影響”組件存在Component Present不一定等于Exploit Path Exists因此需要結(jié)合VEXReachabilityRuntime Exposure配置狀態(tài)部署環(huán)境。形成Affected Not Affected Under Investigation Fixed8. 第四階段追溯構(gòu)建鏈如果攻擊涉及 CI/CD就不能只查組件。還要追溯Source ↓ Commit ↓ Workflow ↓ Runner ↓ Build ↓ Artifact ↓ Registry重點確認(rèn)哪些制品由被攻陷 Runner 構(gòu)建即使制品中暫時沒發(fā)現(xiàn)惡意代碼也可能需要重新構(gòu)建。9. Provenance 的響應(yīng)價值如果所有制品都有 ProvenanceArtifact Digest → Build ID → Workflow → Source Commit就可以迅速回答哪些發(fā)布物來自這個被攻陷的構(gòu)建環(huán)境這是 Provenance 除合規(guī)之外最實際的運營價值之一。10. 第五階段重新建立可信基線供應(yīng)鏈?zhǔn)录幹貌荒苤蛔鰀elete malware還要restore trust常見動作輪換發(fā)布憑據(jù)重建 Runner更換簽名身份從可信 Commit 重建重新生成 SBOM重新生成 Provenance重新簽名重新發(fā)布制品。11. 為什么需要“可信重建”假設(shè)package v1.4.2曾經(jīng)經(jīng)過被入侵 Runner。即使掃描沒發(fā)現(xiàn)惡意行為我們也無法證明它可信最穩(wěn)妥的是Trusted Source Clean Builder ↓ Rebuild ↓ New Digest ↓ New Signature12. 第六階段客戶與內(nèi)部通知供應(yīng)鏈?zhǔn)录枰鐖F(tuán)隊溝通Security Engineering Product Legal Customer Support Management通知應(yīng)該明確受影響產(chǎn)品受影響版本是否確認(rèn)惡意利用臨時緩解措施修復(fù)版本升級路徑后續(xù)調(diào)查狀態(tài)。13. 建議建立 Crisis Management RunbookCISA 的軟件供應(yīng)鏈實踐材料強調(diào)應(yīng)把 SBOM/VEX 與漏洞和危機響應(yīng)流程銜接起來。企業(yè)可以提前建立Supply Chain Incident Runbook包含觸發(fā)條件 指揮角色 技術(shù)負(fù)責(zé)人 產(chǎn)品負(fù)責(zé)人 客戶溝通 證據(jù)保全 修復(fù)審批 恢復(fù)條件14. 一個 60 分鐘響應(yīng)框架0—15 分鐘確認(rèn)事件 凍結(jié)發(fā)布 吊銷關(guān)鍵憑據(jù) 建立 War Room15—30 分鐘提取 IOC 查詢 SBOM 識別受影響產(chǎn)品 鎖定構(gòu)建批次30—60 分鐘建立優(yōu)先級 生成 VEX/影響判斷 啟動重建 準(zhǔn)備內(nèi)部通知15. 關(guān)鍵指標(biāo)建議記錄指標(biāo)目標(biāo)Component-to-Product 查詢時間分鐘級受影響產(chǎn)品確認(rèn)時間持續(xù)下降憑據(jù)吊銷時間分鐘級可信重建時間可量化客戶通知時間按制度要求SBOM 覆蓋率接近 100%16. 一次事件結(jié)束后必須做什么Postmortem 不應(yīng)該只寫攻擊者做了什么還要問為什么惡意輸入能進(jìn)入 為什么沒有被提前阻斷 為什么影響面定位慢 為什么證據(jù)不完整 為什么能繞過發(fā)布門禁最終改進(jìn)Prevention Detection Traceability Response總結(jié)成熟的軟件供應(yīng)鏈安全必須同時具備Prevent Detect Trace Contain Rebuild RecoverSBOM、VEX、Provenance、簽名和構(gòu)建日志的價值不只是為了“合規(guī)有材料”更重要的是當(dāng)真正的供應(yīng)鏈?zhǔn)录l(fā)生時能夠快速判斷影響面并重新建立信任。