Bug 1980126 (CVE-2021-31810)

Summary: CVE-2021-31810 ruby: FTP PASV command response can cause Net::FTP to connect to arbitrary host
Product: [Other] Security Response Reporter: Pedro Sampaio <psampaio>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: andrelau, caswilli, hhorak, jaruga, joe, jorton, jprokop, kaycoth, mo, mtasaka, pvalena, ruby-maint, ruby-packagers-sig, s, strzibny, vanmeeuwen+fedora, vmugicag, vondruch, yozone
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: ruby 3.0.2, ruby 2.7.4, ruby 2.6.8, rubygem-net-ftp 0.1.3 Doc Type: If docs needed, set a value
Doc Text:
Ruby's Net::FTP module trusted the IP address included in the FTP server's response to the PASV command. A malicious FTP server could use this to make Ruby applications using the Net::FTP module to connect to arbitrary hosts and use this to perform port scanning or information extraction from systems not accessible from the FTP server.
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-08-05 19:07:01 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1980567, 1980568, 1980569, 1980570, 1980571, 1980822, 1980823, 1980824, 1980825, 1980826, 1980827, 1980828, 1986812, 1995174, 1996666, 2052643, 2052645, 2052646, 2052647, 2053195, 2057428    
Bug Blocks: 1980129    

Description Pedro Sampaio 2021-07-07 20:53:27 UTC
A malicious FTP server can use the PASV response to trick Net::FTP into connecting back to a given IP address and port. This potentially makes Net::FTP extract information about services that are otherwise private and not disclosed (e.g., the attacker can conduct port scans and service banner extractions).

References:

https://www.ruby-lang.org/en/news/2021/07/07/trusting-pasv-responses-in-net-ftp/

Comment 2 Tomas Hoger 2021-07-08 12:32:09 UTC
Upstream commit in Ruby:

https://git.ruby-lang.org/ruby.git/commit/?id=bf4d05173c7cf04d8892e4b64508ecf7902717cd

This commit makes Net::FTP ignore IP addresses used in PASV responses by default and use the same IP address that is used for the main connection.  Newly added attribute use_pasv_ip can be used to re-enable the old behaviour and make Net::FTP connect to the IP specified by the FTP server in the PASV response.  This may be required with certain FTP servers.

Note that Ruby 3.1 will no longer include Net::FTP in its standard library, but will rather bundle net-ftp gem.  A commit for this issue in the net-ftp repo is this:

https://github.com/ruby/net-ftp/commit/5709ece67cf57a94655e34532f8a7899b28d496a

Fixed in net-ftp 0.1.3.

The commit in the net-ftp repo also references this hackerone report:

https://hackerone.com/reports/1145454

It has not been made public yet, but it's likely to get disclosed in the near future.

Comment 3 Tomas Hoger 2021-07-08 12:43:17 UTC
Note that this is the same issue as was recently fixed in curl as CVE-2020-8284 - bug 1902667.

Comment 4 Tomas Hoger 2021-07-08 21:38:51 UTC
Created ruby tracking bugs for this issue:

Affects: fedora-all [bug 1980570]


Created ruby:2.5/ruby tracking bugs for this issue:

Affects: fedora-34 [bug 1980571]


Created ruby:2.6/ruby tracking bugs for this issue:

Affects: fedora-all [bug 1980567]


Created ruby:2.7/ruby tracking bugs for this issue:

Affects: fedora-all [bug 1980568]


Created ruby:master/ruby tracking bugs for this issue:

Affects: fedora-all [bug 1980569]

Comment 8 errata-xmlrpc 2021-08-05 14:53:40 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2021:3020 https://access.redhat.com/errata/RHSA-2021:3020

Comment 9 Product Security DevOps Team 2021-08-05 19:07:01 UTC
This bug is now closed. Further updates for individual products will be reflected on the CVE page(s):

https://access.redhat.com/security/cve/cve-2021-31810

Comment 10 errata-xmlrpc 2021-09-20 07:58:42 UTC
This issue has been addressed in the following products:

  Red Hat Software Collections for Red Hat Enterprise Linux 7
  Red Hat Software Collections for Red Hat Enterprise Linux 7.7 EUS

Via RHSA-2021:3559 https://access.redhat.com/errata/RHSA-2021:3559

Comment 11 errata-xmlrpc 2021-10-25 20:51:03 UTC
This issue has been addressed in the following products:

  Red Hat Software Collections for Red Hat Enterprise Linux 7
  Red Hat Software Collections for Red Hat Enterprise Linux 7.7 EUS

Via RHSA-2021:3982 https://access.redhat.com/errata/RHSA-2021:3982

Comment 12 errata-xmlrpc 2022-02-16 11:34:38 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2022:0543 https://access.redhat.com/errata/RHSA-2022:0543

Comment 13 errata-xmlrpc 2022-02-16 11:35:15 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8.4 Extended Update Support

Via RHSA-2022:0544 https://access.redhat.com/errata/RHSA-2022:0544

Comment 14 errata-xmlrpc 2022-02-21 10:11:35 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8.1 Update Services for SAP Solutions

Via RHSA-2022:0581 https://access.redhat.com/errata/RHSA-2022:0581

Comment 15 errata-xmlrpc 2022-02-21 10:12:24 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8.2 Extended Update Support

Via RHSA-2022:0582 https://access.redhat.com/errata/RHSA-2022:0582

Comment 16 errata-xmlrpc 2022-02-24 15:36:44 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2022:0672 https://access.redhat.com/errata/RHSA-2022:0672

Comment 17 errata-xmlrpc 2022-02-28 18:56:41 UTC
This issue has been addressed in the following products:

  Red Hat Software Collections for Red Hat Enterprise Linux 7

Via RHSA-2022:0708 https://access.redhat.com/errata/RHSA-2022:0708