Next.js 框架中 CVE-2024-34350 和 CVE-2024-34351 漏洞原理与安全升级通知

Next.js 最新漏洞解析及安全升级指南

最近,流行的 Next.js 框架修复了两个重要的安全漏洞,分别是 CVE-2024-34350 和 CVE-2024-34351。如果不及时升级,可能会导致数据泄露或服务器被攻击。

1. CVE-2024-34350:HTTP 请求走私漏洞

  • 技术解释 :这个漏洞就像是,你的 Web 服务器对同一个 HTTP 请求理解不一致,有时认为是一个请求,有时认为是两个。攻击者可以利用这一点,构造特殊的请求,让服务器返回错误的内容,或者执行未授权的操作。主要影响使用了 rewrites 功能的路由。

  • 实际例子 :假设你的网站有一个重定向规则,将 /old-path 重定向到 /new-path。攻击者可以构造一个恶意的 HTTP 请求,当服务器处理这个请求时,会将其中一部分当成是给 /new-path 的请求,另一部分当成是给其他内部接口的请求,从而窃取数据或篡改信息。

  • 修复方案:升级到 Next.js 13.5.1 或更高版本(包括 14.x)。

2. CVE-2024-34351:服务器端请求伪造(SSRF)风险

  • 技术解释:SSRF 漏洞允许攻击者让你的服务器代表它自己去访问其他资源。在 Next.js 的 Server Actions 中,如果 Host header 被篡改,并且你的应用是自托管的,攻击者就可以让你的服务器向内部服务或外部网站发起恶意请求。 简单来说,就是黑客可以利用你的服务器作为跳板,去访问其他服务器。

  • 实际例子 :假设你的 Next.js 应用运行在自己的服务器上,并且使用了 Server Actions。攻击者可以修改 HTTP 请求中的 Host header,让你的服务器去访问内部的管理接口 http://localhost:3000/admin,如果这个接口没有做严格的权限验证,攻击者就可以控制你的服务器。

    bash 复制代码
    curl -v http://your-server.com/api/upload \
    -H "Host: localhost:3000" \
    --data-binary @malicious-file.txt

    这个例子中,攻击者尝试将 Host header 设置为 localhost:3000,如果服务器没有正确验证 Host header,可能会将请求发送到本地的 3000 端口,从而暴露内部服务。

  • 防范方法

    • 升级 Next.js: 立即升级到 Next.js 14.1.1 或更高版本,该版本已修复此漏洞。
    • 限制 URL 模式 : 强制执行特定的 URL 模式,只允许使用 HTTPHTTPS 协议, 避免使用 file:// 等潜在的危险模式。
    • 使用防火墙: 部署 Web 应用防火墙(WAF), 阻止恶意请求, 创建可信域名白名单, 并拒绝可疑的 URL 或 IP 地址。
    • 清理用户输入: 对所有用户输入进行清理, 确保 URL 格式正确, 不包含意外字符, 但不能仅依赖于输入清理。
  • 修复方案:升级到 Next.js 14.1.1。 没有其他临时的解决方案.

总结

请所有使用 Next.js 的开发者尽快升级到最新版本,特别是自托管 Next.js 应用,以避免受到这些漏洞的影响。同时,要重视用户输入验证和服务器配置安全,防止潜在的安全风险。

相关推荐
小兵张健1 天前
AI 页面与交互迁移流程参考
前端·ai编程·mcp
小兵张健1 天前
掘金发布 SOP(Codex + Playwright MCP + Edge)
前端·mcp
小兵张健1 天前
Mac 上 Antigravity 无法调用 browser_subagent?一次 400 报错排查记录
前端
张拭心1 天前
编程最强的模型,竟然变成了国产的它
前端·ai编程
爱勇宝1 天前
2026一人公司生存指南:用AI大模型,90天跑出你的第一条现金流
前端·后端·架构
fe小陈1 天前
简单高效的状态管理方案:Hox + ahooks
前端
我叫黑大帅1 天前
Vue3和Uniapp的爱恨情仇:小白也能懂的跨端秘籍
前端·javascript·vue.js
Panzer_Jack1 天前
如何用 WebGL 去实现一个选取色彩背景图片透明化小工具 - Pick Alpha
前端·webgl
GIS之路1 天前
ArcGIS Pro 中的 Python 入门
前端