數(shù)字化時代,軟件無處不在。軟件如同社會中的“虛擬人”,已經(jīng)成為支撐社會正常運轉(zhuǎn)的最基本元素之一,軟件的安全性問題也正在成為當今社會的根本性、基礎性問題。
隨著軟件產(chǎn)業(yè)的快速發(fā)展,軟件供應鏈也越發(fā)復雜多元,復雜的軟件供應鏈會引入一系列的安全問題,導致信息系統(tǒng)的整體安全防護難度越來越大。近年來,針對軟件供應鏈的安全攻擊事件一直呈快速增長態(tài)勢,造成的危害也越來越嚴重。
為此,我們推出“供應鏈安全”欄目。本欄目匯聚供應鏈安全資訊,分析供應鏈安全風險,提供緩解建議,為供應鏈安全保駕護航。
上個月,Web 基礎設施和網(wǎng)站安全公司 Cloudflare 修復了一個嚴重漏洞,它位于互聯(lián)網(wǎng)12.7%的網(wǎng)站都在用的 CDNJS 庫中。
CDNJS 是一款免費開源的內(nèi)容交付網(wǎng)絡 (CDN),為4041個 JavaScript 和 CSS 庫提供服務,是繼 Google Hosted Libraries 之后的第二個最流行的 JavaScript CDN。
該漏洞存在于 CDNJS 庫更新服務器中,可導致攻擊者執(zhí)行任意命令,從而導致服務器遭完全攻陷。
漏洞概述
安全研究員 RyotaK 在2021年4月6日發(fā)現(xiàn)并報告該漏洞,目前尚未發(fā)現(xiàn)該漏洞遭在野利用的證據(jù)。具體而言,該漏洞首先將程序包公布到使用 GitHub 和 npm 的 CDNJS 中以觸發(fā)路徑遍歷漏洞,并最終誘騙服務器執(zhí)行任意代碼,從而實現(xiàn)遠程代碼執(zhí)行。
值得注意的是,CDNJS 基礎設施包含多個功能,可通過定期在服務器上運行腳本的方式自動更新庫,從各自的用戶管理 Git 倉庫或 npm 包注冊表下載相關(guān)文件。
RyotaK 從該機制清理包路徑的過程中發(fā)現(xiàn)了一個問題,“從發(fā)布到 npm 的 .tgz 文件中執(zhí)行路徑遍歷并覆寫在服務器上定期執(zhí)行的腳本后,可執(zhí)行任意代碼”。換句話說,該攻擊的目標是在倉庫中發(fā)布特別構(gòu)造的數(shù)據(jù)包新版本,之后在將惡意包內(nèi)容復制到托管在服務器上的定期執(zhí)行的腳本文件過程中,通過CDNJS 庫更新服務器發(fā)布,從而獲得任意代碼執(zhí)行權(quán)限。
RyotaK 表示,“雖然利用該漏洞無需任何特殊技能,但可影響很多網(wǎng)站。鑒于供應鏈中存在很多易遭利用且影響巨大的漏洞,因此我認為這個漏洞非??植馈!?/span>
這并非 RyotaK 在處理軟件倉庫更新過程中發(fā)現(xiàn)的第一枚嚴重缺陷。2021年4月,RyotaK 在官方 Homebrew Cask 倉庫中發(fā)現(xiàn)一個嚴重漏洞,本可導致攻擊者在用戶機器上執(zhí)行任意代碼。