CVE-2026-27977Next.js是一个用于构建全栈Web应用程序的React框架。该漏洞存在于Next.js开发服务器(next dev)的热模块替换(HMR)WebSocket功能中。漏洞源于跨站保护机制对Origin: null头的处理不当,当开发者配置了allowedDevOrigins时,系统仍会将Origin: null视为可信任来源并允许连接。这一设计缺陷使得攻击者可以通过构造包含不透明上下文(如<iframe>沙盒、about:blank页面)的恶意网页,绕过同源策略限制,劫持开发服务器的HMR WebSocket连接。成功利用此漏洞的攻击者能够窃取开发环境中的敏感信息、注入恶意代码到热重载模块,甚至可能影响开发人员的调试会话。由于该漏洞仅影响开发模式,生产环境不受影响。
漏洞根本原因在于Next.js开发服务器的WebSocket端点(/_next/webpack-hmr)实现了不完整的Origin验证逻辑。正常情况下,系统会检查请求的Origin头是否在allowedDevOrigins配置列表中。然而,当浏览器发送的Origin头值为null(这在file://协议、data:协议或沙盒iframe等不透明上下文中很常见)时,验证逻辑错误地将其视为有效的受信任来源。攻击者可以在自己的网页中嵌入指向目标开发服务器WebSocket端点的连接请求,利用浏览器的隐私敏感上下文绕过Origin检查。一旦WebSocket握手成功,攻击者便成为该连接的合法参与者,可以接收服务器推送的所有消息(如模块变更通知、错误日志),并可向服务器发送请求。由于HMR连接通常具有较高的权限级别,这可能导致开发环境的敏感数据泄露或被恶意操纵。修复方案在16.1.7版本中对Origin: null进行了与其他来源相同的验证流程。