内容提要
Next.js App Router 15.3.0至15.3.2和Vercel CLI 41.4.1至42.2.0存在缓存中毒漏洞,已修复。该漏洞可能导致HTML请求返回React服务器组件。修复方法包括正确设置Vary头和重新部署应用。
关键要点
-
Next.js App Router 15.3.0至15.3.2和Vercel CLI 41.4.1至42.2.0存在缓存中毒漏洞,已修复。
-
该漏洞可能导致HTML请求返回React服务器组件(RSC)负载。
-
在Vercel上部署时,仅影响浏览器缓存,不会导致CDN中毒。
-
自托管和外部部署时,如果CDN未正确区分RSC/HTML,可能导致缓存中毒。
-
特定条件下,应用可能会错误地提供RSC负载而非HTML,并在浏览器或CDN层缓存这些响应。
-
问题发生在中间件重写或重定向导致缓存键分离不当的环境中。
-
Next.js 15.3.3通过正确设置Vary头来解决此问题,以区分不同内容类型。
-
使用受影响CLI版本的Vercel客户必须重新部署应用以接收修复。
-
手动在RSC响应中添加Vary头以区分RSC和HTML负载。
-
对中间件重定向目标应用唯一的缓存破坏搜索参数。
-
感谢内部事件响应团队和受影响的Vercel客户的及时报告和调试协助。
延伸解读
漏洞影响分析
该缓存中毒漏洞主要影响使用Next.js App Router和Vercel CLI的应用,尤其是在自托管或外部部署时。如果CDN未能正确区分RSC和HTML,可能导致用户获取错误的内容,影响用户体验。因此,开发者需关注应用的部署环境和缓存策略,以避免潜在风险。
修复措施与最佳实践
为了解决此漏洞,Next.js 15.3.3版本通过正确设置Vary头来区分不同内容类型。开发者在使用受影响的CLI版本时,必须重新部署应用以应用修复。此外,手动添加Vary头以区分RSC和HTML负载也是一种最佳实践,确保缓存的准确性。
中间件重定向的注意事项
在使用中间件进行重定向时,开发者需特别注意缓存键的分离。如果重定向导致缓存破坏参数被剥离,可能会引发缓存中毒问题。因此,建议在设计中间件时,确保重定向逻辑不会影响缓存的正确性。
延伸问答
CVE-2025-49005漏洞的影响是什么?
该漏洞可能导致HTML请求返回React服务器组件(RSC)负载,从而影响应用的正常显示。
如何修复CVE-2025-49005漏洞?
修复方法包括在Next.js 15.3.3中正确设置Vary头,并重新部署使用受影响CLI版本的应用。
哪些版本的Next.js和Vercel CLI受到CVE-2025-49005漏洞影响?
受影响的版本包括Next.js App Router 15.3.0至15.3.2和Vercel CLI 41.4.1至42.2.0。
在什么情况下会导致缓存中毒?
当CDN未正确区分RSC和HTML,且中间件重写或重定向导致缓存键分离不当时,可能会导致缓存中毒。
Vercel上部署时该漏洞会影响哪些内容?
在Vercel上部署时,该漏洞仅影响浏览器缓存,不会导致CDN中毒。
如何手动添加Vary头以区分RSC和HTML?
在RSC响应中手动添加Vary头,内容应为'Vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch'。