Breaking the Chain: Advanced Offensive Strategies in the Software Supply Chain | BBV, DEF CON 33
三句話摘要
軟體供應鏈攻擊的實戰技術與防禦盲點——從依賴混淆、NPX混淆到Poison Pipeline Execution的完整攻擊面。 軟體供應鏈已是APT與威脅行為體優先考慮的入口,開發者必須從依賴源頭、構建環境、部署流程全方位理解威脅,並實踐版本固定、強制完整commit SHA、倫理disclosure等防禦策略,方能有效降低風險。 供應鏈三層攻擊面與實際損失規模。軟體供應鏈由源代碼層(依賴解析)、構建層(CI/CD)、分發層(部署)組成,任一層被破壞都能導致下游公司大規模入侵。2023年59%的企業經歷供應鏈攻擊、平均應對時間一個月,全球經濟損失410億美元,這是昨日之患、今日之患、明日之患。
重點整理
重點- 1
供應鏈三層攻擊面與實際損失規模。軟體供應鏈由源代碼層(依賴解析)、構建層(CI/CD)、分發層(部署)組成,任一層被破壞都能導致下游公司大規模入侵。2023年59%的企業經歷供應鏈攻擊、平均應對時間一個月,全球經濟損失410億美元,這是昨日之患、今日之患、明日之患。
- 2
優雅的依賴混淆與變種NPX混淆。依賴混淆利用包管理器在公私包名解析邏輯中的漏洞,Consul案例中不到一小時就有Fortune 500開發者下載惡意包(獲得17K賞金)。NPX混淆則藉由二進位名稱與包名不必然相同的特性,當開發者執行npx時自動從公開registry臨時安裝執行,最高可獲30K賞金、影響4,500家企業。
- 3
繞過安全掃描的核心技術是建立自有HTTP registry。講者開發了一套縝密的躲避方案:識別掃描器IP段、ASN、user-agent,透過deny list機制選擇性投放payload,使惡意包能在公開生態存活超過一年而不被ban,甚至可竊取企業artifactory管理員token獲得全企業讀寫權限。
- 4
Poison Pipeline Execution的兩階段攻擊——cache poisoning權限提升。第一階段透過pull_request_target trigger + pre-install gadget獲得初始RCE(但無secrets),第二階段利用cache poisoning跨workflow竊取發布credentials,導致完整供應鏈被破壞。CrossFetch案例展示3,600萬次/周下載的套件可被一個pull request完全背門,下游多家公司共賠13K。
實用技巧與重點
乾貨- 2023年軟體供應鏈攻擊數據
- 惡意包增長率:156%
- 遭遇攻擊的企業比例:59%
- 平均應對時間:1個月
- 全球經濟損失:410億美元
- 預計2026年損失:800億美元以上
- Consul依賴混淆案例
- GitHub星數:28,000+
- 攻擊觸發耗時:1小時內
- Bug Bounty獎金:17,000美元
- 受害者:Fortune 500開發者
- 根本原因:舊版NPM不識別workspace概念
- NPX混淆案例
- 最高Bug Bounty獎金:30,000美元
- 影響公司數:4,500家
- 主要受害者行業:加密貨幣相關企業
- 攻擊向量:二進位名稱與包名不匹配
- CrossFetch case study
- 週下載量:3,600萬次
- 攻擊鏈:pull_request_target → pre-install gadget → cache poisoning → 竊取NPM token
- 下游企業Bug Bounty:3,000美元、10,000美元
- 修復方案:版本固定(version pinning)
- Google CloudBuild競賽條件
- 競賽窗口:~1秒
- 繞過approval的工具:Python輪詢腳本
- Google修復:5秒age off延遲
- 推薦最佳實踐:強制40字符完整commit SHA
- 掃描器繞過技術
- 自有HTTP registry優勢:實時log、動態payload替換、IP allow list
- Deny list規則累積:1年半時間、涵蓋中文、俄文、SaaS掃描商
- 惡意包存活時間:1年以上無ban
- 副收獲:可取得artifactory admin token
- 開源工具
- Gato-X(Adnan開發):自動化掃描GitHub Actions誤設定,支援MCP server
- Living off the Pipeline:構建管線gadget參考資源
- Cacher Act:可視化演示cache poisoning的教育型POC
- 倫理實踐標準
- Kill switch機制:proof of concept後立即下架惡意包
- 最小payload原則:whoami、pwd、hostname足以證明RCE
- GitHub前置檢查:驗證包名是否被廣泛使用
- 跨生態漏洞
- Git short SHA衝突:可觸發404誤導開發者/AI agent下載替代包
- 自主runner配置缺陷:bucket掛載、檔案cache可導致橫向移動
- 連接第三方構建系統的隱形RCE:某些企業repo看似無CI卻實際連接構建系統
結論
結論“軟體供應鏈已是APT與威脅行為體優先考慮的入口,開發者必須從依賴源頭、構建環境、部署流程全方位理解威脅,並實踐版本固定、強制完整commit SHA、倫理disclosure等防禦策略,方能有效降低風險。”
完整解析
詳細軟體供應鏈已成為現代軟體開發最隱蔽的致命盲點。供應鏈涵蓋源代碼層(依賴檔案與上游repos)、構建層(CI/CD管線)、分發層(部署與registry)三個環節,任何一環被破壞都能導致數千家下游公司同時淪陷。根據2023年的數據,軟體供應鏈攻擊增長了156%,全球59%的企業經歷過此類攻擊,平均應對時間長達一個月,造成的經濟損失達410億美元,預計到2026年將超過800億美元。這不再是明日之患,而是昨日之患、今日之患、明日之患的三重疊加。
在源代碼層,最優雅的攻擊是依賴混淆。它利用包管理器在解析公私包名時的邏輯漏洞。講者以Consul為例,該服務網路框架擁有28,000多個GitHub星,被廣泛用於業界。攻擊者發現Consul在定義開發依賴時使用了通配符,但這些依賴本應來自workspace(本地檔案系統),卻可被PNPM誤導從公開registry抓取。Friday night,講者在NPM public registry上佔據了相應的包名作為proof of concept,不到一小時就有Fortune 500公司的開發者下載了惡意包——該開發者正好使用了舊版NPM,不識別workspace概念,自動降級為從公開registry抓取。最終獲得17,000美元的Bug Bounty。更有趣的是NPX混淆,它利用二進位名稱與包名不必然相同的特性。當開發者執行 `npx package-name` 而該包不存在時,npx會臨時從registry安裝並執行其bin定義的二進位。攻擊者可猜測並佔據這些不匹配的二進位名稱獲得遠程代碼執行,最高曾獲30,000美元賞金,影響範圍達4,500家企業,特別是加密貨幣領域。
繞過安全掃描器是這項研究最核心的技術難點。傳統掃描採靜態分析或沙箱動態執行,但講者與合作者開發了一套縝密的躲避方案。關鍵洞察是:不讓掃描器看到真正的惡意payload。他們建立了自有的HTTP registry,每次掃描器抓取包時都會被識別(透過IP段、ASN、user-agent、request pattern),然後透過deny list機制選擇性投放payload——只有合法開發者才能下載真正的惡意包,掃描器永遠看不到。這套系統用了一年半時間累積了數百條規則來識別中文、俄文、各類SaaS掃描商的特徵。結果是惡意包能在NPM生態存活超過一年而不被ban。更意想不到的是,某些企業的artifactory會在registry table交互時洩露管理員token,給了講者讀寫整個企業artifactory的權限,從而獲得遠程代碼執行。
構建層的Poison Pipeline Execution威脅更為致命且獲利豐厚。GitHub Actions的 `pull_request_target` trigger設計允許簽出fork中的未審查程式碼,結合package.json的 `pre-install` gadget,任何人都能透過一個pull request獲得RCE。但要竊取secrets(如NPM token用於發布)需要權限提升,這時cache poisoning發揮了關鍵作用。GitHub Actions的cache以tar ball形式儲存,提取時預設允許path traversal,攻擊者可在第一個workflow中注入精心設計的cache內容,當第二個發布workflow消費該cache時,tar的path traversal特性允許攻擊者覆寫任意檔案。CrossFetch就是這樣被完全背門的——一個被3,600萬次/周下載的關鍵套件,講者透過fork、修改package.json、污染cache、等待release、竊取token、發布惡意版本的五步攻擊鏈完全控制了它。由於CrossFetch被多個下游企業依賴,講者從3家受害企業共獲13,000美元的Bug Bounty。
更深層的威脅來自供應鏈的系統級漏洞。講者示範了如何利用Git short SHA衝突觸發404誤導開發者或AI agent下載替代包,以及Google CloudBuild中的競賽條件——maintainer的comment approval與attacker的commit push之間存在約1秒的時間窗口,使用簡單的Python輪詢腳本即可繞過整個approval機制。最有趣的是AI agent的新型攻擊向量——當error message中含有精心構造的「系統prompt」時,某些AI agent會誤以為這是合法指令,主動修改依賴配置下載攻擊者的套件。這預示著一個新的威脅範式。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。


