CVE-2026-53994
ProFTPD mod_sftp Heap Buffer Overflow via Unsigned Integer Underflow and Size Truncation
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.7
ProFTPD mod_sftp Heap Buffer Overflow via Unsigned Integer Underflow and Size Truncation
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.
- Record
CVE-2026-53994- CVSS 4.0
- 7.7 High
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-122
- Updated
- 2026-11-02
EUVDEUVD-2026-45396
7.7
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.
- Record
EUVD-2026-45396- CVSS 4.0
- 7.7 High
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-435f-wcrw-9x3x
7.7
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user....
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.
- Record
GHSA-435f-wcrw-9x3x- CVSS 4.0
- 7.7 High
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-122
- Updated
- 2026-11-02
NVD
7.7
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.
- Record
CVE-2026-53994- CVSS 4.0
- 7.7 High
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-122
- Updated
- 2026-11-05
OSV
7.7
ProFTPD mod_sftp Heap Buffer Overflow via Unsigned Integer Underflow and Size Truncation
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.
- Record
CVE-2026-53994- CVSS 4.0
- 7.7 High
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-122
- Updated
- 2026-11-07
OSVDEBIAN-CVE-2026-53994
6.5
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.
- Record
DEBIAN-CVE-2026-53994- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-06
OSVOESA-2026-3231
8.8
proftpd security update
ProFTPD is an enhanced FTP server with a focus toward simplicity, security, and ease of configuration. It features a very Apache-like configuration syntax, and a highly customizable server infrastructure, including support for multiple 'virtual' FTP servers, anonymous FTP, and permission-based directory visibility. This package defaults to the standalone behavior of ProFTPD, but all the needed scripts to have it run by systemd instead are included.
Security Fix(es):
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.(CVE-2026-53994)
ProFTPD before 1.3.9c and 1.3.10rc3 contains a heap-based buffer overflow vulnerability in the mod_sftp module that allows authenticated low-privilege attackers to achieve arbitrary code execution by sending crafted SFTP packet fragments exceeding the 16 KB reassembly buffer in the fxp.c component. Attackers can supply oversized fragments to trigger an incorrectly conditioned reallocation, corrupt pool freelist metadata, overwrite the root_fs BSS global pointer to reference a fake filesystem struct, and redirect pr_fsio_stat() to system() via a crafted RENAME request.(CVE-2026-63090)
ProFTPD before 1.3.9c and 1.3.10rc3 contains a signed integer overflow vulnerability in the mod_sftp module's SCP size-record parser that allows authenticated low-privilege attackers to bypass ASLR by sending a crafted file size value of UINT64_MAX, which results in a negative off_t value. Attackers can exploit the subsequent conversion to uint32_t, causing an approximately 4 GB requested read length and forcing the server to read beyond the end of the SSH channel data and write overread process memory into the uploaded file. In tested configurations, the disclosed data contains libc, libcrypto, and PIE pointers sufficient to derive their randomized base addresses, thereby bypassing ASLR and enabling reliable exploitation of memory corruption vulnerabilities in the same process.(CVE-2026-63091)
- Record
OESA-2026-3231- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-53994
7.7
ProFTPD mod_sftp contains a heap-based buffer overflow reachable by an authenticated SFTP user. The fxp_packet_read() function accepts the attacker-supplied 32-bit big-endian SFTP packet length without a minimum sanity check. A value of 0 causes an unsigned subtraction elsewhere in the read path to underflow to approximately 4 GB. That oversized request reaches the core memory allocator, where the rounded size is computed in size_t but passed to new_block() as a 32-bit int; the low 32 bits of 0x100000000 are 0, so new_block() returns a small (~512-byte) block while the caller is told it received ~4 GB. The subsequent fill loop then streams attacker-controlled bytes past the end of the 544-byte allocation, producing an attacker-controlled heap buffer overflow. An authenticated user can crash the per-connection ProFTPD session child on demand with a single malformed SFTP packet (packet_len=0 followed by a body greater than approximately 544 bytes), producing reliable authenticated remote denial of service. Depending on heap layout and adjacent allocations, heap metadata corruption and further consequences beyond denial of service may be possible, though only denial of service is demonstrated by the supplied proof of concept.
- Record
UBUNTU-CVE-2026-53994- CVSS 4.0
- 7.7 High
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVSUSE-SU-2026:5181-1 No score
Security update for proftpd
This update for proftpd fixes the following issues:
- Authenticated SFTP sessions can overflow the SFTP packet buffer (bsc#1271096).
- CVE-2026-35025: access control bypass allows authenticated FTP users to circumvent Directory ACL restrictions by
prefixing paths with
/proc/self/rootin the RNFR command handler (bsc#1269065). - CVE-2026-42167:
mod_sqlallows remote attackers to execute arbitrary code via a username when there is logging ofUSERrequests with an expansion such as%Uand the SQL backend allowscomman(bsc#1263183). - CVE-2026-44331: SQL injection in
sqltab_fetch_clients_cb()incontrib/mod_wrap2_sql.ctriggered via crafted domain name from reverse DNS lookup (bsc#1264262). - CVE-2026-53994: heap-based buffer overflow reachable by an authenticated SFTP user can lead to denial of service and memory corruption (bsc#1271946).
- CVE-2026-63090: heap-based buffer overflow in the
mod_sftpmodule can lead to arbitrary code execution via crafted SFTP packet fragments (bsc#1271944). - CVE-2026-63091: signed integer overflow in the
mod_sftpmodule's SCP size-record parser can lead to ASLR bypass via a crafted file size value ofUINT64_MAX(bsc#1271945). - CVE-2026-119147: authorization bypass in the
mod_sftpcopy-file extension handler allows SFTP users to copy any readable file to a new path in write-denied directories (bsc#1289272). - Integer overflow via client-provided file size for SCP uploads (bsc#1271097).
- Record
SUSE-SU-2026:5181-1- Updated
- 2026-11-11
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
proftpd-dfsgDebian:12 |
All versions, plus listed versions 1.3.8+dfsg-41.3.8+dfsg-4+deb12u11.3.8+dfsg-4+deb12u21.3.8+dfsg-4+deb12u31.3.8+dfsg-4+deb12u4 Show 26 moreShow less1.3.8+dfsg-4+deb12u51.3.8+dfsg-51.3.8+dfsg-61.3.8+dfsg-71.3.8+dfsg-81.3.8.a+dfsg-11.3.8.b+dfsg-11.3.8.b+dfsg-21.3.8.b+dfsg-31.3.8.b+dfsg-41.3.8.c+dfsg-11.3.8.c+dfsg-21.3.8.c+dfsg-31.3.8.c+dfsg-41.3.9a~dfsg-11.3.9b~dfsg-11.3.9c~dfsg-11.3.9d~dfsg-11.3.9e~dfsg-11.3.9e~dfsg-21.3.9e~dfsg-31.3.9~dfsg-11.3.9~dfsg-21.3.9~dfsg-31.3.9~dfsg-41.3.9~dfsg-5 |
None known |
proftpd-dfsgDebian:13 |
before 1.3.8.c+dfsg-4+deb13u3, plus listed versions 1.3.8.c+dfsg-41.3.8.c+dfsg-4+deb13u11.3.8.c+dfsg-4+deb13u2 |
1.3.8.c+dfsg-4+deb13u3 |
proftpd-dfsgDebian:14 |
before 1.3.9b~dfsg-1, plus listed versions 1.3.8.c+dfsg-41.3.9a~dfsg-11.3.9~dfsg-11.3.9~dfsg-21.3.9~dfsg-31.3.9~dfsg-41.3.9~dfsg-5 |
1.3.9b~dfsg-1 |
proftpdopenEuler:20.03-LTS-SP4 From an advisory covering 3 CVEs |
before 1.3.8b-7.oe2003sp4 | 1.3.8b-7.oe2003sp4 |
proftpdopenEuler:22.03-LTS-SP4 From an advisory covering 3 CVEs |
before 1.3.9a-3.oe2203sp4 | 1.3.9a-3.oe2203sp4 |
proftpdopenEuler:24.03-LTS-SP1 From an advisory covering 3 CVEs |
before 1.3.9a-3.oe2403sp1 | 1.3.9a-3.oe2403sp1 |
proftpdopenEuler:24.03-LTS-SP3 From an advisory covering 3 CVEs |
before 1.3.9a-3.oe2403sp3 | 1.3.9a-3.oe2403sp3 |
proftpdopenEuler:24.03-LTS-SP4 From an advisory covering 3 CVEs |
before 1.3.9a-3.oe2403sp4 | 1.3.9a-3.oe2403sp4 |
proftpdSUSE:Linux Enterprise Module for Server Applications 15 SP7 From an advisory covering 7 CVEs |
before 1.3.8b-150600.13.18.1 | 1.3.8b-150600.13.18.1 |
proftpdSUSE:Linux Enterprise Server 15 SP6-LTSS From an advisory covering 7 CVEs |
before 1.3.8b-150600.13.18.1 | 1.3.8b-150600.13.18.1 |
Show 7 moreShow less
| Package | Affected | Fixed |
|---|---|---|
proftpdSUSE:Linux Enterprise Server for SAP Applications 15 SP6 From an advisory covering 7 CVEs |
before 1.3.8b-150600.13.18.1 | 1.3.8b-150600.13.18.1 |
proftpd-dfsgUbuntu:16.04:LTS |
All versions, plus listed versions 1.3.5-21.3.5a-11.3.5a-1build11.3.5a-1ubuntu0.1 |
None known |
proftpd-dfsgUbuntu:18.04:LTS |
All versions, plus listed versions 1.3.5d-11.3.5e-1build1 |
None known |
proftpd-dfsgUbuntu:20.04:LTS |
All versions, plus listed versions 1.3.6-6build21.3.6c-11.3.6c-21.3.6c-2ubuntu0.1 |
None known |
proftpd-dfsgUbuntu:22.04:LTS |
All versions, plus listed versions 1.3.7b+dfsg-11.3.7c+dfsg-1build11.3.7c+dfsg-1ubuntu0.1 |
None known |
proftpd-dfsgUbuntu:24.04:LTS |
All versions, plus listed versions 1.3.8+dfsg-81.3.8.a+dfsg-11.3.8.b+dfsg-11.3.8.b+dfsg-1build11.3.8.b+dfsg-1build21.3.8.b+dfsg-1build31.3.8.b+dfsg-1ubuntu0.1 |
None known |
proftpd-dfsgUbuntu:26.04:LTS |
All versions, plus listed versions 1.3.9~dfsg-31.3.9~dfsg-4 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases, references | OSV | |
| affected | OSV | |
| affected | ||
| facts | NVD | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-53994 is a high vulnerability (CVSS 7.7) in Proftpd, published July 18, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.45%, the 39th percentile. Fixed in proftpd-dfsg 1.3.8.c+dfsg-4+deb13u3.
References
github.com/proftpd/proftpd
github.com/proftpd/proftpd/commit/7342836fa98e36209660a4c5805c801476f63936
vulncheck.com/advisories/proftpd-mod-sftp-heap-buffer-overflow-via-unsigned-integer-underflow-and-size-truncation
nvd.nist.gov/vuln/detail/CVE-2026-53994
github.com/advisories/GHSA-435f-wcrw-9x3x
github.com/CVEProject/cvelistV5/tree/main/cves/2026/53xxx/CVE-2026-53994.json
Show 24 moreShow less
security-tracker.debian.org/tracker/CVE-2026-53994
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3231
nvd.nist.gov/vuln/detail/CVE-2026-63090
nvd.nist.gov/vuln/detail/CVE-2026-63091
suse.com/support/update/announcement/2026/suse-su-20265181-1
bugzilla.suse.com/1263183
bugzilla.suse.com/1264262
bugzilla.suse.com/1269065
bugzilla.suse.com/1271096
bugzilla.suse.com/1271097
bugzilla.suse.com/1271944
bugzilla.suse.com/1271945
bugzilla.suse.com/1271946
bugzilla.suse.com/1289272
suse.com/security/cve/CVE-2026-119147
suse.com/security/cve/CVE-2026-35025
suse.com/security/cve/CVE-2026-42167
suse.com/security/cve/CVE-2026-44331
suse.com/security/cve/CVE-2026-53994
suse.com/security/cve/CVE-2026-63090
suse.com/security/cve/CVE-2026-63091
ubuntu.com/security/CVE-2026-53994
cve.org/CVERecord?id=CVE-2026-53994
github.com/proftpd/proftpd/issues/2115