Bug 1790277 (CVE-2019-20372) - CVE-2019-20372 nginx: HTTP request smuggling in configurations with URL redirect used as error_page
Summary: CVE-2019-20372 nginx: HTTP request smuggling in configurations with URL redir...
Keywords:
Status: CLOSED ERRATA
Alias: CVE-2019-20372
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
URL:
Whiteboard:
Depends On: 1790278 1790280 1790494 1790495 1795545 1795546 1798229 1798230 1798231 1798232 1798233 1848449 1888154 1898952 1936716
Blocks: 1790279
TreeView+ depends on / blocked
 
Reported: 2020-01-13 02:36 UTC by Pedro Sampaio
Modified: 2022-05-06 22:23 UTC (History)
33 users (show)

Fixed In Version: nginx 1.17.7
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-07-02 19:27:34 UTC


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2020:2817 0 None None None 2020-07-02 16:16:42 UTC
Red Hat Product Errata RHSA-2020:5495 0 None None None 2020-12-15 17:07:22 UTC
Red Hat Product Errata RHSA-2021:0778 0 None None None 2021-03-09 15:52:16 UTC
Red Hat Product Errata RHSA-2021:0779 0 None None None 2021-03-09 15:51:42 UTC

Description Pedro Sampaio 2020-01-13 02:36:43 UTC
nginx before 1.17.7, with certain error_page configurations, allows HTTP request smuggling, as demonstrated by the ability of an attacker to read unauthorized web pages in environments where nginx is being fronted by a load balancer.

Upstream patch:

https://github.com/nginx/nginx/commit/c1be55f97211d38b69ac0c2027e6812ab8b1b94e

References:

http://nginx.org/en/CHANGES
https://bertjwregeer.keybase.pub/2019-12-10%20-%20error_page%20request%20smuggling.pdf

Comment 1 Pedro Sampaio 2020-01-13 02:37:08 UTC
Created nginx tracking bugs for this issue:

Affects: fedora-all [bug 1790278]

Comment 2 Pedro Sampaio 2020-01-13 02:38:47 UTC
Created nginx tracking bugs for this issue:

Affects: epel-all [bug 1790280]

Comment 4 Yadnyawalk Tale 2020-01-13 15:03:45 UTC
We don't use nginx directly in CloudForms 5.11, that came to CFME as 'ansible-tower-server' dependency. We don't use that RPM anymore, the only RPM we take from Tower is 'ansible-tower-venv-ansible' so cfme-5.11 is not vulnerable.

Comment 18 errata-xmlrpc 2020-07-02 16:16:39 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.6 EUS
  Red Hat Software Collections for Red Hat Enterprise Linux 7.7 EUS

Via RHSA-2020:2817 https://access.redhat.com/errata/RHSA-2020:2817

Comment 19 Product Security DevOps Team 2020-07-02 19:27:34 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-2019-20372

Comment 26 errata-xmlrpc 2020-12-15 17:07:20 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2020:5495 https://access.redhat.com/errata/RHSA-2020:5495

Comment 28 errata-xmlrpc 2021-03-09 15:51:41 UTC
This issue has been addressed in the following products:

  Red Hat Ansible Tower 3.7 for RHEL 7

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

Comment 29 errata-xmlrpc 2021-03-09 15:52:14 UTC
This issue has been addressed in the following products:

  Red Hat Ansible Tower 3.6 for RHEL 7

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

Comment 30 Jason Shepherd 2021-05-04 00:13:28 UTC
Mitigation:

To mitigate this issue, use a named location instead of having the error_page handler do the redirect, this configuration is not vulnerable to request smuggling on all versions of NGINX we tested.
server {
 listen 80;
 server_name localhost;
 error_page 401 @401;
 location / {
 return 401;
 }
 location @401 {
 return 302 http://example.org;
 }
}

Comment 31 Jason Shepherd 2021-05-04 00:16:38 UTC
Statement:

Ansible Tower 3.5 and 3.6 are not vulnerable by default as are not using error_page variable in the nginx configuration. However, Ansible Tower 3.5 and 3.6 are distributing nginx 1.14 and 1.16 vulnerable versions as a dependency and configuration could be modified making it vulnerable.

Red Hat CloudForms Management Engine 5.9 and 5.10 are not vulnerable by default as are not using error_page variable in the nginx configuration. However, both mentioned builds ships vulnerable nginx versions 1.10 and 1.14 respectively. CloudForms 5.11 does not use nginx directly hence it is not vulnerable.

Red Hat Quay's configuration of nginx means it's not affected by this issue. It doesn't use error_page to do a 302 redirect. It's only use of error_page uses a named location ie:
error_page 404 /404.html;
   location = /40x.html {
 }
error_page 500 502 503 504 /50x.html;
    location = /50x.html {
}


Note You need to log in before you can comment on or make changes to this bug.