GHSA-777c-7fjr-54vf (CVE-2026-44488) [High] - Allocation of Resources Without Limits or Throttling in Axios
CVE-2026-44488:Axios 1.7.0至1.15.x版本fetch适配器未强制执行请求/响应大小限制(maxContentLength/maxBodyLength),可被攻击者利用导致服务器内存耗尽拒绝服务。官方已发布1.16.0和0.32.0修复版本。
GHSA-777c-7fjr-54vf (CVE-2026-44488) [High] - Allocation of Resources Without Limits or Throttling in Axios
📋 漏洞概述
Axios 1.7.0至1.15.x版本中fetch适配器未强制执行maxContentLength/maxBodyLength限制,导致资源耗尽。
📋 基础信息
| 受影响版本 | axios >= 1.7.0, < 1.16.0 以及 >= 0.0.0, < 0.32.0(即1.7.0至1.15.x,以及0.32.0以下版本) |
| 漏洞类型 | 资源未限制或无节流分配(Allocation of Resources Without Limits or Throttling) |
| CVSS | 7.5 · High |
| CVE | CVE-2026-44488 |
🔬 漏洞根因
当使用fetch适配器(包括显式指定adapter: 'fetch'、通过适配器优先级选择fetch、或在无XMLHttpRequest/HTTP适配器的环境中自动回退到fetch)时,axios在请求发送和响应接收过程中未检查用户配置的maxContentLength和maxBodyLength限制值。底层fetch API本身不提供流式大小的中断回调,axios的fetch适配器实现中缺少对Content-Length与配置阈值的比较逻辑,也未在数据读取过程中累积字节数并截断。这使得即使配置了有限的大小约束,攻击者仍可发送或接收任意大小的数据体。
🎯 攻击场景
1. 前提条件:服务端应用使用axios且配置了有限的maxContentLength或maxBodyLength(如1MB),并且运行环境中fetch适配器被选中(例如Node 18+且未强制使用http适配器)。 2. 攻击者控制一个恶意服务器,向该应用发送HTTP响应时返回一个超大的响应体(例如>100MB)。 3. 应用通过axios发起请求(如代理接口或数据拉取),axios的fetch适配器未检查Content-Length,开始将整个响应体缓冲到内存。 4. 随着数据不断流入,进程内存持续增长直至触发OOM Killer或Node.js堆限制,导致服务进程崩溃。 5. 攻击者可持续触发该请求,造成拒绝服务(DoS)。
💥 漏洞影响
攻击者可造成服务器端内存耗尽(OOM)、CPU过载或网络带宽耗尽,导致拒绝服务(Availability loss)。该漏洞不影响默认配置(maxContentLength/maxBodyLength为-1即无限制),但任何配置了有限阈值的应用均会受影响。浏览器端影响受限于浏览器沙箱,主要风险在服务端。
🛡️ 修复建议
立即升级至axios 1.16.0或0.32.0(针对1.x或0.x分支)。临时缓解措施:1)若未使用fetch适配器,显式设置adapter: 'http'以使用Node.js原生http模块,该模块可正常执行大小限制;2)在fetch适配器环境中,通过中间件或代理层在应用层校验Content-Length并拒绝过大的请求/响应体;3)限制服务器单个请求的内存缓冲上限(如通过stream.pipe或利用fetch的ReadableStream手动控制)。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-44488
- https://github.com/advisories/GHSA-777c-7fjr-54vf
- 原始来源(OSV)
🚨 威胁评估
| 📈 EPSS 利用概率 | 低 (0.0%) (高于 12.5% 的漏洞) |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-07-03 03:58 | 来源: OSV
🤖 常见问题解答(FAQ)
❓ 如何判断我的应用是否使用了fetch适配器?
检查axios配置中是否有adapter:'fetch'或adapter:['fetch',...],或者运行环境(如Node 18+)中未显式指定adapter且axios因无法加载http而回退到fetch。可通过设置axios.defaults.adapter = 'http'强制使用http适配器。
❓ 该漏洞在浏览器中是否可利用?
浏览器中影响较小,因为浏览器fetch本身有进程级内存限制且用户可与页面交互关闭,但理论上仍可能造成浏览器标签页卡死或崩溃。主要风险集中在Node.js等服务端场景。
❓ 升级后是否影响已有请求?
升级到1.16.0或0.32.0后,fetch适配器将正确校验maxContentLength和maxBodyLength,超过限制的请求/响应会被拒绝并抛出错误(与http适配器行为一致)。部分原本因绕过限制而“成功”的请求将失败,需确保业务逻辑能处理此类错误。