Python ftplib被动模式是否安全?CVE-2021-4189影响咨询
关于ftplib的CVE-2021-4189漏洞影响及应对建议
漏洞对你代码的影响判断
- 若你连接的是可信的FTP服务器(比如内部受控服务器、官方认证服务端),这个漏洞对你的代码基本无威胁——毕竟只有恶意服务器才会利用该缺陷诱导客户端连接恶意IP/端口。
- 但如果你的代码需要连接不可信或未知来源的FTP服务器,风险确实存在:恶意服务器会通过PASV响应返回恶意IP和端口,导致你的客户端发起非预期连接,可能被用于端口扫描或其他恶意行为。
是否需要切换到主动模式(ftp.set_pasv(False))
- 主动模式能规避这个漏洞,但要注意它的局限性:
- 主动模式下,客户端会开放端口等待服务器连接,若客户端处于NAT或防火墙后,大概率会出现连接失败(防火墙通常会拦截外部发起的主动连接)。
- 如果你必须连接不可信服务器,且网络环境支持主动模式,切换是有效的防护手段;但如果连接的是可信服务器,完全没必要切换,保持被动模式即可。
更稳妥的替代方案(若无法切换模式)
- 升级Python版本:该漏洞已在Python 3.9.10、3.10.2及后续版本中修复,修复后ftplib会验证PASV响应中的主机是否与FTP服务器地址一致,阻止恶意跳转。
- 手动验证PASV响应:若无法升级Python,可在代码中手动检查PASV返回的IP是否与你连接的
FTP_ADDRESS一致,不一致则拒绝连接。
内容的提问来源于stack exchange,提问作者Anne Yo
相关产品推荐
相关产品推荐

