VMware vSphere 6.7 STS Tomcat Security Technical Implementation Guide

  • Version/Release: V1R3
  • Published: 2023-06-20
  • Expand All:
  • Severity:
  • Sort:
Compare

Select any two versions of this STIG to compare the individual requirements

View

Select any old version/release of this STIG to view the previous requirements

This Security Technical Implementation Guide is published as a tool to improve the security of Department of Defense (DOD) information systems. The requirements are derived from the National Institute of Standards and Technology (NIST) 800-53 and related documents. Comments or proposed revisions to this document should be sent via email to the following address: disa.stig_spt@mail.mil.
b
The Security Token Service must limit the amount of time that each TCP connection is kept alive.
AC-10 - Medium - CCI-000054 - V-239652 - SV-239652r879511_rule
RMF Control
AC-10
Severity
Medium
CCI
CCI-000054
Version
VCST-67-000001
Vuln IDs
  • V-239652
Rule IDs
  • SV-239652r879511_rule
Denial of service (DoS) is one threat against web servers. Many DoS attacks attempt to consume web server resources in such a way that no more resources are available to satisfy legitimate requests. In Tomcat, the "connectionTimeout" attribute sets the number of milliseconds the server will wait after accepting a connection for the request URI line to be presented. This timeout will also be used when reading the request body (if any). This prevents idle sockets that are not sending HTTP requests from consuming system resources and potentially denying new connections.
Checks: C-42885r816679_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/server.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/Server/Service/Connector[@port="${bio-custom.http.port}"]/@connectionTimeout' - Expected result: connectionTimeout="60000" If the output does not match the expected result, this is a finding.

Fix: F-42844r816680_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Navigate to each of the <Connector> nodes. Configure each <Connector> node with the value: connectionTimeout="60000"

b
The Security Token Service must limit the number of concurrent connections permitted.
AC-10 - Medium - CCI-000054 - V-239653 - SV-239653r879511_rule
RMF Control
AC-10
Severity
Medium
CCI
CCI-000054
Version
VCST-67-000002
Vuln IDs
  • V-239653
Rule IDs
  • SV-239653r879511_rule
Resource exhaustion can occur when an unlimited number of concurrent requests are allowed on a website, facilitating a denial-of-service attack. Unless the number of requests is controlled, the web server can consume enough system resources to cause a system crash. Mitigating this kind of attack will include limiting the number of concurrent HTTP/HTTPS requests. In Tomcat, each incoming request requires a thread for the duration of that request. If more simultaneous requests are received than can be handled by the currently available request processing threads, additional threads will be created up to the value of the "maxThreads" attribute.
Checks: C-42886r816682_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/server.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/Server/Service/Executor[@name="tomcatThreadPool"]/@maxThreads' - Expected result: maxThreads="300" If the output does not match the expected result, this is a finding.

Fix: F-42845r816683_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Navigate to the <Executor> mode with the name of "tomcatThreadPool" and configure with the value: 'maxThreads="300"' Note: The <Executor> node should be configured as follows: <Executor maxThreads="300" minSpareThreads="50" name="tomcatThreadPool" namePrefix="tomcat-http--" />

b
The Security Token Service must limit the maximum size of a POST request.
AC-10 - Medium - CCI-000054 - V-239654 - SV-239654r879511_rule
RMF Control
AC-10
Severity
Medium
CCI
CCI-000054
Version
VCST-67-000003
Vuln IDs
  • V-239654
Rule IDs
  • SV-239654r879511_rule
The "maxPostSize" value is the maximum size in bytes of the POST that will be handled by the container FORM URL parameter parsing. Limit its size to reduce exposure to a denial-of-service attack. If "maxPostSize" is not set, the default value of 2097152 (2MB) is used. Security Token Service is configured in its shipping state to not set a value for "maxPostSize".
Checks: C-42887r816685_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/server.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/Server/Service/Connector[@port="${bio-custom.http.port}"]/@maxPostSize' - Expected result: XPath set is empty If the output does not match the expected result, this is a finding.

Fix: F-42846r816686_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Navigate to each of the <Connector> nodes. Remove any configuration for "maxPostSize".

b
The Security Token Service must protect cookies from XSS.
AC-10 - Medium - CCI-000054 - V-239655 - SV-239655r879511_rule
RMF Control
AC-10
Severity
Medium
CCI
CCI-000054
Version
VCST-67-000004
Vuln IDs
  • V-239655
Rule IDs
  • SV-239655r879511_rule
Cookies are a common way to save session state over the HTTP(S) protocol. If an attacker can compromise session data stored in a cookie, they are better able to launch an attack against the server and its applications. When a cookie is tagged with the "HttpOnly" flag, it tells the browser that this particular cookie should only be accessed by the originating server. Any attempt to access the cookie from client script is strictly forbidden. Satisfies: SRG-APP-000001-WSR-000002, SRG-APP-000223-WSR-000011, SRG-APP-000439-WSR-000154
Checks: C-42888r816688_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/web.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/web-app/session-config/cookie-config/http-only' - Expected result: &lt;http-only&gt;true&lt;/http-only&gt; If the output does not match the expected result, this is a finding.

Fix: F-42847r816689_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/web.xml. Navigate to the <session-config> node and configure it as follows: <session-config> <session-timeout>30</session-timeout> <cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config> </session-config>

b
The Security Token Service must record user access in a format that enables monitoring of remote access.
AC-17 - Medium - CCI-000067 - V-239656 - SV-239656r879521_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-000067
Version
VCST-67-000005
Vuln IDs
  • V-239656
Rule IDs
  • SV-239656r879521_rule
Remote access can be exploited by an attacker to compromise the server. By recording all remote access activities, it will be possible to determine the attacker's location, intent, and degree of success. Tomcat can be configured with an "AccessLogValve", a component that can be inserted into the request processing pipeline to provide robust access logging. The AccessLogValve creates log files in the same format as those created by standard web servers. When AccessLogValve is properly configured, log files will contain all the forensic information necessary in the case of a security incident. Satisfies: SRG-APP-000016-WSR-000005, SRG-APP-000089-WSR-000047, SRG-APP-000095-WSR-000056, SRG-APP-000096-WSR-000057, SRG-APP-000097-WSR-000058, SRG-APP-000098-WSR-000059, SRG-APP-000098-WSR-000060, SRG-APP-000099-WSR-000061, SRG-APP-000100-WSR-000064, SRG-APP-000092-WSR-000055, SRG-APP-000374-WSR-000172, SRG-APP-000375-WSR-000171
Checks: C-42889r816691_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/server.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/Server/Service/Engine/Host/Valve[@className="org.apache.catalina.valves.AccessLogValve"]'/@pattern - Expected result: pattern="%h %{X-Forwarded-For}i %l %u %t &amp;quot;%r&amp;quot; %s %b &amp;quot;%{User-Agent}i&amp;quot;" If the output does not match the expected result, this is a finding.

Fix: F-42848r816692_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Inside the <Host> node, add the "AccessLogValve" <Valve> node entirely if it does not exist or update the existing pattern to match the following line: <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %{X-Forwarded-For}i %l %u %t &quot;%r&quot; %s %b &quot;%{User-Agent}i&quot;" resolveHosts="false" prefix="localhost_access_log" suffix=".txt" />

b
The Security Token Service must generate log records during Java startup and shutdown.
AU-12 - Medium - CCI-000169 - V-239657 - SV-239657r879559_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
VCST-67-000006
Vuln IDs
  • V-239657
Rule IDs
  • SV-239657r879559_rule
Logging must be started as soon as possible when a service starts and as late as possible when a service is stopped. Many forms of suspicious actions can be detected by analyzing logs for unexpected service starts and stops. Also, by starting to log immediately after a service starts, it becomes more difficult for suspicious activity to go unlogged.
Checks: C-42890r816694_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep "1catalina.org.apache.juli.FileHandler" /usr/lib/vmware-sso/vmware-sts/conf/logging.properties Expected result: handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler 1catalina.org.apache.juli.FileHandler.level = FINE 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 1catalina.org.apache.juli.FileHandler.bufferSize = -1 If the output does not match the expected result, this is a finding.

Fix: F-42849r816695_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/logging.properties. Ensure that the "handlers" and ".handlers" lines are configured as follows: handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler Ensure that the following lines are present: 1catalina.org.apache.juli.FileHandler.level = FINE 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 1catalina.org.apache.juli.FileHandler.bufferSize = -1

b
Security Token Service log files must only be modifiable by privileged users.
AU-9 - Medium - CCI-000163 - V-239658 - SV-239658r879577_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000163
Version
VCST-67-000007
Vuln IDs
  • V-239658
Rule IDs
  • SV-239658r879577_rule
Log data is essential in the investigation of events. The accuracy of the information is always pertinent. One of the first steps an attacker will undertake is the modification or deletion of log records to cover tracks and prolong discovery. The web server must protect the log data from unauthorized modification. Security Token Service restricts all modification of log files by default, but this configuration must be verified. Satisfies: SRG-APP-000119-WSR-000069, SRG-APP-000120-WSR-000070
Checks: C-42891r816697_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # find /storage/log/vmware/sso/ -xdev -type f -a '(' -perm -o+w -o -not -user root -o -not -group root ')' -exec ls -ld {} \; If any files are returned, this is a finding.

Fix: F-42850r816698_fix

Connect to the PSC, whether external or embedded. At the command prompt, execute the following commands: # chmod o-w <file> # chown root:root <file> Note: Substitute <file> with the listed file.

b
The Security Token Service application files must be verified for their integrity.
CM-5 - Medium - CCI-001749 - V-239659 - SV-239659r879584_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001749
Version
VCST-67-000008
Vuln IDs
  • V-239659
Rule IDs
  • SV-239659r879584_rule
Verifying that the Security Token Service application code is unchanged from its shipping state is essential for file validation and non-repudiation of the Security Token Service. There is no reason the MD5 hash of the rpm original files should be changed after installation, excluding configuration files. Satisfies: SRG-APP-000131-WSR-000051, SRG-APP-000357-WSR-000150
Checks: C-42892r816700_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # rpm -V vmware-identity-sts|grep "^..5......"|grep -E "\.war|\.jar|\.sh|\.py" If there is any output, this is a finding.

Fix: F-42851r816701_fix

Connect to the PSC, whether external or embedded. Reinstall the VCSA or roll back to a snapshot. Modifying the Security Token Service installation files manually is not supported by VMware.

b
The Security Token Service must only run one web app.
CM-5 - Medium - CCI-001749 - V-239660 - SV-239660r879584_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001749
Version
VCST-67-000009
Vuln IDs
  • V-239660
Rule IDs
  • SV-239660r879584_rule
VMware ships the Security Token Service on the VCSA with one web app, in ROOT.war. Any other .war file is potentially malicious and must be removed.
Checks: C-42893r816703_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # ls /usr/lib/vmware-sso/vmware-sts/webapps/*.war Expected result: /usr/lib/vmware-sso/vmware-sts/webapps/ROOT.war If the result of this command does not match the expected result, this is a finding.

Fix: F-42852r816704_fix

Connect to the PSC, whether external or embedded. For each unexpected file returned in the check, run the following command: # rm /usr/lib/vmware-sso/vmware-sts/webapps/<NAME>.war Restart the service with the following command: # service-control --restart vmware-stsd

b
The Security Token Service must not be configured with unused realms.
CM-7 - Medium - CCI-000381 - V-239661 - SV-239661r879587_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
VCST-67-000010
Vuln IDs
  • V-239661
Rule IDs
  • SV-239661r879587_rule
The Security Token Service performs user authentication at the application level and not through Tomcat. To eliminate unnecessary features and ensure that the Security Token Service remains in its shipping state, the lack of a "UserDatabaseRealm" configuration must be confirmed.
Checks: C-42894r816706_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep UserDatabase /usr/lib/vmware-sso/vmware-sts/conf/server.xml If the command produces any output, this is a finding.

Fix: F-42853r816707_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Remove the <Realm> nodes returned in the check.

b
The Security Token Service must be configured to limit access to internal packages.
CM-7 - Medium - CCI-000381 - V-239662 - SV-239662r879587_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
VCST-67-000011
Vuln IDs
  • V-239662
Rule IDs
  • SV-239662r879587_rule
The "package.access" entry in the "catalina.properties" file implements access control at the package level. When properly configured, a Security Exception will be reported if an errant or malicious web app attempts to access the listed internal classes directly or if a new class is defined under the protected packages. The Security Token Service comes preconfigured with the appropriate packages defined in "package.access", and this configuration must be maintained.
Checks: C-42895r816709_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep "package.access" /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties Expected result: package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper. If the output of the command does not match the expected result, this is a finding.

Fix: F-42854r816710_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties. Ensure that the "package.access" line is configured as follows: package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.

b
The Security Token Service must have Multipurpose Internet Mail Extensions (MIME) that invoke OS shell programs disabled.
CM-7 - Medium - CCI-000381 - V-239663 - SV-239663r879587_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
VCST-67-000012
Vuln IDs
  • V-239663
Rule IDs
  • SV-239663r879587_rule
MIME mappings tell the Security Token Service what type of program various file types and extensions are and what external utilities or programs are needed to execute the file type. By ensuring that various shell script MIME types are not included in "web.xml", the server is protected against malicious users tricking the server into executing shell command files.
Checks: C-42896r816712_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep -En '(x-csh&lt;)|(x-sh&lt;)|(x-shar&lt;)|(x-ksh&lt;)' /usr/lib/vmware-sso/vmware-sts/conf/web.xml If the command produces any output, this is a finding.

Fix: F-42855r816713_fix

Connect to the PSC, whether external or embedded. Open /usr/lib/vmware-sso/vmware-sts/conf/web.xml in a text editor. Remove the parent <mime-mapping> node of any line returned from the check. Example: <mime-mapping> <extension>csh</extension> <mime-type>application/x-csh</mime-type> </mime-mapping>

b
The Security Token Service must have mappings set for Java servlet pages.
CM-7 - Medium - CCI-000381 - V-239664 - SV-239664r879587_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
VCST-67-000013
Vuln IDs
  • V-239664
Rule IDs
  • SV-239664r879587_rule
Resource mapping is the process of tying a particular file type to a process in the web server that can serve that type of file to a requesting client and identify which file types are not to be delivered to a client. By not specifying which files can and cannot be served to a user, the web server could deliver to a user web server configuration files, log files, password files, etc. As Tomcat is a Java-based web server, the main file extension used is *.jsp. This check ensures that the *.jsp and *.jspx file types have been properly mapped to servlets.
Checks: C-42897r816715_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/web.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/web-app/servlet-mapping/servlet-name[text()="jsp"]/parent::servlet-mapping' - Expected result: &lt;servlet-mapping&gt; &lt;servlet-name&gt;jsp&lt;/servlet-name&gt; &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt; &lt;url-pattern&gt;*.jspx&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; If the output of the command does not match the expected result, this is a finding.

Fix: F-42856r816716_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/web.xml. Inside the <web-app> parent node, add the following: <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping>

b
The Security Token Service must not have the Web Distributed Authoring (WebDAV) servlet installed.
CM-7 - Medium - CCI-000381 - V-239665 - SV-239665r879587_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
VCST-67-000014
Vuln IDs
  • V-239665
Rule IDs
  • SV-239665r879587_rule
WebDAV is an extension to the HTTP protocol that, when developed, was meant to allow users to create, change, and move documents on a server, typically a web server or web share. WebDAV is not widely used and has serious security concerns because it may allow clients to modify unauthorized files on the web server and must therefore be disabled. Tomcat uses the "org.apache.catalina.servlets.WebdavServlet" servlet to provide WebDAV services. Because the WebDAV service has been found to have an excessive number of vulnerabilities, this servlet must not be installed. The Security Token Service does not configure WebDAV by default.
Checks: C-42898r816718_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep -n 'webdav' /usr/lib/vmware-sso/vmware-sts/conf/web.xml If the command produces any output, this is a finding.

Fix: F-42857r816719_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/web.xml. Find the <servlet-name>webdav</servlet-name> node and remove the entire parent <servlet> block. Find the <servlet-name>webdav</servlet-name> node and remove the entire parent <servlet-mapping> block.

b
The Security Token Service must be configured with memory leak protection.
CM-7 - Medium - CCI-000381 - V-239666 - SV-239666r879587_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
VCST-67-000015
Vuln IDs
  • V-239666
Rule IDs
  • SV-239666r879587_rule
The Java Runtime environment can cause a memory leak or lock files under certain conditions. Without memory leak protection, the Security Token Service can continue to consume system resources, which will lead to "OutOfMemoryErrors" when reloading web applications. Memory leaks occur when JRE code uses the context class loader to load a singleton. This will cause a memory leak if a web application class loader happens to be the context class loader at the time. The "JreMemoryLeakPreventionListener" class is designed to initialize these singletons when Tomcat's common class loader is the context class loader. Proper use of JRE memory leak protection will ensure that the hosted application does not consume system resources and cause an unstable environment.
Checks: C-42899r816721_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep JreMemoryLeakPreventionListener /usr/lib/vmware-sso/vmware-sts/conf/server.xml Expected result: &lt;Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/&gt; If the output of the command does not match the expected result, this is a finding.

Fix: F-42858r816722_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Navigate to the <Server> node. Add '<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>' to the <Server> node.

b
The Security Token Service must not have any symbolic links in the web content directory tree.
CM-7 - Medium - CCI-000381 - V-239667 - SV-239667r879587_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
VCST-67-000016
Vuln IDs
  • V-239667
Rule IDs
  • SV-239667r879587_rule
A web server is designed to deliver content and execute scripts or applications on the request of a client or user. Containing user requests to files in the directory tree of the hosted web application and limiting the execution of scripts and applications guarantees that the user is not accessing information protected outside the application's realm. By checking that no symbolic links exist in the document root, the web server is protected from users jumping outside the hosted application directory tree and gaining access to the other directories, including the system root.
Checks: C-42900r816724_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # find /usr/lib/vmware-sso/vmware-sts/webapps/ -type l -ls If the command produces any output, this is a finding.

Fix: F-42859r816725_fix

Connect to the PSC, whether external or embedded. At the command prompt, execute the following commands: Note: Replace <file_name> for the name of any files that were returned. # unlink <file_name> Repeat the commands for each file that was returned.

b
The Security Token Service directory tree must have permissions in an "out-of-the-box" state.
SC-2 - Medium - CCI-001082 - V-239668 - SV-239668r879631_rule
RMF Control
SC-2
Severity
Medium
CCI
CCI-001082
Version
VCST-67-000017
Vuln IDs
  • V-239668
Rule IDs
  • SV-239668r879631_rule
As a rule, accounts on a web server are to be kept to a minimum. Only administrators, web managers, developers, auditors, and web authors require accounts on the machine hosting the web server. The resources to which these accounts have access must also be closely monitored and controlled. The Security Token Service files must be adequately protected with correct permissions as applied out of the box. Satisfies: SRG-APP-000211-WSR-000030, SRG-APP-000380-WSR-000072
Checks: C-42901r816727_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # find /usr/lib/vmware-sso/vmware-sts/ -xdev -type f -a '(' -not -user root -o -not -group root ')' -exec ls -ld {} \; If the command produces any output, this is a finding.

Fix: F-42860r816728_fix

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # chown root:root <file_name> Repeat the command for each file that was returned. Note: Replace <file_name> for the name of the file that was returned.

b
The Security Token Service must fail to a known safe state if system initialization fails, shutdown fails, or aborts fail.
SC-24 - Medium - CCI-001190 - V-239669 - SV-239669r879640_rule
RMF Control
SC-24
Severity
Medium
CCI
CCI-001190
Version
VCST-67-000018
Vuln IDs
  • V-239669
Rule IDs
  • SV-239669r879640_rule
Determining a safe state for failure and weighing that against a potential denial of service for users depends on what type of application the web server is hosting. For the Security Token Service, it is preferable that the service abort startup on any initialization failure rather than continuing in a degraded and potentially insecure state.
Checks: C-42902r816730_chk

Connect to the PSC, whether external or embedded. At the command line, execute the following command: # grep EXIT_ON_INIT_FAILURE /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties Expected result: org.apache.catalina.startup.EXIT_ON_INIT_FAILURE=true If the output of the command does not match the expected result, this is a finding.

Fix: F-42861r816731_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties. Add or change the following line: org.apache.catalina.startup.EXIT_ON_INIT_FAILURE=true

b
The Security Token Service must limit the number of allowed connections.
SC-5 - Medium - CCI-001094 - V-239670 - SV-239670r879650_rule
RMF Control
SC-5
Severity
Medium
CCI
CCI-001094
Version
VCST-67-000019
Vuln IDs
  • V-239670
Rule IDs
  • SV-239670r879650_rule
Limiting the number of established connections to the Security Token Service is a basic denial of service protection. Servers where the limit is too high or unlimited can potentially run out of system resources and negatively affect system availability.
Checks: C-42903r816733_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/server.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/Server/Service/Connector[@port="${bio-custom.http.port}"]/@acceptCount' - Expected result: acceptCount="100" If the output does not match the expected result, this is a finding.

Fix: F-42862r816734_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Navigate to the <Connector> configured with port="${bio-custom.http.port}". Add or change the following value: acceptCount="100"

b
The Security Token Service must set "URIEncoding" to UTF-8.
SI-10 - Medium - CCI-001310 - V-239671 - SV-239671r879652_rule
RMF Control
SI-10
Severity
Medium
CCI
CCI-001310
Version
VCST-67-000020
Vuln IDs
  • V-239671
Rule IDs
  • SV-239671r879652_rule
Invalid user input occurs when a user inserts data or characters into a hosted application's data entry field and the hosted application is unprepared to process that data. This results in unanticipated application behavior, potentially leading to an application compromise. Invalid user input is one of the primary methods employed when attempting to compromise an application. An attacker can also enter Unicode characters into hosted applications in an effort to break out of the document home or root home directory or bypass security checks. The Security Token Service must be configured to use a consistent character set via the "URIEncoding" attribute on the Connector nodes.
Checks: C-42904r816736_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/server.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/Server/Service/Connector[@port="${bio-custom.http.port}"]/@URIEncoding' - Expected result: URIEncoding="UTF-8" If the output does not match the expected result, this is a finding.

Fix: F-42863r816737_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Navigate to each of the <Connector> nodes. Configure each <Connector> node with the value 'URIEncoding="UTF-8"'.

b
The Security Token Service must use the "setCharacterEncodingFilter" filter.
SI-10 - Medium - CCI-001310 - V-239672 - SV-239672r879652_rule
RMF Control
SI-10
Severity
Medium
CCI
CCI-001310
Version
VCST-67-000021
Vuln IDs
  • V-239672
Rule IDs
  • SV-239672r879652_rule
Invalid user input occurs when a user inserts data or characters into a hosted application's data entry field and the hosted application is unprepared to process that data. This results in unanticipated application behavior, potentially leading to an application compromise. Invalid user input is one of the primary methods employed when attempting to compromise an application. An attacker can also enter Unicode characters into hosted applications in an effort to break out of the document home or root home directory or to bypass security checks. VMware uses the standard Tomcat "SetCharacterEncodingFilter" to provide a layer of defense against character encoding attacks. Filters are Java objects that perform filtering tasks on the request to a resource (a servlet or static content), the response from a resource, or both.
Checks: C-42905r816739_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/web.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/web-app/filter-mapping/filter-name[text()="setCharacterEncodingFilter"]/parent::filter-mapping' - Expected result: &lt;filter-mapping&gt; &lt;filter-name&gt;setCharacterEncodingFilter&lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; If the output is does not match the expected result, this is a finding. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/web.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/web-app/filter/filter-name[text()="setCharacterEncodingFilter"]/parent::filter' - Expected result: &lt;filter&gt; &lt;filter-name&gt;setCharacterEncodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.catalina.filters.SetCharacterEncodingFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;encoding&lt;/param-name&gt; &lt;param-value&gt;UTF-8&lt;/param-value&gt; &lt;/init-param&gt; &lt;init-param&gt; &lt;param-name&gt;ignore&lt;/param-name&gt; &lt;param-value&gt;true&lt;/param-value&gt; &lt;/init-param&gt; &lt;async-supported&gt;true&lt;/async-supported&gt; &lt;/filter&gt; If the output is does not match the expected result, this is a finding.

Fix: F-42864r816740_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/web.xml. Configure the <web-app> node with the child nodes listed below: <filter-mapping> <filter-name>setCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>setCharacterEncodingFilter</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>ignore</param-name> <param-value>true</param-value> </init-param> <async-supported>true</async-supported> </filter>

b
The Security Token Service must set the welcome-file node to a default web page.
SI-11 - Medium - CCI-001312 - V-239673 - SV-239673r879655_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001312
Version
VCST-67-000022
Vuln IDs
  • V-239673
Rule IDs
  • SV-239673r879655_rule
Enumeration techniques, such as URL parameter manipulation, rely on being able to obtain information about the web server's directory structure by locating directories without default pages. In this scenario, the web server will display to the user a listing of the files in the directory being accessed. By having a default hosted application web page, the anonymous web user will not obtain directory browsing information or an error message that reveals the server type and version. Ensuring that every document directory has an "index.jsp" (or equivalent) file is one approach to mitigating the vulnerability.
Checks: C-42906r816742_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/web.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/web-app/welcome-file-list' - Expected result: &lt;welcome-file-list&gt; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt; &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; If the output of the command does not match the expected result, this is a finding.

Fix: F-42865r816743_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/web.xml. Add the following section under the <web-apps> node: <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>

b
The Security Token Service must not show directory listings.
SI-11 - Medium - CCI-001312 - V-239674 - SV-239674r879655_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001312
Version
VCST-67-000023
Vuln IDs
  • V-239674
Rule IDs
  • SV-239674r879655_rule
Enumeration techniques, such as URL parameter manipulation, rely on being able to obtain information about the web server's directory structure by locating directories without default pages. In this scenario, the web server will display to the user a listing of the files in the directory being accessed. Ensuring that directory listing is disabled is one approach to mitigating the vulnerability.
Checks: C-42907r816745_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/web.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '//param-name[text()="listings"]/parent::init-param' - Expected result: &lt;init-param&gt; &lt;param-name&gt;listings&lt;/param-name&gt; &lt;param-value&gt;false&lt;/param-value&gt; &lt;/init-param&gt; If the output of the command does not match the expected result, this is a finding.

Fix: F-42866r816746_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/web.xml. Set the <param-value> to "false" in all <param-name>listing</param-name> nodes. Note: The setting should look like the following: <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param>

b
The Security Token Service must be configured to show error pages with minimal information.
SI-11 - Medium - CCI-001312 - V-239675 - SV-239675r879655_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001312
Version
VCST-67-000024
Vuln IDs
  • V-239675
Rule IDs
  • SV-239675r879655_rule
Web servers will often display error messages to client users, displaying enough information to aid in the debugging of the error. The information given back in error messages may display the web server type, version, patches installed, plug-ins and modules installed, type of code being used by the hosted application, and any backends being used for data storage. This information could be used by an attacker to blueprint what type of attacks might be successful. As such, the Security Token Service must be configured to not show server version information in error messages.
Checks: C-42908r816748_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/server.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/Server/Service/Engine/Host/Valve[@className="org.apache.catalina.valves.ErrorReportValve"]' - Expected result: &lt;Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false"/&gt; If the output does not match the expected result, this is a finding.

Fix: F-42867r816749_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Locate the following Host block: <Host appBase="webapps" ...> ... </Host> Inside this block, add the following on a new line: <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />

b
The Security Token Service must not enable support for TRACE requests.
SI-11 - Medium - CCI-001312 - V-239676 - SV-239676r879655_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001312
Version
VCST-67-000025
Vuln IDs
  • V-239676
Rule IDs
  • SV-239676r879655_rule
"Trace" is a technique for a user to request internal information about Tomcat. This is useful during product development but should not be enabled in production. Allowing an attacker to conduct a Trace operation against the Security Token Service will expose information that would be useful to perform a more targeted attack. The Security Token Service provides the "allowTrace" parameter as a means to disable responding to Trace requests.
Checks: C-42909r816751_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep allowTrace /usr/lib/vmware-sso/vmware-sts/conf/server.xml If "allowTrace" is set to "true", this is a finding. If no line is returned, this is NOT a finding.

Fix: F-42868r816752_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/server.xml. Navigate to and locate: 'allowTrace="true"' Remove the 'allowTrace="true"' setting.

b
The Security Token Service must have the debug option disabled.
SI-11 - Medium - CCI-001312 - V-239677 - SV-239677r879655_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001312
Version
VCST-67-000026
Vuln IDs
  • V-239677
Rule IDs
  • SV-239677r879655_rule
Information needed by an attacker to begin looking for possible vulnerabilities in a web server includes any information about the web server and plug-ins or modules being used. When debugging or trace information is enabled in a production web server, information about the web server, such as web server type, version, patches installed, plug-ins and modules installed, type of code being used by the hosted application, and any backends being used for data storage may be displayed. Since this information may be placed in logs and general messages during normal operation of the web server, an attacker does not need to cause an error condition to gain this information. The Security Token Service can be configured to set the debugging level. By setting the debugging level to zero, no debugging information will be provided to a malicious user.
Checks: C-42910r816754_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/web.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '//param-name[text()="debug"]/parent::init-param' - Expected result: &lt;init-param&gt; &lt;param-name&gt;debug&lt;/param-name&gt; &lt;param-value&gt;0&lt;/param-value&gt; &lt;/init-param&gt; If the output of the command does not match the expected result, this is a finding. If no lines are returned, this is not a finding.

Fix: F-42869r816755_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/web.xml. Navigate to all <debug> nodes that are not set to "0". Set the <param-value> to "0" in all <param-name>debug</param-name> nodes. Note: The debug setting should look like the following: <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param>

b
Rsyslog must be configured to monitor and ship Security Token Service log files.
AU-9 - Medium - CCI-001348 - V-239678 - SV-239678r879731_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-001348
Version
VCST-67-000027
Vuln IDs
  • V-239678
Rule IDs
  • SV-239678r879731_rule
The Security Token Service produces a number of logs that must be offloaded from the originating system. This information can then be used for diagnostic, forensics, or other purposes relevant to ensuring the availability and integrity of the hosted application. Satisfies: SRG-APP-000358-WSR-000163, SRG-APP-000125-WSR-000071
Checks: C-42911r816757_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep -v "^#" /etc/vmware-syslog/stig-services-sso.conf Expected result: input(type="imfile" File="/var/log/vmware/sso/*.log" Tag="vmidentity" PersistStateInterval="200" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/sso/sts-runtime.log.*" Tag="sts-runtime" PersistStateInterval="200" Severity="info" Facility="local0") If the file does not exist, this is a finding. If the output of the command does not match the expected result, this is a finding.

Fix: F-42870r816758_fix

Connect to the PSC, whether external or embedded. Navigate to and open /etc/vmware-syslog/stig-services-sso.conf. Create the file if it does not exist. Set the contents of the file as follows: input(type="imfile" File="/var/log/vmware/sso/*.log" Tag="vmidentity" PersistStateInterval="200" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/sso/sts-runtime.log.*" Tag="sts-runtime" PersistStateInterval="200" Severity="info" Facility="local0")

b
The Security Token Service must be configured with the appropriate ports.
CM-7 - Medium - CCI-001762 - V-239679 - SV-239679r879756_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-001762
Version
VCST-67-000028
Vuln IDs
  • V-239679
Rule IDs
  • SV-239679r879756_rule
Web servers provide numerous processes, features, and functionalities that use TCP/IP ports. Some of these processes may be deemed unnecessary or too unsecure to run on a production system. The ports that the Security Token Service listens on are configured in the "catalina.properties" file and must be verified as accurate to their shipping state.
Checks: C-42912r816760_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep 'bio' /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties Expected result: bio-custom.http.port=7080 bio-custom.https.port=8443 bio-ssl-localhost.https.port=7444 If the output of the command does not match the expected result, this is a finding.

Fix: F-42871r816761_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties. Navigate to the ports specification section. Set the Security Token Service port specifications according to the following list: bio-custom.http.port=7080 bio-custom.https.port=8443 bio-ssl-localhost.https.port=7444

b
The Security Token Service must disable the shutdown port.
SC-5 - Medium - CCI-002385 - V-239680 - SV-239680r879806_rule
RMF Control
SC-5
Severity
Medium
CCI
CCI-002385
Version
VCST-67-000029
Vuln IDs
  • V-239680
Rule IDs
  • SV-239680r879806_rule
An attacker has at least two reasons to stop a web server. The first is to cause a denial of service, and the second is to put in place changes the attacker made to the web server configuration. If the Tomcat shutdown port feature is enabled, a shutdown signal can be sent to the Security Token Service through this port. To ensure availability, the shutdown port must be disabled.
Checks: C-42913r816763_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # grep 'base.shutdown.port' /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties Expected result: base.shutdown.port=-1 If the output of the command does not match the expected result, this is a finding.

Fix: F-42872r816764_fix

Connect to the PSC, whether external or embedded. Open /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties in a text editor. Add or modify the following setting: base.shutdown.port=-1

b
The Security Token Service must set the secure flag for cookies.
SC-8 - Medium - CCI-002418 - V-239681 - SV-239681r879810_rule
RMF Control
SC-8
Severity
Medium
CCI
CCI-002418
Version
VCST-67-000030
Vuln IDs
  • V-239681
Rule IDs
  • SV-239681r879810_rule
The secure flag is an option that can be set by the application server when sending a new cookie to the user within an HTTP Response. The purpose of the secure flag is to prevent cookies from being observed by unauthorized parties due to the transmission of the cookie in clear text. By setting the secure flag, the browser will prevent the transmission of a cookie over an unencrypted channel. The Security Token Service is configured to only be accessible over a TLS tunnel, but this cookie flag is still a recommended best practice.
Checks: C-42914r816766_chk

Connect to the PSC, whether external or embedded. At the command prompt, execute the following command: # xmllint --format /usr/lib/vmware-sso/vmware-sts/conf/web.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/web-app/session-config/cookie-config/secure' - Expected result: &lt;secure&gt;true&lt;/secure&gt; If the output of the command does not match the expected result, this is a finding.

Fix: F-42873r816767_fix

Connect to the PSC, whether external or embedded. Navigate to and open /usr/lib/vmware-sso/vmware-sts/conf/web.xml. Navigate to the /<web-apps>/<session-config>/<cookie-config> node and configure it as follows: <cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config>

c
The version of STS Tomcat running on the system must be a supported version.
SI-2 - High - CCI-002605 - V-257283 - SV-257283r919283_rule
RMF Control
SI-2
Severity
High
CCI
CCI-002605
Version
VCST-67-000999
Vuln IDs
  • V-257283
Rule IDs
  • SV-257283r919283_rule
Security flaws with software applications are discovered daily. Vendors are constantly updating and patching their products to address newly discovered security vulnerabilities. Organizations (including any contractor to the organization) are required to promptly install security-relevant software updates (e.g., patches, service packs, and hot fixes). Flaws discovered during security assessments, continuous monitoring, incident response activities, or information system error handling must also be addressed expeditiously. Organization-defined time periods for updating security-relevant software may vary based on a variety of factors including, for example, the security category of the information system or the criticality of the update (i.e., severity of the vulnerability related to the discovered flaw). This requirement will apply to software patch management solutions that are used to install patches across the enclave and to applications that are not part of that patch management solution. For example, many browsers today provide the capability to install their own patch software. Patch criticality, as well as system criticality, will vary. Therefore, the tactical situations regarding the patch management process will also vary. This means the time period used must be a configurable parameter. Time frames for application of security-relevant software updates may be dependent upon the Information Assurance Vulnerability Management (IAVM) process. The application will be configured to check for and install security-relevant software updates within an identified time period from the availability of the update. The specific time period will be defined by an authoritative source (e.g., IAVM, CTOs, DTMs, and STIGs).
Checks: C-60967r918887_chk

STS Tomcat 6.7 is no longer supported by the vendor. If the system is running STS Tomcat 6.7, this is a finding.

Fix: F-53958r798705_fix

Upgrade to a supported version.