CVE-2026-27980Next.js是一个用于构建全栈Web应用程序的React框架。该漏洞存在于Next.js 10.0.0至16.1.7版本之间的图片优化功能中。漏洞根源在于Next.js默认的图片优化磁盘缓存(/_next/image)没有配置可控制的上限,导致缓存可以无限增长。攻击者可以通过持续请求生成大量唯一的图片优化变体,这些变体会被存储在磁盘缓存中,随着时间推移不断消耗服务器磁盘空间,最终导致磁盘空间耗尽,使服务器无法继续写入数据,正常用户无法访问网站服务,从而造成拒绝服务(DoS)攻击。此漏洞无需任何认证,攻击者可以通过网络远程发起攻击,攻击成本低但危害大。
Next.js的Image组件提供了图片优化功能,会将原始图片转换为不同尺寸和质量的新版本以优化加载性能。这些优化后的图片默认存储在磁盘缓存中(.next/cache/images目录)。漏洞存在于缓存管理机制中:1)缓存大小没有配置上限参数,允许无限制增长;2)缺少缓存清理或过期机制;3)每次请求都会生成新的变体记录,即使图片内容相同。攻击者利用此漏洞的方式是构造大量带有不同参数的图片优化请求(如改变width、quality、format等参数组合),每个唯一组合都会在磁盘上创建新的缓存文件。由于没有大小限制,攻击者可以快速耗尽服务器磁盘空间,导致服务崩溃。修复版本16.1.7引入了LRU(最近最少使用)算法的磁盘缓存机制,通过images.maximumDiskCacheSize参数限制缓存大小,超出限制后自动清理旧条目。