← 文章 / 未分类
vercel 3小时前 · 2026-09-19 10:49:06 · 0 阅读

使用 Hacktron 与维护者一起复现、披露和修复 libheif 漏洞

2026 年 8 月,Hacktron 报告了一个疑似存在于 Next.js 图片优化功能中的远程代码执行(RCE)漏洞。其调查发现,漏洞代码并非位于 Next.js 本身,而是位于上游的 libheif——Next.js、ImageMagickWordPresssharp 以及 Web 上大量软件所使用的 AVIF 图像解码器。 Hacktron 通知我们后不久,我们便与他们合作,针对当前版本的 Next.js 构建复现了这一 RCE 漏洞,并向 sharp、libvips 和 libheif 的维护者披露了该问题。随后,我们在 Vercel 平台部署了全面防护措施,并开始与维护者共同开发修复方案。

Copy link to heading依赖链

Next.js 图片优化允许应用通过 <Image> 组件(next/image)对图片进行缩放和优化。对于 AVIF 图像,其图像处理依赖链如下:

  • <Image> 调用 /_next/image

  • /_next/image 调用 sharp

  • sharp 调用 libvips

  • libvips 使用 libheif 解码图像

The full dependency chain of the libheif vulnerability in Next.js.The full dependency chain of the libheif vulnerability in Next.js.
The full dependency chain of the libheif vulnerability in Next.js.

这意味着漏洞代码虽不在 Next.js 中,但仍可通过 Next.js 图片优化功能被触发。若向图片优化端点发送恶意的 AVIF 图像,系统将经由 sharp 和 libvips 调用 libheif。

因此,一个显而易见的缓解措施是在 Next.js 中禁用 AVIF 优化。这样,恶意 AVIF 图片就会在图片优化端点被拦下,而不会经 sharp 和 libvips 传递到 libheif,漏洞利用也就无法继续向上传播。

但如果只缓解 Next.js 这一层,而不在上游修复,就会带来漏洞披露方面的问题。

Copy link to heading漏洞披露与上游修复协调

我们与 Hacktron 合作成功复现该问题后,在 Vercel 平台层面部署了缓解措施,并联系了 sharp、libvips 和 libheif 的维护者进行漏洞披露,着手推动修复。

时间线如下:

  • 8 月 11-12 日:Hacktron 向 Vercel 报告该问题;双方通过可用的概念验证成功复现了这个 RCE。

  • 8 月 13 日:Vercel 通过其 Image Optimization Service 部署了平台级缓解措施。

  • 8 月 19 日:Next.js 团队与 libvips 维护者会面,开始在 sharp、libvips 和 libheif 之间协调。

  • 8 月 24 日:Next.js 通报了其安全合作伙伴。

  • 8 月 25 日:Next.js 发布了禁用 AVIF 优化的安全版本。

Vercel 安全团队通过邮件联系了 sharp 和 libvips 的维护者,并通过 GitHub Security Advisory 与 libheif 建立了协调机制。Hacktron 也已向 libheif 提交了漏洞和利用细节。8 月 19 日,Next.js 团队与 libvips 维护者会面,就 sharp、libvips 和 libheif 各方的后续路径达成一致。libheif 维护者随后通过 Hacktron 的 GitHub Security Advisory 持续推进修复工作。

8 月 24 日,Next.js 将 libheif 漏洞及其对 Next.js 的影响通报给安全合作伙伴(合作伙伴通知是 Next.js 安全发布流程中的常规环节)。

8 月 25 日,即在 8 月 19 日会面后的第六天,libheif 维护者发布了 v1.23.2,修复了这个 RCE。

Copy link to headingVercel 和 Next.js 的缓解措施

保障 Vercel 及其客户安全的过程很直接:Vercel 上所有 Next.js 图片优化请求都经由一个集中式的图片优化服务。因此,我们在该集中服务中禁用了 AVIF 优化和缩放。传入的 AVIF 图像不会被传递给 libheif 进行解码,因此在 Vercel 上无法触发远程代码执行(RCE)。

保护自托管应用则需要发布 Next.js 更新。8 月 25 日,Next.js 发布了一个安全更新,该更新最初计划用于修复另一个独立问题。在协调上游修复之后,我们将 AVIF 缓解措施打包进该版本,并比原定时间提前一天发布。该版本在 Next.js 中禁用了 AVIF 优化和缩放;鉴于打过补丁的 libheif 版本仍在向下传播中,这是当时最及时的选择。我们还发布了一份安全公告,以传达该问题的严重程度。

复制标题链接我们对让 Web 更安全的承诺

发现的开源软件漏洞数量仍在持续增长,且数据令人震惊:

随着大语言模型(LLM)加速漏洞研究,我们预计将在开源生态系统中看到更多像 libheif RCE 这样的上游漏洞。最近几个月 Next.js 的安全更新数量有所增加,随着我们和研究人员发现并缓解新的漏洞,我们预计这一趋势将持续下去。

我们致力于在攻击者之前主动发现漏洞,负责任地披露所有发现,并与研究人员和维护者协作修复问题。

Copy link to heading致谢

感谢 Hacktron 负责任地披露了 AVIF 漏洞,与我们协作复现了该问题,并在整个修复过程中协调了上游维护者。

我们也感谢 sharp、libvips 和 libheif 的维护者。他们在上游修复方面的工作,使得我们能够横跨图像处理依赖链进行协调修复。

我们与一批优秀的研究人员合作,通过 Vercel 开源漏洞赏金计划 加强 Next.js 及其他开源框架的安全性。任何有意为符合条件框架的安全性做出贡献的人,都欢迎参与该项目。

Copy link to heading参考资料

原始来源: vercel

评论 (0)