在 Next.js 這個(gè)開源的 Web 開發(fā)框架中,發(fā)現(xiàn)了一個(gè)嚴(yán)重漏洞,攻擊者有可能借此繞過授權(quán)檢查。
該漏洞編號(hào)為 CVE-2025-29927,攻擊者利用此漏洞,無需經(jīng)過關(guān)鍵的安全檢查,就能發(fā)送請(qǐng)求并到達(dá)目標(biāo)路徑。
Next.js 是一個(gè)廣受歡迎的 React 框架,在 npm 上,每周的下載量超過 900 萬次。它被用于構(gòu)建全棧 Web 應(yīng)用程序,其中包含用于身份驗(yàn)證和授權(quán)的中間件組件。前端和全棧開發(fā)人員借助它,通過 React 構(gòu)建 Web 應(yīng)用程序。一些知名公司,如 TikTok、Twitch、Hulu、Netflix、Uber 和 Nike 等,都在其網(wǎng)站或應(yīng)用程序中使用了 Next.js。
繞過授權(quán)機(jī)制的原理
在 Next.js 中,中間件組件會(huì)在請(qǐng)求到達(dá)應(yīng)用程序路由系統(tǒng)之前運(yùn)行,其作用包括身份驗(yàn)證、授權(quán)、日志記錄、錯(cuò)誤處理、重定向用戶、實(shí)施地理封鎖或速率限制等。
為避免中間件自身陷入無限循環(huán)的重新觸發(fā),Next.js 采用了一個(gè)名為 “x-middleware-subrequest” 的標(biāo)頭,以此指示是否應(yīng)應(yīng)用中間件功能。負(fù)責(zé)處理傳入請(qǐng)求的 “runMiddleware” 函數(shù)會(huì)檢索該標(biāo)頭。
一旦檢測到 “x-middleware-subrequest” 標(biāo)頭具有特定值,整個(gè)中間件執(zhí)行鏈就會(huì)被繞過,請(qǐng)求會(huì)被直接轉(zhuǎn)發(fā)到目的地。
攻擊者能夠手動(dòng)發(fā)送包含正確值標(biāo)頭的請(qǐng)求,進(jìn)而繞過保護(hù)機(jī)制。據(jù)發(fā)現(xiàn)此漏洞并發(fā)表技術(shù)文章的研究人員 Allam Rachid 和 Allam Yasser (inzo_) 稱,“該標(biāo)頭及其值就像一把通用鑰匙,能夠覆蓋規(guī)則。”
受影響版本與建議
該漏洞影響所有早于 15.2.3、14.2.25、13.5.9 和 12.3.5 的 Next.js 版本。鑒于利用此安全問題的技術(shù)細(xì)節(jié)已公開,建議用戶盡快升級(jí)到較新版本。
Next.js 的安全公告明確指出,CVE-2025-29927 僅影響使用 “next start” 和 “output: standalone” 的自托管版本。托管在 Vercel 和 Nerlify 上,或者部署為靜態(tài)導(dǎo)出的 Next.js 應(yīng)用則不受影響。同樣受影響的,還有那些使用中間件進(jìn)行授權(quán)或安全檢查,且在應(yīng)用程序后期沒有驗(yàn)證的環(huán)境。
若暫時(shí)無法進(jìn)行修補(bǔ),建議阻止外部用戶發(fā)送包含 “x-middleware-subrequest header” 的請(qǐng)求。
參考及來源:https://www.bleepingcomputer.com/news/security/critical-flaw-in-nextjs-lets-hackers-bypass-authorization/
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.