CVE-2017-5664: High severity Apache Tomcat vulnerability

Published Jun 6, 2017
·
Updated

The error page mechanism of the Java Servlet Specification requires that, when an error occurs and an error page is configured for the error that occurred, the original request and response are forwarded to the error page. This means that the request is presented to the error page with the original HTTP method.

If the error page is a static file, expected behaviour is to serve content of the file as if processing a GET request, regardless of the actual HTT method. Tomcat's Default Servlet did not do this. Depending on the original request this could lead to unexpected and undesirable results for static error pages including, if the DefaultServlet is configured to permit writes, the replacement or removal of the custom error page.

Affects: 7.0.0 to 7.0.77, 8.0.0.RC1 to 8.0.43, 8.5.0 to 8.5.14

Upstream fixes:

Tomcat 7.x:

https://svn.apache.org/viewvc?view=revision&revision=1793471 https://svn.apache.org/viewvc?view=revision&revision=1793491

Tomcat 8.0.x:

https://svn.apache.org/viewvc?view=revision&revision=1793470 https://svn.apache.org/viewvc?view=revision&revision=1793489

Tomcat 8.5.x:

https://svn.apache.org/viewvc?view=revision&revision=1793469 https://svn.apache.org/viewvc?view=revision&revision=1793488

External References:

https://tomcat.apache.org/security-7.html#FixedinApacheTomcat7.0.78 https://tomcat.apache.org/security-8.html#FixedinApacheTomcat8.0.44 https://tomcat.apache.org/security-8.html#FixedinApacheTomcat8.5.15

Other sources

The error page mechanism of the Java Servlet Specification requires that, when an error occurs and an error page is configured for the error that occurred, the original request and response are forwarded to the error page. This means that the request is presented to the error page with the original HTTP method. If the error page is a static file, expected behaviour is to serve content of the file as if processing a GET request, regardless of the actual HTTP method. The Default Servlet in Apache Tomcat 9.0.0.M1 to 9.0.0.M20, 8.5.0 to 8.5.14, 8.0.0.RC1 to 8.0.43 and 7.0.0 to 7.0.77 did not do this. Depending on the original request this could lead to unexpected and undesirable results for static error pages including, if the DefaultServlet is configured to permit writes, the replacement or removal of the custom error page. Notes for other user provided error pages: (1) Unless explicitly coded otherwise, JSPs ignore the HTTP method. JSPs used as error pages must must ensure that they handle any error dispatch as a GET request, regardless of the actual method. (2) By default, the response generated by a Servlet does depend on the HTTP method. Custom Servlets used as error pages must ensure that they handle any error dispatch as a GET request, regardless of the actual method.

GitHub

Affected Software

188 affected componentsFixes available
redhat/tomcat<7.0.78
7.0.78
redhat/tomcat<8.0.44
8.0.44
redhat/tomcat<8.5.15
8.5.15
maven/org.apache.tomcat:tomcat>=7.0.0<=7.0.77
7.0.78
maven/org.apache.tomcat:tomcat>=8.0.0<=8.0.43
8.0.44
maven/org.apache.tomcat:tomcat>=8.5.0<=8.5.14
8.5.15
maven/org.apache.tomcat:tomcat>=9.0.0.M1<=9.0.0.M20
9.0.0.M21
Apache Tomcat=7.0.0
Apache Tomcat=7.0.0-beta
Apache Tomcat=7.0.1
Apache Tomcat=7.0.2
Apache Tomcat=7.0.2-beta
Apache Tomcat=7.0.3
Apache Tomcat=7.0.4
Apache Tomcat=7.0.4-beta
Apache Tomcat=7.0.5
Apache Tomcat=7.0.5-beta
Apache Tomcat=7.0.6
Apache Tomcat=7.0.7
Apache Tomcat=7.0.8
Apache Tomcat=7.0.9
Apache Tomcat=7.0.10
Apache Tomcat=7.0.11
Apache Tomcat=7.0.12
Apache Tomcat=7.0.13
Apache Tomcat=7.0.14
Apache Tomcat=7.0.15
Apache Tomcat=7.0.16
Apache Tomcat=7.0.17
Apache Tomcat=7.0.18
Apache Tomcat=7.0.19
Apache Tomcat=7.0.20
Apache Tomcat=7.0.21
Apache Tomcat=7.0.22
Apache Tomcat=7.0.23
Apache Tomcat=7.0.24
Apache Tomcat=7.0.25
Apache Tomcat=7.0.26
Apache Tomcat=7.0.27
Apache Tomcat=7.0.28
Apache Tomcat=7.0.29
Apache Tomcat=7.0.30
Apache Tomcat=7.0.31
Apache Tomcat=7.0.32
Apache Tomcat=7.0.33
Apache Tomcat=7.0.34
Apache Tomcat=7.0.35
Apache Tomcat=7.0.36
Apache Tomcat=7.0.37
Apache Tomcat=7.0.38
Apache Tomcat=7.0.39
Apache Tomcat=7.0.40
Apache Tomcat=7.0.41
Apache Tomcat=7.0.42
Apache Tomcat=7.0.43
Apache Tomcat=7.0.44
Apache Tomcat=7.0.45
Apache Tomcat=7.0.46
Apache Tomcat=7.0.47
Apache Tomcat=7.0.48
Apache Tomcat=7.0.49
Apache Tomcat=7.0.50
Apache Tomcat=7.0.51
Apache Tomcat=7.0.54
Apache Tomcat=7.0.55
Apache Tomcat=7.0.56
Apache Tomcat=7.0.57
Apache Tomcat=7.0.58
Apache Tomcat=7.0.59
Apache Tomcat=7.0.60
Apache Tomcat=7.0.61
Apache Tomcat=7.0.62
Apache Tomcat=7.0.63
Apache Tomcat=7.0.64
Apache Tomcat=7.0.65
Apache Tomcat=7.0.66
Apache Tomcat=7.0.67
Apache Tomcat=7.0.68
Apache Tomcat=7.0.69
Apache Tomcat=7.0.70
Apache Tomcat=7.0.71
Apache Tomcat=7.0.72
Apache Tomcat=7.0.73
Apache Tomcat=7.0.74
Apache Tomcat=7.0.75
Apache Tomcat=7.0.76
Apache Tomcat=7.0.77
Apache Tomcat=8.0.0-rc1
Apache Tomcat=8.0.0-rc10
Apache Tomcat=8.0.0-rc3
Apache Tomcat=8.0.0-rc5
Apache Tomcat=8.0.1
Apache Tomcat=8.0.2
Apache Tomcat=8.0.3
Apache Tomcat=8.0.4
Apache Tomcat=8.0.5
Apache Tomcat=8.0.6
Apache Tomcat=8.0.7
Apache Tomcat=8.0.9
Apache Tomcat=8.0.10
Apache Tomcat=8.0.11
Apache Tomcat=8.0.12
Apache Tomcat=8.0.13
Apache Tomcat=8.0.14
Apache Tomcat=8.0.15
Apache Tomcat=8.0.16
Apache Tomcat=8.0.17
Apache Tomcat=8.0.18
Apache Tomcat=8.0.19
Apache Tomcat=8.0.20
Apache Tomcat=8.0.21
Apache Tomcat=8.0.22
Apache Tomcat=8.0.23
Apache Tomcat=8.0.24
Apache Tomcat=8.0.25
Apache Tomcat=8.0.26
Apache Tomcat=8.0.27
Apache Tomcat=8.0.28
Apache Tomcat=8.0.29
Apache Tomcat=8.0.30
Apache Tomcat=8.0.31
Apache Tomcat=8.0.32
Apache Tomcat=8.0.33
Apache Tomcat=8.0.34
Apache Tomcat=8.0.35
Apache Tomcat=8.0.36
Apache Tomcat=8.0.37
Apache Tomcat=8.0.38
Apache Tomcat=8.0.39
Apache Tomcat=8.0.40
Apache Tomcat=8.0.41
Apache Tomcat=8.0.42
Apache Tomcat=8.0.43
Apache Tomcat=8.5.0
Apache Tomcat=8.5.1
Apache Tomcat=8.5.2
Apache Tomcat=8.5.3
Apache Tomcat=8.5.4
Apache Tomcat=8.5.5
Apache Tomcat=8.5.6
Apache Tomcat=8.5.7
Apache Tomcat=8.5.8
Apache Tomcat=8.5.9
Apache Tomcat=8.5.10
Apache Tomcat=8.5.11
Apache Tomcat=8.5.12
Apache Tomcat=8.5.13
Apache Tomcat=8.5.14
Apache Tomcat=9.0.0-milestone1
Apache Tomcat=9.0.0-milestone10
Apache Tomcat=9.0.0-milestone11
Apache Tomcat=9.0.0-milestone12
Apache Tomcat=9.0.0-milestone13
Apache Tomcat=9.0.0-milestone14
Apache Tomcat=9.0.0-milestone15
Apache Tomcat=9.0.0-milestone16
Apache Tomcat=9.0.0-milestone17
Apache Tomcat=9.0.0-milestone18
Apache Tomcat=9.0.0-milestone19
Apache Tomcat=9.0.0-milestone2
Apache Tomcat=9.0.0-milestone20
Apache Tomcat=9.0.0-milestone3
Apache Tomcat=9.0.0-milestone4
Apache Tomcat=9.0.0-milestone5
Apache Tomcat=9.0.0-milestone6
Apache Tomcat=9.0.0-milestone7
Apache Tomcat=9.0.0-milestone8
Apache Tomcat=9.0.0-milestone9
Apache Tomcat=9.0.0-m1
Apache Tomcat=9.0.0-m10
Apache Tomcat=9.0.0-m11
Apache Tomcat=9.0.0-m12
Apache Tomcat=9.0.0-m13
Apache Tomcat=9.0.0-m14
Apache Tomcat=9.0.0-m15
Apache Tomcat=9.0.0-m16
Apache Tomcat=9.0.0-m17
Apache Tomcat=9.0.0-m18
Apache Tomcat=9.0.0-m19
Apache Tomcat=9.0.0-m2
Apache Tomcat=9.0.0-m20
Apache Tomcat=9.0.0-m3
Apache Tomcat=9.0.0-m4
Apache Tomcat=9.0.0-m5
Apache Tomcat=9.0.0-m6
Apache Tomcat=9.0.0-m7
Apache Tomcat=9.0.0-m8
Apache Tomcat=9.0.0-m9

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade maven/org.apache.tomcat:tomcat to a version that resolves this vulnerability.

    Fixed in 7.0.78
  2. Upgrade

    Upgrade maven/org.apache.tomcat:tomcat to a version that resolves this vulnerability.

    Fixed in 8.0.44
  3. Upgrade

    Upgrade maven/org.apache.tomcat:tomcat to a version that resolves this vulnerability.

    Fixed in 8.5.15
  4. Upgrade

    Upgrade maven/org.apache.tomcat:tomcat to a version that resolves this vulnerability.

    Fixed in 9.0.0.M21
  5. Upgrade

    Upgrade redhat/tomcat to a version that resolves this vulnerability.

    Fixed in 7.0.78
  6. Upgrade

    Upgrade redhat/tomcat to a version that resolves this vulnerability.

    Fixed in 8.0.44
  7. Upgrade

    Upgrade redhat/tomcat to a version that resolves this vulnerability.

    Fixed in 8.5.15
  8. Upgrade

    Upgrade Apache Tomcat 7 to a version that resolves this vulnerability.

    Fixed in 7.0.78
  9. Upgrade

    Upgrade Apache Tomcat 8.0 to a version that resolves this vulnerability.

    Fixed in 8.0.44
  10. Upgrade

    Upgrade Apache Tomcat 8.5 to a version that resolves this vulnerability.

    Fixed in 8.5.15
  11. Configuration

    Update custom Servlet error-page handlers so that when invoked as an error page they handle the request as a GET request regardless of the original HTTP method.

    Custom Servlets used as error pages (Apache Tomcat) error dispatch method handling = handle any error dispatch as a GET request
  12. Configuration

    Update JSP error-page handlers so that when invoked as an error page they handle the request as a GET request regardless of the original HTTP method.

    JSPs used as error pages (Apache Tomcat) error dispatch method handling = handle any error dispatch as a GET request

Event History

Jun 6, 2017
Data Sourced
via Red Hat·12:36 PM
DescriptionSeverityAffected Software
CVE Published
via MITRE·02:00 PM
Data Sourced
via MITRE·02:00 PM
DescriptionWeakness
May 13, 2022
Advisory Published
via GitHub·01:46 AM

Frequently Asked Questions

1

What is the severity of CVE-2017-5664?

CVE-2017-5664 has a medium severity level as it allows sensitive information disclosure to unauthorized users.

2

How do I fix CVE-2017-5664?

To fix CVE-2017-5664, upgrade to Apache Tomcat version 7.0.78, 8.0.44, 8.5.15, or 9.0.0.M21.

3

What causes CVE-2017-5664?

CVE-2017-5664 is caused by an improper error page handling in Apache Tomcat that can expose sensitive request and response data.

4

Which versions of Apache Tomcat are affected by CVE-2017-5664?

Apache Tomcat versions from 7.0.0 to 7.0.77 and several versions of 8.x and 9.x are affected by CVE-2017-5664.

5

What type of vulnerability is CVE-2017-5664?

CVE-2017-5664 is a security vulnerability related to information disclosure due to improper error page handling.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203