近期的供應鏈攻擊透過流行的 Polyfill JS 專案注入惡意軟體,入侵了超過 10 萬個網站。
Polyfill JS 庫廣泛用於支援較舊的 Web 瀏覽器,現已成為複雜的供應鏈攻擊的最新受害者。此次攻擊是在一家中國公司於 2024 年 2 月收購與 Polyfill 相關的域名和 GitHub 帳戶後發生的。自收購以來,域名 cdn.polyfill.io 已被用來向嵌入該庫的任何網站分發惡意軟體。Polyfill 的知名使用者包括 JSTOR、Intuit 和世界經濟論壇。
Sansec 的分析顯示,該惡意程式碼基於 HTTP 標頭動態生成,專門針對移動使用者。該惡意軟體的一個特定變種會將使用者重定向到虛假的 Google Analytics 域名 (www.googie-anaiytics.com),進而將使用者引導至體育博彩網站。該惡意軟體包含多項複雜的功能以避免被發現,例如僅在特定時間在特定移動裝置上啟用,並在管理員使用者或網路分析服務存在的情況下停用。
Polyfill JS 惡意軟體
Sansec 的取證團隊解碼了該惡意軟體的樣本,揭示了其攻擊方法和目標。該惡意軟體的程式碼包含針對逆向工程的保護措施,並延遲執行以逃避網路分析服務的檢測。這確保了它不會出現在網站統計資訊中,從而更難追蹤感染源。
以下是該惡意軟體行為的細分:
- 該惡意軟體會檢查使用者是否在使用移動裝置。
- 移動使用者被重定向到使用虛假 Google Analytics 域名的體育博彩網站。
- 該程式碼僅在特定時間啟用以避免被發現和分析。
- 當檢測到管理員使用者或發現某些網路分析服務時,惡意軟體就會停用。
影響和建議
Polyfill 的原作者建議停止使用,並指出現代瀏覽器不再需要此類庫。對於仍需要 Polyfill 功能的使用者,可以使用 Fastly 和 Cloudflare 提供的可靠替代方案。
此次攻擊凸顯了監控軟體供應鏈中依賴項的重要性。Sansec 建議使用其免費的內容安全策略 (CSP) 監控服務 Sansec Watch 來檢視使用者正在載入的程式碼。此外,他們的 eComscan 後端掃描程式已更新,可檢測受感染的 Polyfill 庫的例項。
攻擊指標 (IoC)
- 重定向網址:https://kuurza.com/redirect?from=bitget
- 惡意軟體:https://www.googie-anaiytics.com/html/checkcachehw.js
- 假冒 Google Analytics:https://www.googie-anaiytics.com/ga.js
此次 Polyfill JS 供應鏈攻擊事件再次提醒我們開源依賴項中固有的漏洞。我們敦促開發人員認真審查和監控其軟體供應鏈,用可信賴的替代方案替換過時的庫,並利用安全工具有效檢測和緩解此類威脅。
Polyfill JS
Polyfill JS 是一種用於在舊版瀏覽器實現現代功能的JavaScript程式碼。它的主要作用是:
- 相容性支援:為避免某些新功能的舊瀏覽器提供功能實現,使開發者可以使用最新的 Web 標準和 API。
- 瀏覽器開啟方式:解決不同瀏覽器不同版本問題,實現瀏覽器相容問題,確保瀏覽器正常執行。
- 功能補充:為舊環境提供新的API實現,如Promise、Set、Map等全域性物件,以及Object.assign等新方法。
- 便利性:允許使用最新的JavaScript編碼,並且不需要擔心環境變化。
- 按需:現代Polyfill解決方案允許按需功能,最佳化應用效能。
使用Polyfill的方法包括:
- 透過CDN引入Polyfill庫:
html
<script src=<font>"//cdn.polyfill.io/v1/polyfill.min.js" async defer></script> |
- 使用 npm 包如 core-js,並在程式碼中匯入所需的 polyfill。
- 自行編寫polyfill程式碼來實現特定功能。
Polyfill JS 是一種重要的工具,它能夠利用最新的 JavaScript 特性,同時確保程式碼在瀏覽器中能夠正常執行,從而實現良好的使用者體驗。