JavaScript 库高危漏洞致数百万应用面临代码执行攻击风险

漏洞概述

广泛使用的 JavaScript form-data 库近日曝出高危安全漏洞(CVE-2025-7783),可能导致数百万应用程序面临代码执行攻击风险。该漏洞源于该库使用可预测的 Math.random() 函数生成多部分表单编码数据的边界值,攻击者可借此操纵 HTTP 请求,将恶意参数注入后端系统。

核心要点:

form-data 库使用可预测的 Math.random() 函数,导致参数注入攻击成为可能受影响版本包括:<2.5.4、3.0.0-3.0.3、4.0.0-4.0.3应立即升级至 4.0.4、3.0.4 或 2.5.4 版本

技术细节分析

GitHub 发布的公告指出,该漏洞存在于 form-data 库核心功能的一行代码中。具体而言,form_data.js 文件的第 347 行包含问题代码:boundary += Math.floor(Math.random() * 10).toString(16);。

该实现使用 JavaScript 的 Math.random() 函数生成伪随机数,当攻击者能够观察来自同一伪随机数生成器(PRNG)状态的连续值时,这些数值可以被预测。

form-data 库用于创建可读的"multipart/form-data"流,以向 Web 应用程序提交表单和文件上传。在生成分隔多部分数据的边界值时,该库依赖的 Math.random() 值可能被高级攻击者预测。安全研究人员已证实,通过观察目标应用程序产生的其他 Math.random() 值,攻击者可以确定 PRNG 状态并高精度预测未来的边界值。

影响范围与风险因素

该漏洞影响 npm 包的多个版本,包括 2.5.4 以下版本、3.0.0 至 3.0.3 版本以及 4.0.0 至 4.0.3 版本,这意味着大量使用 form-data 库处理多部分表单提交和文件上传的应用程序面临风险。

风险因素

详情

受影响产品

form-data 库(npm 包)- 版本 < 2.5.4- 版本 3.0.0 – 3.0.3- 版本 4.0.0 – 4.0.3

影响

- 参数注入攻击- 可能导致后端系统代码执行

利用前提

- 应用程序使用 form-data 处理用户控制的数据- 攻击者可观察到 Math.random() 值- 能够从连续值预测 PRNG 状态- 目标系统易受参数操纵影响

CVSS 4.0 评分

9.4(高危)

缓解措施

form-data 库已为所有受影响版本分支发布补丁。用户应根据当前使用的主版本立即升级至 4.0.4、3.0.4 或 2.5.4 版本。这些补丁使用加密安全的随机数生成替代了可预测的 Math.random() 实现,用于创建边界值。

企业应立即清点使用 form-data 库的应用程序,并根据暴露风险确定更新优先级。此外,安全团队应检查应用程序中 Math.random() 值可能被潜在攻击者观察到的其他实例,因为这代表了一类比特定 form-data 问题更广泛的漏洞类别。

THE END
本站服务器由亿华云赞助提供-企业级高防云服务器