Skip to content

[3.15] gh-87451: Apply CVE-2021-4189 PASV fix to ftplib.ftpcp() (GH-149648)#149792

Merged
gpshead merged 1 commit into
python:3.15from
miss-islington:backport-eac4fe3-3.15
May 15, 2026
Merged

[3.15] gh-87451: Apply CVE-2021-4189 PASV fix to ftplib.ftpcp() (GH-149648)#149792
gpshead merged 1 commit into
python:3.15from
miss-islington:backport-eac4fe3-3.15

Conversation

@miss-islington
Copy link
Copy Markdown
Contributor

@miss-islington miss-islington commented May 13, 2026

ftpcp() called parse227() directly and passed the source server's
self-reported PASV IPv4 address to the target server's PORT command,
bypassing the CVE-2021-4189 fix that was applied only to FTP.makepasv().
A malicious source FTP server could use this to redirect the target
server's data connection to an arbitrary host:port (SSRF).

ftpcp() now uses the source server's actual peer address, honoring the
existing trust_server_pasv_ipv4_address opt-out, the same as makepasv().

Thanks to Qi Ding at Aurascape AI for the report. (GHSA-w8c5-q2xf-gf7c)
(cherry picked from commit eac4fe3)

Co-authored-by: Gregory P. Smith 68491+gpshead@users.noreply.github.com

…nGH-149648)

ftpcp() called parse227() directly and passed the source server's
self-reported PASV IPv4 address to the target server's PORT command,
bypassing the CVE-2021-4189 fix that was applied only to FTP.makepasv().
A malicious source FTP server could use this to redirect the target
server's data connection to an arbitrary host:port (SSRF).

ftpcp() now uses the source server's actual peer address, honoring the
existing trust_server_pasv_ipv4_address opt-out, the same as makepasv().

Thanks to Qi Ding at Aurascape AI for the report. (GHSA-w8c5-q2xf-gf7c)
(cherry picked from commit eac4fe3)

Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
@miss-islington miss-islington requested a review from giampaolo as a code owner May 13, 2026 17:33
@gpshead gpshead enabled auto-merge (squash) May 13, 2026 17:53
@gpshead gpshead merged commit 5dadc64 into python:3.15 May 15, 2026
104 of 106 checks passed
@miss-islington miss-islington deleted the backport-eac4fe3-3.15 branch May 15, 2026 10:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Development

Successfully merging this pull request may close these issues.

2 participants