Description
The ftpcp() function in Lib/ftplib.py was not updated when CVE-2021-4189 was fixed. While makepasv() was patched to replace server-supplied PASV host addresses with the actual peer address (getpeername()[0]), ftpcp() still calls parse227() directly and passes the raw attacker-controllable IP address and port to target.sendport(). This patch is related to CVE-2021-4189.
Problem types
CWE-918 Server-Side request forgery (SSRF)
Product status
Any version before 3.15.0
Credits
Qi Deng (https://github.com/ikow)
Bénédikt Tran (https://github.com/picnixz)
Gregory P. Smith (https://github.com/gpshead)
References
github.com/python/cpython/issues/87451
github.com/python/cpython/pull/149648
mail.python.org/.../thread/ITF2BAPBQEPYK3LDMPRSY435JGNHYNDP/