2022-10-11 分類: 網(wǎng)站建設(shè)
Cloudflare 已修復其免費開源 CDNJS 中的一個嚴重漏洞,該漏洞可能影響互聯(lián)網(wǎng)上 12.7% 的網(wǎng)站。
CDNJS為數(shù)百萬網(wǎng)站提供超過4000個JavaScript和CSS庫,這些庫公開存儲在GitHub上,使其成為第二大JavaScript CDN。
該漏洞利用包括使用 GitHub 和 npm 將數(shù)據(jù)包發(fā)布到 Cloudflare 的 CDNJS,以觸發(fā)路徑遍歷漏洞,并最終遠程執(zhí)行代碼。
如果被利用,該漏洞將導致 CDNJS 基礎(chǔ)設(shè)施的完全攻擊。
從“ZIP Slip”到遠程代碼執(zhí)行
本周,安全研究員 RyotaK 解釋了他如何在研究供應(yīng)鏈攻擊的同時找到一種方法來完全攻擊 Cloudflare 的 CDNJS 網(wǎng)絡(luò)。
CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其基本思路是盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母?、更穩(wěn)定。在維護互聯(lián)網(wǎng)的安全性、完整性和可用性方面發(fā)揮著關(guān)鍵作用,因為絕大多數(shù)網(wǎng)站都依賴這些服務(wù)來加載流行的 JavaScript 庫和 CSS 腳本。
CDN 可能成為攻擊者的目標選擇,因為如果受到攻擊,攻擊會對許多網(wǎng)站、在線商店及其客戶產(chǎn)生深遠的影響。
在瀏覽 cdnjs.com 時,RyotaK 注意到對于 CDNJS 中尚不存在的庫,他可以建議通過 CDNJS 的 GitHub 存儲庫添加一個新庫。
用戶可以請求將包發(fā)布到 CDNJS 的 GitHub 存儲庫
在探索了這個 GitHub 存儲庫以及共同使 CDNJS 生態(tài)系統(tǒng)工作的相鄰存儲庫之后,RyotaK 找到了一種方法來誘使服務(wù)器執(zhí)行任意代碼。
特別是,研究人員研究了 cdnjs/bot-ansible 和 cdnjs/tools 中存在的腳本,包括一個自動更新腳本,有助于自動檢索庫更新。
這些腳本會定期使用其開發(fā)者在相應(yīng) npm 注冊表上發(fā)布的較新版本的軟件庫更新 CDNJS 服務(wù)器。
換句話說,對于發(fā)布到 CDNJS 的 GitHub 存儲庫的每個庫,其更新版本將從鏈接的 npm 注冊表下載,并且 npm 版本也由庫開發(fā)者維護。
RyotaK想知道,如果他發(fā)布到CDNJS的庫在對應(yīng)的npm版本中包含路徑遍歷漏洞,會發(fā)生什么。注意,npm包是以TGZ (.tar.gz)檔案的形式發(fā)布的,可以很容易地使用隱藏在其中的路徑遍歷漏洞來制作。
研究人員首先使用 GitHub 向 CDNJS 發(fā)布了一個名為 hey-sven 的測試庫,然后開始在 npm 注冊表上發(fā)布更新版本的“hey-sven”。
在發(fā)布到 npm 的較新的“hey-sven”版本中,最終將由 CDNJS 的更新機器人處理,研究人員在看起來很奇怪的路徑上注入了 Bash 腳本。
這些不同的路徑只不過是隱藏在 ZIP/TGZ 檔案中的路徑遍歷漏洞,這個概念在 2018 年以“ZIP Slip”方式爆發(fā)了。
2018 年 6 月 5 日,Snky 安全團隊公布了一個名為 Zip Slip 的漏洞。這是一個廣泛存在的文件覆蓋漏洞,通過這個漏洞,攻擊者可以利用一個特制的 Zip 壓縮文件,從路徑遍歷覆蓋任意文件,繼而遠程命令執(zhí)行,發(fā)起攻擊。Zip Slip 是以目錄遍歷的一種形式,通過從存檔中提取文件來進行攻擊。目錄遍歷漏洞的前提是攻擊者可以訪問文件系統(tǒng)中應(yīng)該駐留的目標文件夾之外的部分文件系統(tǒng)。然后,攻擊者可以覆蓋可執(zhí)行文件并遠程調(diào)用它們,或者等待系統(tǒng)或用戶調(diào)用它們,從而實現(xiàn)受害者機器上的遠程命令執(zhí)行。此漏洞還可能通過覆蓋配置文件或其他敏感資源而造成損害,并且可能會在客戶端(用戶)機器和服務(wù)器上受到攻擊。
攻擊者主要可以利用保存目錄遍歷文件名的特制檔案文件(例如../../evil.sh)觸發(fā) Zip Slip 漏洞。該漏洞已影響許多存檔的格式,包括 tar、jar、war、cpio、apk、rar 和 7z 等大量的壓縮文件。
目前 Zip Slip 漏洞已經(jīng)影響了包括阿里巴巴、Google、Oracle、Eclipse、HP、Amazon、Apache、Pivotal、Linkedin 等企業(yè)的數(shù)千個項目,以及 Java、Ruby、.Net、 Go 等多種語言生態(tài)系統(tǒng),其中 Java 受到的攻擊尤為嚴重,主要是因為它沒有中央倉庫提供高級別歸檔(如 Zip)文件處理。缺乏這樣的庫導致易受攻擊的代碼片段被手工制作,并在諸如 Stack Overflow 等開發(fā)者社區(qū)中共享。
“hey-sven”庫的 npm 1.0.1 和 1.0.2 版本包含路徑遍歷漏洞
一旦 CDNJS 服務(wù)器處理了精心制作的“hey-sven”npm 檔案,這些 Bash 腳本的內(nèi)容將在服務(wù)器上執(zhí)行。
但是,研究人員不想意外覆蓋現(xiàn)有腳本,因此在概念驗證 (PoC) 測試期間,他首先使用符號鏈接漏洞讀取他即將覆蓋的文件的內(nèi)容。
由于Git在默認情況下支持符號鏈接,所以可以通過在Git存儲庫中添加符號鏈接來從cdnjs庫更新服務(wù)器中讀取任意文件。如果定期執(zhí)行的腳本文件被覆蓋執(zhí)行任意命令,自動更新功能可能會被攻擊,所以研究人員決定先檢查任意文件讀取。
一旦攻擊者精心制作的 PoC擊中服務(wù)器,RyotaK 就能夠意外地將敏感機密(例如 GITHUB_REPO_API_KEY 和 WORKERS_KV_API_TOKEN)轉(zhuǎn)儲到 CDN 提供的腳本中,網(wǎng)址為https://cdnjs.cloudflare.com/...
初始符號鏈接 PoC 的輸出為研究人員提供了密鑰
GITHUB_REPO_API_KEY是一個授予寫作權(quán)限的API密鑰,使攻擊者能夠修改CDNJS上的任何庫甚至篡改cdnjs.com網(wǎng)站本身。
另一方面,WORKERS_KV_API_TOKEN 秘密可用于篡改存在于 Cloudflare Workers 緩存中的庫。
通過組合這些權(quán)限,CDNJS 的核心部分,例如 CDNJS 的原始數(shù)據(jù)、KV 緩存,甚至 CDNJS 網(wǎng)站,都可以完全被篡改。
Cloudflare 發(fā)布了許多修復程序以修復漏洞
研究人員于 2021 年 4 月 6 日通過 HackerOne 的漏洞披露計劃向 Cloudflare 報告了此漏洞,并看到 Cloudflare 的團隊在數(shù)小時內(nèi)應(yīng)用了間歇性修復。
BleepingComputer 看到的初始修復旨在解決符號鏈接漏洞:
Cloudflare 的 CDNJS (GitHub) 應(yīng)用的初始修復
然而,根據(jù)研究人員的說法,由于 CDNJS 生態(tài)系統(tǒng)的復雜性,在接下來的幾周內(nèi)對不同的存儲庫應(yīng)用了一系列更具體的修復。
RyotaK與BleepingComputer分享了第一個修復以拒絕Git存儲庫中的符號鏈接為中心,但它只修復了部分問題。
修復人員首先試圖拒絕符號鏈接,但注意到機器人當前的設(shè)計太危險了。因此他們隔離了最危險的功能。
對于其他功能,修復人員應(yīng)用了 AppArmors。
Application Armor 或 AppArmor 是一種安全功能,它使用預定義的配置文件限制在基于 Unix 的環(huán)境上運行的程序的功能,以便程序不會無意中超出其預期的訪問范圍。
研究人員還與 Cloudflare 部署的 BleepingComputer 共享了一系列修復程序,以保護自動機器人處理更新的庫:
Cloudflare 對 CDNJS 進行了多項更改以解決該漏洞
雖然這個漏洞可以在沒有任何特殊處理的情況下被利用,但它可能會影響許多網(wǎng)站。鑒于供應(yīng)鏈中存在許多漏洞,這些漏洞很容易被利用但影響很大。
正如 BleepingComputer 先前報道的那樣,影響數(shù)千家在線商店的 Magecart 供應(yīng)鏈攻擊源于對Volusion 的 CDN 基礎(chǔ)設(shè)施的攻擊。
網(wǎng)頁題目:還原CloudflareCDN漏洞被利用的過程
本文網(wǎng)址:http://www.rwnh.cn/news/204608.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、做網(wǎng)站、商城網(wǎng)站、企業(yè)建站、云服務(wù)器、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容