Next.js 16.4.0 已于 10 月 7 日 10:03 UTC 发布,同时有一批安全公告需要一起处理。这次的升级有个坑:光升级版本不够。
要升到哪
- 16.x 线:升到 16.3.8 及以上(安全修复线)。
- 15.x 线:15.5.27。
- 最新特性线:16.4.0。
升级后跑一次 npm audit --audit-level=moderate,确认没有残留的中危及以上问题。
唯一的高危项:CVE-2026-94483
- 编号 GHSA-cjq9-62q9-8jv4,CVSS v4 8.3。
- 影响范围:Next.js 16.0.0 到 16.3.8,在 16.3.8 修复。
- 10 月 7 日进入公告数据库。
- 问题类型:图片优化功能的 SSRF。一个已在白名单里的远程 URL,可以被用来让服务器向内网目标发起请求,比如私有 IP 段。
为什么升完级还没完
这个漏洞有配置成分,升级本身不解决。攻击面来自你在 images.remotePatterns 里列的东西。
修法两条一起做:
- 升级到修复版本。
- 逐个审查
remotePatterns,把不信任 DNS 记录的主机删掉。
配置该怎么写 别用裸通配符。每条都要精确到主机名,并且带上明确的路径前缀:
- protocol 写 https
- hostname 写具体的 CDN 域名,不要写通配
- pathname 写
/media/**这种带前缀的形式
没有配置 remotePatterns 的应用不受这个漏洞影响。
重建缓存这一步别漏
已经被投毒的 SSG/ISR 条目要丢弃后重建。自托管环境清 .next/cache 再 npm run build;如果前面挂了 CDN,还要按路径 purge,否则边缘节点会继续返回错误的内容。
16.4.0 里还有个容易忽略的改动
修复了预渲染绕过规则里的 HTML-limited bot 匹配(PR #96584),另外清理了未使用的 htmlLimitedBots,并重写了缓存指南里关于爬虫的章节。
这个改动非破坏性,但跳过的后果很隐蔽:如果爬虫匹配出错,不执行流的爬虫会拿到既没有内容也没有元数据的页面——在搜索引擎那里表现为「内容单薄」,而不是「页面报错」。
验证方法 用爬虫 UA 请求一个动态路由,直接看原始字节里有没有 title、canonical 和 description,别看渲染后的 DOM。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。