Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

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

#149796
Merged
pablogsal merged 1 commit into
python:3.11python/cpython:3.11from
miss-islington:backport-eac4fe3-3.11miss-islington/cpython:backport-eac4fe3-3.11Copy head branch name to clipboard
Jun 27, 2026
Merged

[3.11] gh-87451: Apply CVE-2021-4189 PASV fix to ftplib.ftpcp() (GH-149648)#149796
pablogsal merged 1 commit into
python:3.11python/cpython:3.11from
miss-islington:backport-eac4fe3-3.11miss-islington/cpython:backport-eac4fe3-3.11Copy head branch name to clipboard

Conversation

@miss-islington

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

Copy link
Copy Markdown
Contributor

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>
@pablogsal
pablogsal merged commit ef12d0d into python:3.11 Jun 27, 2026
25 checks passed
@miss-islington
miss-islington deleted the backport-eac4fe3-3.11 branch June 27, 2026 17:57
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.

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.