IPBUF安全漏洞报告
English
CVE-2026-41324 CVSS 7.5 高危

CVE-2026-41324 basic-ftp内存耗尽漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-41324
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
basic-ftp (Node.js)

相关标签

拒绝服务DoSNode.jsbasic-ftp内存耗尽

漏洞概述

basic-ftp是一个用于Node.js的FTP客户端库。在5.3.0版本之前,该库在处理远程FTP服务器返回的目录列表时存在安全缺陷。由于缺乏对数据大小的限制,恶意的FTP服务器可以向客户端发送极其庞大或永不结束的列表数据。当客户端调用`Client.list()`处理这些数据时,会导致内存无限制增长,最终引发内存耗尽或进程崩溃,从而造成拒绝服务攻击。

技术细节

该漏洞源于 basic-ftp 库在解析 FTP 服务器返回的目录列表数据流时,未对数据总量进行有效的边界检查。当客户端应用调用 Client.list() 方法请求目录信息时,如果服务器端由攻击者控制,它可以构造恶意的响应流。该响应流包含巨大的数据块或持续不断的输出,导致客户端不断分配内存以缓冲接收到的数据。由于缺乏超时机制或最大内存限制机制,这种内存增长是无界的。随着内存消耗殆尽,Node.js 进程会被 OOM Killer 终止或变得极不稳定。攻击向量为网络(AV:N),无需认证(PR:N)且无需用户交互(UI:N),使得攻击者可以轻易利用此漏洞攻击任何连接到恶意 FTP 服务器的客户端。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意的FTP服务器,配置该服务器对LIST命令响应超大或永不结束的数据流。
STEP 2
步骤2
受害者使用受影响版本(< 5.3.0)的basic-ftp库连接到该恶意FTP服务器。
STEP 3
步骤3
客户端应用调用Client.list()方法请求目录列表。
STEP 4
步骤4
basic-ftp库开始缓冲服务器发送的大量数据,导致内存消耗无限制增长。
STEP 5
步骤5
客户端进程内存耗尽,触发OOM Killer导致进程崩溃,服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-41324 (basic-ftp DoS) // This simulates a vulnerable client connecting to a malicious server. const { Client } = require('basic-ftp'); async function triggerVulnerability() { const client = new Client(); try { console.log("Connecting to malicious FTP server..."); // Attacker controls this server and sends infinite data on LIST command await client.access({ host: "192.168.1.100", user: "anonymous", password: "anonymous" }); // Triggering the unbounded memory growth // The server response to list() is crafted to be extremely large/never-ending console.log("Listing files..."); const files = await client.list(); console.log(files); } catch (err) { console.error("Error or Crash occurred:", err); } finally { client.close(); } } triggerVulnerability();

影响范围

basic-ftp < 5.3.0

防御指南

临时缓解措施
在无法立即升级的情况下,应避免连接到不可信的FTP服务器。可以在应用层实现对Client.list()调用的超时控制,并严格监控Node.js进程的内存使用情况,设置内存告警和自动重启机制。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表