CVE-2026-102990: basic-ftp: Quadratic-time CPU denial of service in Client.list() Unix directory-listing parser (RE_LINE backtracking)
basic-ftp is an FTP client for Node.js. Prior to 6.2.1, Client.list() can be forced by a malicious or compromised FTP server to spend quadratic CPU time parsing a directory listing because the RELINE expression in src/parseListUnix.ts backtracks across adjacent variable-length owner and group fields when a long Unix-style line has a valid prefix but cannot satisfy the later size and date fields. parseList() selects a parser from the last nonblank line and then applies it to every line, so a normal final line can select the Unix parser while an earlier crafted line blocks the Node.js event loop and freezes the process. This issue is fixed in version 6.2.1.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
basic-ftpto a version that resolves this vulnerability.Fixed in 6.2.1
Event History
Frequently Asked Questions
Who is exposed to this denial of service?
Applications using basic-ftp versions prior to 6.2.1 are exposed when they call Client.list() against an FTP server that is malicious or has been compromised. The affected parsing can block the Node.js event loop and freeze the process.
What does an attacker need to exploit this issue?
The attacker needs to control the FTP directory listing returned to Client.list(). They can provide a long malformed Unix-style listing line with a valid prefix, while a normal final nonblank line causes basic-ftp to select the Unix listing parser.
What is the remediation?
Upgrade basic-ftp to version 6.2.1, which fixes the quadratic-time backtracking in the Unix directory-listing parser.