Description
basic-ftp is an FTP client for Node.js. Prior to 5.2.1, basic-ftp allows FTP command injection via CRLF sequences (\r\n) in file path parameters passed to high-level path APIs such as cd(), remove(), rename(), uploadFrom(), downloadTo(), list(), and removeDir(). The library's protectWhitespace() helper only handles leading spaces and returns other paths unchanged, while FtpContext.send() writes the resulting command string directly to the control socket with \r\n appended. This lets attacker-controlled path strings split one intended FTP command into multiple commands. This vulnerability is fixed in 5.2.1.
Published: 2026-04-09
Score: 8.6 High
EPSS: 1.8% Low
KEV: No
Impact: Command Injection via CRLF
Action: Immediate Patch
AI Analysis

Impact

The basic‑ftp library, used by Node.js applications, mistakenly accepts \r\n sequences in file path parameters for high‑level methods such as cd(), remove(), rename(), uploadFrom(), downloadTo(), list(), and removeDir(). The library's protectWhitespace helper only removes leading spaces and otherwise leaves the path unchanged. When the library forwards the constructed command to the FTP server, it appends \r\n and sends the string verbatim. An attacker who can supply a controlled path can insert a CRLF and split the intended FTP command into multiple commands, thereby gaining the ability to execute arbitrary FTP operations. This is a classic example of CWE‑93, where an input that controls a protocol delimiter is not validated, leading to command injection at the protocol level.

Affected Systems

Patrick Juchli's basic‑ftp library is used by Node.js applications. Versions prior to 5.2.1 are vulnerable. Any application that imports basic‑ftp and uses high‑level path APIs (cd, remove, rename, uploadFrom, downloadTo, list, removeDir) without sanitization is affected. No information is available regarding operating system or deployment dependency.

Risk and Exploitability

The vulnerability has a CVSS vector indicating high severity with a base score of 8.6. The EPSS score is 2 %, implying a low but non‑negligible probability of exploitation. The flaw is not listed in the CISA KEV catalog. Attackers who can supply an attacker‑controlled file path and have valid FTP credentials can use CRLF sequences to split a single intended command into multiple commands, effectively gaining the ability to execute arbitrary FTP operations such as uploading, downloading, deleting, or renaming files. This can compromise confidentiality, integrity, and availability of the files on the target FTP server. The attack requires only application‑level control over the path parameter; no additional network access beyond normal FTP usage is required.

Generated by OpenCVE AI on April 21, 2026 at 23:23 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the basic‑ftp package to version 5.2.1 or later
  • Validate or sanitize all path parameters before passing them to the library, ensuring no CRLF sequences remain
  • Configure the FTP user credentials used by the application with the least privileges required to perform its intended functions

Generated by OpenCVE AI on April 21, 2026 at 23:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-chqc-8p9q-pq6q basic-ftp has FTP Command Injection via CRLF
History

Tue, 14 Apr 2026 20:15:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:a:patrickjuchli:basic-ftp:*:*:*:*:*:node.js:*:*

Sat, 11 Apr 2026 00:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Fri, 10 Apr 2026 09:00:00 +0000

Type Values Removed Values Added
First Time appeared Patrickjuchli
Patrickjuchli basic-ftp
Vendors & Products Patrickjuchli
Patrickjuchli basic-ftp

Fri, 10 Apr 2026 04:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 09 Apr 2026 17:30:00 +0000

Type Values Removed Values Added
Description basic-ftp is an FTP client for Node.js. Prior to 5.2.1, basic-ftp allows FTP command injection via CRLF sequences (\r\n) in file path parameters passed to high-level path APIs such as cd(), remove(), rename(), uploadFrom(), downloadTo(), list(), and removeDir(). The library's protectWhitespace() helper only handles leading spaces and returns other paths unchanged, while FtpContext.send() writes the resulting command string directly to the control socket with \r\n appended. This lets attacker-controlled path strings split one intended FTP command into multiple commands. This vulnerability is fixed in 5.2.1.
Title FTP Command Injection via CRLF in basic-ftp
Weaknesses CWE-93
References
Metrics cvssV3_1

{'score': 8.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L'}


Subscriptions

Patrickjuchli Basic-ftp
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-04-09T19:31:42.093Z

Reserved: 2026-04-08T00:01:47.628Z

Link: CVE-2026-39983

cve-icon Vulnrichment

Updated: 2026-04-09T17:33:06.392Z

cve-icon NVD

Status : Analyzed

Published: 2026-04-09T18:17:02.503

Modified: 2026-04-14T20:07:51.800

Link: CVE-2026-39983

cve-icon Redhat

Severity : Important

Publid Date: 2026-04-09T17:05:46Z

Links: CVE-2026-39983 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-04-21T23:30:02Z

Weaknesses