使用 Hacktron 与维护者一起复现、披露和修复 libheif 漏洞
Copy link to heading依赖链
Next.js 图片优化允许应用通过 <Image> 组件(next/image)对图片进行缩放和优化。对于 AVIF 图像,其图像处理依赖链如下:
<Image>调用/_next/image,/_next/image调用 sharpsharp 调用 libvips
libvips 使用 libheif 解码图像


这意味着漏洞代码虽不在 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 更安全的承诺
发现的开源软件漏洞数量仍在持续增长,且数据令人震惊:
2026 年,CVE 计划已发布了超过 35,000 个 CVE。
GitHub 上的私有漏洞报告从 1 月每周 500 份增长到 5 月每周 3,000 份。
GitHub 还报告称,2026 年 5 月有 1,560 份经审查的公告,创下了公告数据库单月数量的历史最高纪录。
随着大语言模型(LLM)加速漏洞研究,我们预计将在开源生态系统中看到更多像 libheif RCE 这样的上游漏洞。最近几个月 Next.js 的安全更新数量有所增加,随着我们和研究人员发现并缓解新的漏洞,我们预计这一趋势将持续下去。
我们致力于在攻击者之前主动发现漏洞,负责任地披露所有发现,并与研究人员和维护者协作修复问题。
Copy link to heading致谢
感谢 Hacktron 负责任地披露了 AVIF 漏洞,与我们协作复现了该问题,并在整个修复过程中协调了上游维护者。
我们也感谢 sharp、libvips 和 libheif 的维护者。他们在上游修复方面的工作,使得我们能够横跨图像处理依赖链进行协调修复。
我们与一批优秀的研究人员合作,通过 Vercel 开源漏洞赏金计划 加强 Next.js 及其他开源框架的安全性。任何有意为符合条件框架的安全性做出贡献的人,都欢迎参与该项目。