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 应用,以避免受到这些漏洞的影响。同时,要重视用户输入验证和服务器配置安全,防止潜在的安全风险。

相关推荐
iReachers3 小时前
HTML打包APK(安卓APP)中下载功能常见问题和详细介绍
前端·javascript·html·html打包apk·网页打包app·下载功能
颜酱3 小时前
前端算法必备:双指针从入门到很熟练(快慢指针+相向指针+滑动窗口)
前端·后端·算法
lichenyang4533 小时前
从零开始:使用 Docker 部署 React 前端项目完整实战
前端
明月_清风3 小时前
【开源项目推荐】Biome:让前端代码质量工具链快到飞起来
前端
愈努力俞幸运3 小时前
vue3 demo教程(Vue Devtools)
前端·javascript·vue.js
持续前行3 小时前
在 Vue3 中使用 LogicFlow 更新节点名称
前端·javascript·vue.js
Anita_Sun3 小时前
Underscore.js 整体设计思路与架构分析
前端·javascript
程序员Agions3 小时前
AI 写的代码有 48% 在"胡说八道":那些你 npm install 的包,可能根本不存在
前端·ai编程
ycgg3 小时前
深入理解CSS transform矩阵:从底层原理到实战应用
前端
p***s913 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端