Vercel 表示,Next.js 中的新安全漏洞可能允许攻击者通过 ImageResponse 运行服务器上的代码,该功能用于生成 Open Graph 和其他社交预览图像。
当应用将攻击者控制的值(例如从请求 URL 读取的文本)放入图像中时,风险就会出现。开发 Next.js 的 Vercel 在 9 月 22 日修复了该缺陷,版本为 16.3.6。
该缺陷被追踪为 CVE-2026-94545,影响 Next.js 16.2.0 到 16.3.5,当 ImageResponse 在 Node.js 运行时上运行时,Next.js 默认使用该运行时。Vercel 的公告将其评级为关键,CVSS 分数为 9.5。ImageResponse 的 Edge 版本不受影响,Next.js 15 也不受影响。
ImageResponse 使用 Vercel 库 Satori 在生成最终 PNG 之前将图像布局转换为 SVG 代码。根据公告,受影响的应用是那些“在图像生成过程中将攻击者控制的值传递到 SVG 内容、属性或样式中的应用”。
公告中的示例从请求 URL 中获取一个值,并将其放置在 SVG 标题元素中。它没有说明普通元素中的文本(例如 div 内的标题)是否也算在内。
要查找应用使用该功能的位置,可以查看从 next/og 导入的 ImageResponse,例如在路由处理程序和 opengraph-image 文件中。路由处理程序在请求到达时生成图像。opengraph-image 文件可以在构建时或请求到达时生成图像。
截至 9 月 23 日,The Hacker News 没有发现使用该缺陷的攻击的公开报告,也没有公开的利用代码。
修复版本为 Next.js 16.3.6,这是唯一的修补版本,可以通过 npm install next@16.3.6 安装。截至 9 月 23 日,npm 注册表中没有列出 16.2 版本的修复版本,因此使用 16.2 的应用需要迁移到 16.3.6。Next.js 15.5.26 为 15.5 版本的 next/og 提供了额外的安全加固。
如果升级必须等待,公告的解决方法是将攻击者控制的值排除在 Node.js ImageResponse 渲染的 SVG 内容、属性和样式之外。公告没有建议切换到不受影响的 Edge 版本,而 Next.js 文档将 Edge 运行时标记为不推荐使用。
在 The Hacker News 于 9 月 23 日的检查中,npm audit 没有标记受影响的版本 Next.js 16.3.5。公告也尚未在 GitHub Advisory Database 中列出,且 CVE-2026-94545 的 CVE 记录尚未发布。
直接检查 Next.js 版本。Satori 被捆绑在 Next.js 包中,因此锁定文件不会将其列为 Next.js 的依赖项。
Vercel 的公告和声明没有说明托管在 Vercel 上的应用是否受到保护。对于 8 月修复的两个关键 Next.js 缺陷,该公司表示托管应用受到保护,无需升级。
Vercel 的公告和声明也没有提供检查受影响路由在补丁之前是否被滥用的方法。受影响的版本自 Next.js 16.2 于 3 月 18 日发布以来就已可用。
该漏洞本身存在于 Satori 中。Satori 自己的公告在同一天发布,表示某些值在没有被正确转义的情况下到达其 SVG 输出。然后,特别制作的值可能被读取为 SVG 代码,而不是普通文本。
Vercel 表示,在 Next.js 中,这些值可能会导致 Next.js 依赖的其他库中的漏洞,从而导致代码执行。它尚未命名这些库。
Satori 的公告将同一 CVE 评级为中等,分数为 5.3,并表示影响取决于 SVG 输出的使用方式。直接使用 Satori 的开发人员应将其更新到版本 0.33.5,该版本已修复该缺陷。
觉得这篇文章有趣吗?请在 Google 新闻、Twitter 和 LinkedIn 上关注我们,阅读更多我们发布的独家内容。