Turn off TRACE (Automated)
Description
The HTTP TRACE verb provides debugging and diagnostics information for a given request.
Rationale
Diagnostic information, such as that found in the response to a TRACE request, often contains sensitive information which may useful to an attacker. By preventing Tomcat from providing this information, the risk of leaking sensitive information to a potential attacker is reduced.
Audit Procedure
Perform the following to determine if the server platform, as advertised in the HTTP Server header, has been changed:
- Locate all Connector elements in
$CATALINA_HOME/conf/server.xml.
- Ensure each Connector does not have an
allowTrace attribute or, if present, the allowTrace attribute is NOT set true.
Perform the following for each application hosted within Tomcat with a web-app root element in the web.xml:
- Locate each application instance of web.xml in
$CATALINA_HOME/webapps/<app_name>/WEB-INF/web.xml.
- Ensure a
security-constraint/web-resource-collection exists the child value pairings:
web-resource-name with a value of restricted methods.
url-pattern with a value of /*.
http-method with a value of TRACE.
Remediation
Perform the following to prevent Tomcat from accepting a TRACE request:
- Set the
allowTrace attribute for each Connector specified in $CATALINA_HOME/conf/server.xml to false.
<Connector ... allowTrace="false" />
Alternatively, ensure the allowTrace attribute is absent from each Connector specified in $CATALINA_HOME/conf/server.xml.
- Add the following as a child of the web-app root element, if present, in each applications web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>restricted methods</web-resource-name>
...
<http-method>TRACE</http-method>
...
</web-resource-collection>
...
</security-constraint>
Default Value
Tomcat does not allow the TRACE HTTP verb by default. Tomcat will only allow TRACE if the allowTrace attribute is present and set to true.
References
- https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
CIS Controls
v8:
- 16.7 Use Standard Hardening Configuration Templates for Application Infrastructure
- Use standard, industry-recommended hardening configuration templates for application infrastructure components. This includes underlying servers, databases, and web servers, and applies to cloud containers, Platform as a Service (PaaS) components, and SaaS components. Do not allow in-house developed software to weaken configuration hardening.
v7:
- 13.2 Remove Sensitive Data or Systems Not Regularly Accessed by Organization
- Remove sensitive data or systems not regularly accessed by the organization from the network. These systems shall only be used as stand alone systems (disconnected from the network) by the business unit needing to occasionally use the system or completely virtualized and powered off until needed.
Profile Applicability