Next.js 受 9.1 級重大漏洞攻擊...
上周五,就在你剛犯了“周五上線代碼”的經典錯誤后不久,全球最受歡迎的JavaScript框架Next.js被曝出了一項高達9.1級的嚴重安全漏洞。
此次漏洞攻擊方式極為簡單:攻擊者可以繞過Next.js中間件的認證與授權檢查,這意味著原本用于保護應用安全的核心邏輯完全失效。
例如,在軟件即服務(SaaS)應用中,我們通常會在中間件中編寫類似“如果用戶未付費,則自動跳轉至付費頁面”的邏輯。然而,由于Next.js母公司Vercel近期在安全代碼上存在嚴重疏忽,攻擊者僅需向服務器發出特制請求,即可輕松跳過中間件中所有的權限校驗。通俗來說,用戶只要“禮貌地拒絕”支付,就能免費無限制使用你的應用服務。
此次漏洞爆出后,長期批評Next.js與React框架的用戶可謂揚眉吐氣,紛紛高喊“早就提醒過你們了!”,而這群“技術預言家”們大多還是躲在暗地里觀看熱鬧。
與此同時,一些競爭對手(比如Cloudflare)也迅速借機搶奪Vercel客戶,甚至在推特上演了一場公開的科技界“嘴炮大戰”。
誰真正需要擔心這個漏洞?
- 如果你的Next.js應用仍在使用舊版本,并且依賴中間件進行權限認證,請立刻升級補丁版本,否則風險極高。
- 如果你未使用Next.js的Middleware功能,或者沒有部署在Vercel、Netlify等平臺,則無需過度擔憂。
- 若你正在自建服務器環境且使用Vercel中間件,可能就在你閱讀本文期間,應用已經被黑客攻擊成功。
攻擊原理大揭秘:Next.js中間件為何如此脆弱?
幾乎每個Web框架都有中間件(Middleware)的概念,其本質是位于HTTP請求與響應之間的一層處理代碼,用來實現諸如日志記錄、錯誤處理、權限校驗等通用功能。如此一來,我們就不必在每個頁面或API路由中重復編寫類似的代碼。
但問題出在:安全研究人員近日翻閱Next.js的歷史代碼時,意外發現了一個名為middleware-sub-request的特殊HTTP頭部字段。只要攻擊者明確知道中間件的具體名稱(通常很容易猜測,因為開發者命名習慣普遍規律),便能利用這個頭部字段強行繞過中間件執行。
這一漏洞的致命之處在于:實施攻擊的難度極低,但對網站造成的破壞卻可能巨大。
此外,此次安全事件還意外引發了額外的“副作用”:例如Cloudflare曾嘗試緊急發布規則自動屏蔽此HTTP頭,但卻導致了諸如Supabase等第三方認證服務的大量誤報,迫使他們將規則改為用戶手動開啟。
漏洞修復緩慢引發爭議,安全響應速度遭質疑
事實上,社區開發者最為不滿的并非漏洞本身,而是Next.js官方修復漏洞所花費的漫長時間。
該漏洞最初在2月27日即被安全人員報告給了Next.js團隊,但Vercel遲至3月18日才正式發布安全補丁,整整拖延了近三周時間。對如此嚴重的安全問題而言,修復時間實在過于漫長,令廣大開發者難以接受。
科技巨頭“互撕”大戰,Cloudflare公開“搶客戶”
更為滑稽的是:Cloudflare的CEO借此事件順勢推出新工具,號稱能一鍵將部署于Vercel的Next.js應用遷移到Cloudflare平臺,并暗諷Vercel根本“不關心客戶安全”。
面對Cloudflare的挑釁,Vercel的CEO毫不示弱,立即反擊稱Cloudflare才是臭名昭著的“Cloudbleed”安全事件罪魁禍首,并吐槽Cloudflare的DDoS防護服務形同虛設。
雙方CEO你來我往,推特上的互動一度演變為一場科技圈的“迷因大戰”,場面極為尷尬。
作為同時使用過Vercel和Cloudflare服務的用戶,我真心希望科技大佬們少一些無聊的爭吵,多一些建設性的行動。
總結與行動建議:
- 立即升級你正在使用的Next.js版本,避免因舊版漏洞遭到入侵。
- 密切關注Next.js與Vercel官方安全公告,保證你的生產環境隨時安全可靠。
希望本次事件能夠提高業界對安全問題的重視,畢竟在互聯網世界里,沒有什么比應用安全更為重要。