来源 |
大迁世界
作者 |
dev
上周五,就在你刚犯了“周五上线代码”的经典错误后不久,全球最受欢迎的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官方安全公告,保证你的生产环境随时安全可靠。
希望本次事件能够提高业界对安全问题的重视,毕竟在互联网世界里,没有什么比应用安全更为重要。
好啦,今天的内容分享就到这,感觉不错的同学记得分享点赞哦!
PS:
程序员好物馆
持续分享程序员学习、面试相关干货,不见不散!