還原CloudflareCDN漏洞被利用的過(guò)程

2022-10-11    分類(lèi): 網(wǎng)站建設(shè)

Cloudflare 已修復(fù)其免費(fèi)開(kāi)源 CDNJS 中的一個(gè)嚴(yán)重漏洞,該漏洞可能影響互聯(lián)網(wǎng)上 12.7% 的網(wǎng)站。

CDNJS為數(shù)百萬(wàn)網(wǎng)站提供超過(guò)4000個(gè)JavaScript和CSS庫(kù),這些庫(kù)公開(kāi)存儲(chǔ)在GitHub上,使其成為第二大JavaScript CDN。

該漏洞利用包括使用 GitHub 和 npm 將數(shù)據(jù)包發(fā)布到 Cloudflare 的 CDNJS,以觸發(fā)路徑遍歷漏洞,并最終遠(yuǎn)程執(zhí)行代碼。

如果被利用,該漏洞將導(dǎo)致 CDNJS 基礎(chǔ)設(shè)施的完全攻擊。

還原 Cloudflare CDN 漏洞被利用的過(guò)程

從“ZIP Slip”到遠(yuǎn)程代碼執(zhí)行

本周,安全研究員 RyotaK 解釋了他如何在研究供應(yīng)鏈攻擊的同時(shí)找到一種方法來(lái)完全攻擊 Cloudflare 的 CDNJS 網(wǎng)絡(luò)。

CDN的全稱(chēng)是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其基本思路是盡可能避開(kāi)互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母?、更穩(wěn)定。在維護(hù)互聯(lián)網(wǎng)的安全性、完整性和可用性方面發(fā)揮著關(guān)鍵作用,因?yàn)榻^大多數(shù)網(wǎng)站都依賴這些服務(wù)來(lái)加載流行的 JavaScript 庫(kù)和 CSS 腳本。

CDN 可能成為攻擊者的目標(biāo)選擇,因?yàn)槿绻艿焦?,攻擊?huì)對(duì)許多網(wǎng)站、在線商店及其客戶產(chǎn)生深遠(yuǎn)的影響。

在瀏覽 cdnjs.com 時(shí),RyotaK 注意到對(duì)于 CDNJS 中尚不存在的庫(kù),他可以建議通過(guò) CDNJS 的 GitHub 存儲(chǔ)庫(kù)添加一個(gè)新庫(kù)。

還原 Cloudflare CDN 漏洞被利用的過(guò)程

用戶可以請(qǐng)求將包發(fā)布到 CDNJS 的 GitHub 存儲(chǔ)庫(kù)

在探索了這個(gè) GitHub 存儲(chǔ)庫(kù)以及共同使 CDNJS 生態(tài)系統(tǒng)工作的相鄰存儲(chǔ)庫(kù)之后,RyotaK 找到了一種方法來(lái)誘使服務(wù)器執(zhí)行任意代碼。

特別是,研究人員研究了 cdnjs/bot-ansible 和 cdnjs/tools 中存在的腳本,包括一個(gè)自動(dòng)更新腳本,有助于自動(dòng)檢索庫(kù)更新。

這些腳本會(huì)定期使用其開(kāi)發(fā)者在相應(yīng) npm 注冊(cè)表上發(fā)布的較新版本的軟件庫(kù)更新 CDNJS 服務(wù)器。

換句話說(shuō),對(duì)于發(fā)布到 CDNJS 的 GitHub 存儲(chǔ)庫(kù)的每個(gè)庫(kù),其更新版本將從鏈接的 npm 注冊(cè)表下載,并且 npm 版本也由庫(kù)開(kāi)發(fā)者維護(hù)。

RyotaK想知道,如果他發(fā)布到CDNJS的庫(kù)在對(duì)應(yīng)的npm版本中包含路徑遍歷漏洞,會(huì)發(fā)生什么。注意,npm包是以TGZ (.tar.gz)檔案的形式發(fā)布的,可以很容易地使用隱藏在其中的路徑遍歷漏洞來(lái)制作。

研究人員首先使用 GitHub 向 CDNJS 發(fā)布了一個(gè)名為 hey-sven 的測(cè)試庫(kù),然后開(kāi)始在 npm 注冊(cè)表上發(fā)布更新版本的“hey-sven”。

在發(fā)布到 npm 的較新的“hey-sven”版本中,最終將由 CDNJS 的更新機(jī)器人處理,研究人員在看起來(lái)很奇怪的路徑上注入了 Bash 腳本。

這些不同的路徑只不過(guò)是隱藏在 ZIP/TGZ 檔案中的路徑遍歷漏洞,這個(gè)概念在 2018 年以“ZIP Slip”方式爆發(fā)了。

2018 年 6 月 5 日,Snky 安全團(tuán)隊(duì)公布了一個(gè)名為 Zip Slip 的漏洞。這是一個(gè)廣泛存在的文件覆蓋漏洞,通過(guò)這個(gè)漏洞,攻擊者可以利用一個(gè)特制的 Zip 壓縮文件,從路徑遍歷覆蓋任意文件,繼而遠(yuǎn)程命令執(zhí)行,發(fā)起攻擊。Zip Slip 是以目錄遍歷的一種形式,通過(guò)從存檔中提取文件來(lái)進(jìn)行攻擊。目錄遍歷漏洞的前提是攻擊者可以訪問(wèn)文件系統(tǒng)中應(yīng)該駐留的目標(biāo)文件夾之外的部分文件系統(tǒng)。然后,攻擊者可以覆蓋可執(zhí)行文件并遠(yuǎn)程調(diào)用它們,或者等待系統(tǒng)或用戶調(diào)用它們,從而實(shí)現(xiàn)受害者機(jī)器上的遠(yuǎn)程命令執(zhí)行。此漏洞還可能通過(guò)覆蓋配置文件或其他敏感資源而造成損害,并且可能會(huì)在客戶端(用戶)機(jī)器和服務(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ù)千個(gè)項(xiàng)目,以及 Java、Ruby、.Net、 Go 等多種語(yǔ)言生態(tài)系統(tǒng),其中 Java 受到的攻擊尤為嚴(yán)重,主要是因?yàn)樗鼪](méi)有中央倉(cāng)庫(kù)提供高級(jí)別歸檔(如 Zip)文件處理。缺乏這樣的庫(kù)導(dǎo)致易受攻擊的代碼片段被手工制作,并在諸如 Stack Overflow 等開(kāi)發(fā)者社區(qū)中共享。

還原 Cloudflare CDN 漏洞被利用的過(guò)程

“hey-sven”庫(kù)的 npm 1.0.1 和 1.0.2 版本包含路徑遍歷漏洞

一旦 CDNJS 服務(wù)器處理了精心制作的“hey-sven”npm 檔案,這些 Bash 腳本的內(nèi)容將在服務(wù)器上執(zhí)行。

但是,研究人員不想意外覆蓋現(xiàn)有腳本,因此在概念驗(yàn)證 (PoC) 測(cè)試期間,他首先使用符號(hào)鏈接漏洞讀取他即將覆蓋的文件的內(nèi)容。

由于Git在默認(rèn)情況下支持符號(hào)鏈接,所以可以通過(guò)在Git存儲(chǔ)庫(kù)中添加符號(hào)鏈接來(lái)從cdnjs庫(kù)更新服務(wù)器中讀取任意文件。如果定期執(zhí)行的腳本文件被覆蓋執(zhí)行任意命令,自動(dòng)更新功能可能會(huì)被攻擊,所以研究人員決定先檢查任意文件讀取。

一旦攻擊者精心制作的 PoC擊中服務(wù)器,RyotaK 就能夠意外地將敏感機(jī)密(例如 GITHUB_REPO_API_KEY 和 WORKERS_KV_API_TOKEN)轉(zhuǎn)儲(chǔ)到 CDN 提供的腳本中,網(wǎng)址為https://cdnjs.cloudflare.com/...

還原 Cloudflare CDN 漏洞被利用的過(guò)程

初始符號(hào)鏈接 PoC 的輸出為研究人員提供了密鑰

GITHUB_REPO_API_KEY是一個(gè)授予寫(xiě)作權(quán)限的API密鑰,使攻擊者能夠修改CDNJS上的任何庫(kù)甚至篡改cdnjs.com網(wǎng)站本身。

另一方面,WORKERS_KV_API_TOKEN 秘密可用于篡改存在于 Cloudflare Workers 緩存中的庫(kù)。

通過(guò)組合這些權(quán)限,CDNJS 的核心部分,例如 CDNJS 的原始數(shù)據(jù)、KV 緩存,甚至 CDNJS 網(wǎng)站,都可以完全被篡改。

Cloudflare 發(fā)布了許多修復(fù)程序以修復(fù)漏洞

研究人員于 2021 年 4 月 6 日通過(guò) HackerOne 的漏洞披露計(jì)劃向 Cloudflare 報(bào)告了此漏洞,并看到 Cloudflare 的團(tuán)隊(duì)在數(shù)小時(shí)內(nèi)應(yīng)用了間歇性修復(fù)。

BleepingComputer 看到的初始修復(fù)旨在解決符號(hào)鏈接漏洞:

還原 Cloudflare CDN 漏洞被利用的過(guò)程

Cloudflare 的 CDNJS (GitHub) 應(yīng)用的初始修復(fù)

然而,根據(jù)研究人員的說(shuō)法,由于 CDNJS 生態(tài)系統(tǒng)的復(fù)雜性,在接下來(lái)的幾周內(nèi)對(duì)不同的存儲(chǔ)庫(kù)應(yīng)用了一系列更具體的修復(fù)。

RyotaK與BleepingComputer分享了第一個(gè)修復(fù)以拒絕Git存儲(chǔ)庫(kù)中的符號(hào)鏈接為中心,但它只修復(fù)了部分問(wèn)題。

修復(fù)人員首先試圖拒絕符號(hào)鏈接,但注意到機(jī)器人當(dāng)前的設(shè)計(jì)太危險(xiǎn)了。因此他們隔離了最危險(xiǎn)的功能。

對(duì)于其他功能,修復(fù)人員應(yīng)用了 AppArmors。

Application Armor 或 AppArmor 是一種安全功能,它使用預(yù)定義的配置文件限制在基于 Unix 的環(huán)境上運(yùn)行的程序的功能,以便程序不會(huì)無(wú)意中超出其預(yù)期的訪問(wèn)范圍。

研究人員還與 Cloudflare 部署的 BleepingComputer 共享了一系列修復(fù)程序,以保護(hù)自動(dòng)機(jī)器人處理更新的庫(kù):

還原 Cloudflare CDN 漏洞被利用的過(guò)程

Cloudflare 對(duì) CDNJS 進(jìn)行了多項(xiàng)更改以解決該漏洞

雖然這個(gè)漏洞可以在沒(méi)有任何特殊處理的情況下被利用,但它可能會(huì)影響許多網(wǎng)站。鑒于供應(yīng)鏈中存在許多漏洞,這些漏洞很容易被利用但影響很大。

正如 BleepingComputer 先前報(bào)道的那樣,影響數(shù)千家在線商店的 Magecart 供應(yīng)鏈攻擊源于對(duì)Volusion 的 CDN 基礎(chǔ)設(shè)施的攻擊。

當(dāng)前文章:還原CloudflareCDN漏洞被利用的過(guò)程
文章轉(zhuǎn)載:http://www.bm7419.com/news8/204608.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作網(wǎng)站排名、品牌網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站、微信小程序、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)