JBoss

Security Benchmark JBoss Enterprise Application Platform 5.x


Status: accepted Date: 2012-07-06


Notice

This content was developed by Red Hat, Inc. for use by JBoss Enterprise Application Platform 5.x Administrators and is released under the GNU Lesser General Public License v3. Copyright Red Hat, Inc. 2012. All Rights Reserved.

Table of Contents

Notice

Front Matter

Requirements

Steps to Run

Profiles

  1. JBoss Enterprise Application Platform 5 - Department of Defense

Guidance

  1. General Configuration
    1. JBoss Enterprise Application Platform should be a vendor supported version
    2. Ensure Java Runtime Environment in use is a supported version
    3. Ensure all configurations are made to the appropriate server profile
    4. Ensure Technology Preview components are disabled in production environments
    5. Disable Hot Deployment in production
    6. Production applications should not implement the default SRPVerifierStore interface for the Secure Remote Password (SRP) protocol
    7. Declare an EJB authorization policy for deployed applications
    8. Ensure appropriate permissions have been granted to Java Database Connectivity (JDBC) driver
    9. Ensure appropriate DefaultDS is enabled
    10. Deployed applications must not write data to DefaultDS
    11. Ensure default HSQLDB is disabled
    12. Ensure HSQLDB Security Domain is removed
    13. Ensure the appropriate Java Messaging Service (JMS) persistence configuration file is in use
    14. Ensure Oracle Database persistence plugin is set correctly
    15. Ensure IBM JRE 1.6 is configured correctly
    16. Configured security domains are recommended to secure production applications
    17. The allRolesMode must be configured to "strict"
    18. Define <security-role> elements
    19. Remove, rename, or comment out the default user accounts from production servers
    20. Remove, rename, or comment out the default roles from production servers
    21. Security constraint elements should exist for all URLs in production environment
    22. DefaultCacheTimeout must be configured properly for active security domains
    23. snmp-adaptor.sar must not be deployed
    24. Harden Tomcat Connectors: limit maxPostSize
    25. Harden Tomcat Connectors: limit maxSavePostSize
    26. Harden Tomcat Connectors: set server header tags
    27. Harden Tomcat Connectors: ciphers attribute
    28. Harden Tomcat Connectors: limit connectionTimeout
  2. Securing JBoss platform
    1. Configure Java Security Manager to use an environment specific policy
    2. Ensure proper permissions are configured for interactions with JBoss JMX Kernel MBean
    3. Ensure proper permissions are configured for deployed applications: java.io.FilePermission
    4. Ensure proper permissions are configured for deployed applications: java.net.NetPermission
    5. Ensure proper permissions are configured for deployed applications: java.lang.RuntimePermission
    6. Ensure proper permissions are configured for deployed applications: java.net.SocketPermission
    7. Ensure proper permissions are configured for deployed applications: java.security.AllPermission
    8. Ensure default system Java Authentication and Authorization Service configuration is in use for JBoss Seam
    9. Validate keystore and keystorePasswordURL properties are defined and loaded by Java Security Manager
    10. Validate a keystore file for JBoss exists and is accessible to JBoss
    11. Validate a password file for the Java keystore exists and is accessible to JBoss
    12. Validate JBoss keystore is password protected
    13. Ensure jboss alias is trusted within the JBoss keystore
    14. Ensure applications deployed by JBoss present valid DoD certificates where applicable
    15. Ensure X.509 keystore utilized by JBoss for certificate trusts contains DoD approved Certificate Authorities
    16. Ensure deployed applications requiring authentication utilizes DoD PKI Class 3 or Class 4 certificate and hardware security token or NSA-certified product
    17. Enable Federal Information and Processing Systems 140-2 (FIPS) compliant cryptographic modules for use by JBoss Java environment
    18. Eliminate clear-text passwords: data sources
    19. Eliminate clear-text passwords: Tomcat Connectors
    20. Eliminate clear-text passwords: XML configuration files
    21. Change default password: JBoss Messaging MessageSucker
    22. Change default password: Java cacerts keystore
    23. Ensure Security Audit Appender is enabled
    24. Ensure Security Audit Provider is enabled
    25. Ensure Configure SecurityInterceptor logging level is set correctly
    26. Ensure logging is enabled for Microcontainer bootstrap operations
    27. Ensure logging is enabled for web-based requests if required by deployed applications
    28. Ensure all required information is displayed in <layout>
    29. Production applications should not log output to the JBoss console
    30. Ensure JBoss process owner is executing with least privilege
    31. Deny the JBoss process owner console access
    32. Set JBoss file ownership
    33. Set JBoss file permissions
  3. Securing deployed applications
    1. Ensure JMX Console is either secured or removed
    2. Ensure Web Console is either secured or removed
    3. Ensure Administration Console is either secured or removed
    4. The JMXInvokerServlet servlet must be secured against web attacks
    5. The JMXInvokerServlet servlet must be configured to prevent unprivileged access using authentication
    6. The JMXInvokerServlet servlet must be configured to prevent unprivileged access using authorization
    7. Deployed applications should display a system use banner upon access
    8. Deployed applications should display a classification banner when required
    9. Password hashing must be enabled within the appropriate login module
    10. A password hashing algorithm must be defined within the appropriate login module
    11. Enterprise JavaBeans Specification v2.1 must be strictly followed
  4. Policy
    1. Ensure adequate physical protections are in place
    2. Assign a JBoss administrator
    3. Document incident response procedures
    4. Perform periodic incident response exercises
    5. Document disaster recovery procedures
    6. Perform periodic disaster recovery exercises
    7. Identify and document application data flows
    8. Java permissions for deployed applications should be documented and reviewed prior to deployment
    9. Regular backups should be performed
    10. Auditing policy should exist
    11. Access control policy and procedures
    12. Define an appropriate minimum and maximum password length requirement
    13. Define an appropriate minimum password complexity requirement
    14. Define an appropriate minimum password expiration interval
  5. Architecture
    1. Production JBoss EAP installations should reside on a dedicated platform
    2. Avoid multiple JBoss instances per server
    3. Bind multiple JBoss instances per server to different IPs
    4. Packet filtering should be emplaced around JBoss Enterprise Application Platform
    5. Do not transmit sensitive information over unsecured HTTP connections
  6. Policy
    1. Use a version control repository
    2. Automate JBoss Deployments
    3. Application performance testing
    4. Monitor JBoss servers
    5. Ensure all downloaded software is authentic
    6. Ensure JBoss is configured in accordance with Common Criteria configuration guides
  7. Trimming
    1. Unused features should be disabled or deleted: Java Universal Description, Discovery, Integration (JUDDI)
    2. Unused features should be disabled or deleted: Enterprise Java Beans (EJB) Services
    3. Unused features should be disabled or deleted: Universal Unique Identifier (UUID) Generator
    4. Unused features should be disabled or deleted: Java Message Service (JMS)
    5. Unused features should be disabled or deleted: JBoss Mail
    6. Unused features should be disabled or deleted: JBoss Scheduling
    7. Unused features should be disabled or deleted: Hypersonic SQL Database (HSQLDB)
    8. Unused features should be disabled or deleted: BeanShell (BSH) Deployer
    9. Unused features should be disabled or deleted: JBossWS
    10. Unused features should be disabled or deleted: Seam
    11. Unused features should be disabled or deleted: JBoss Internet Inter-ORB Protocol (IIOP)
    12. Unused features should be disabled or deleted: Miscellaneous
    13. Unused features should be disabled or deleted: HTTP Invokers
    14. Unused features should be disabled or deleted: Java Management Extensions (JMX) Invoker
    15. Unused features should be disabled or deleted: Pooled Invoker
    16. Unused features should be disabled or deleted: Java Remote Method Protocol (JRMP) Invoker
    17. Unused features should be disabled or deleted: Clustering

Rear Matter

Front Matter

JBoss Enterprise Application Platform is a popular Java Enterprise Edition application server platform by Red Hat. It is based on the open-source JBoss Application Server, Community Edition. Leveraging robust container architecture, JBoss EAP is capable of hosting a wide variety of applications - anything from simple, static HTML pages all the way to distributed, transaction-based Java Enterprise Edition applications. JBoss EAP is known for being dependable, fast, flexible, and cost-effective.

This benchmark provides security guidance on JBoss EAP 5 running on Red Hat Enterprise Linux. OVAL content for this benchmark to be run on other platforms is in development. This document assumes that the reader is familiar with JBoss EAP 5 and Red Hat Enterprise Linux administration. This document also assumes that the baseline configuration of the operating system and JBoss EAP 5 are up-to-date in terms of installed patches. The content within this benchmark was tested for compatibility with multiple SCAP tools on Red Hat Enterprise Linux 5 and 6. The following compatibility matrix shows our results:

XCCDFExec v1.1.4 Build 19 SPAWAR Compliance Checker v3.0.3 OpenSCAP v0.8.2
RHEL 5 - i386 Fully Compatible Fully Compatible Fully Compatible
RHEL 5 - x86_64 Fully Compatible Fully Compatible Fully Compatible
RHEL 6 - i386 Additional Dependencies Needed Fully Compatible Fully Compatible
RHEL 6 - x86_64 Additional Dependencies Needed Fully Compatible Fully Compatible

The recommendations included in this benchmark have been derived from various government and industry sources. All rules include a rationale, validation instructions (for OCIL rules), remediation instructions, references, risk assessments, and NIST/DoD Control mappings.


Platform(s):


Requirements

Before running the JBoss EAP 5 benchmark, the target machine must meet the following requirements.


Steps to Run

The JBoss EAP 5 SCAP Benchmark can be run using the XCCDFExec interpreter. Follow the steps below to run the benchmark using XCCDFExec.

  1. Ensure all requirements detailed here have been met.
  2. Download the XCCDF Interpreter from sourceforge: http://sourceforge.net/projects/xccdfexec/
  3. Unzip and install the XCCDF Interpreter, as directed by its README.txt.
    1. NOTE: The XCCDF Interpreter is packaged with a Win32 build of the OVAL Definition Interpreter. To run OVAL checks on your Linux system you can edit the oval.dir and oval.bin properties within the xccdf_interpreter.properties file to reference your local OVALDI installation.
    2. A Linux build of the OVAL Definition Interpreter may be obtained at: http://sourceforge.net/projects/ovaldi/
  4. Navigate to the XCCDF Interpreter directory. For example:
    cd /xccdf_interpreter_1.1.4_build_19-bin
  5. To run the interpreter, type the following replacing [PROFILE_NAME] with the name of the profile you want to run (as defined in the next section). The command assumes that the EAP5 SCAP files are in the same directory as the xccdf interpreter:
    java -jar xccdfexec.jar eap5-xccdf.xml -c eap5-cpe-oval.xml -C eap5-cpe-dictionary.xml -P [PROFILE_NAME]
  6. When prompted with the OCIL Interpreter, answer each questionnaire, save the results, and exit.
  7. The results of the tests will be displayed on the screen and in several output files under the results directory. The XML result files can be transformed to HTML using transforms available online.
  8. A result of PASS indicates that the test passed, a result of FAIL indicates that the test failed and a setting may need to be adjusted. You can review the remediation instructions available for each rule to adjust any settings. A result of "NOT APPLICABLE" means that the recommendation is not applicable to your deployment. A result of "NOT CHECKED" means that the recommendations OCIL questionnaire was not answered.

Alternative Tools

There are several alternative tools that you can use to run the EAP 5 SCAP Benchmark. These tools include:

Please see the included documentation for instructions on how to run these tools.


Profiles

1. JBoss Enterprise Application Platform 5 - Department of Defense

Profile for testing a secure deployment of JBoss EAP 5 in a DoD environment.

Profile Name: eap5_full

Guidance

General Configuration

The rules in this group validation general configuration items.

1.1 - JBoss Enterprise Application Platform should be a vendor supported version

Evaluated JBoss installation must be a vendor supported version of JBoss Enterprise Application Platform 5. Red Hat typically offers full and production support for the first 7 years following a release. Extended support options can be negotiated with the vendor directly through a separate subscription. Organizations using JBoss EAP must use a vendor supported version with an active support contract.

Rationale

Failure to utilize a supported version of JBoss in a production environment can lead to outages, unresolvable problems, no access to security or functional updates, etc.

Additional information

CVSSv2 Risk Assessment: 7.5 / High - CVSSv2 Formula: (AV:N/AC:L/Au:N/C:P/I:P/A:P)

DoD Risk Category: CAT I

NIST 800.53 Mapping: CM-6

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

Validation instructions

To determine the version of JBoss EAP installed, perform the following actions:

  • Execute run.bat --version or run.sh --version located within JBOSS_HOME/bin

The output of the command above will display a variety of information; including the version and build information for JBoss.

Next, review support documentation and interview JBoss administrators. Work with JBoss administrators to access the Red Hat Network customer portal in order to review and validate active subscriptions (https://access.redhat.com/home). Additionally, ensure the version of JBoss has not reached end-of-life. Organizations using JBoss EAP must use a vendor supported version with an active support contract.

Remediation instructions

Other environments should install a vendor supported version of Red Hat JBoss Enterprise Application Platform and maintain an active subscription. Contact Red Hat directly to subscribe to the JBoss software channel (http://www.redhat.com).

Ensure downloaded software is checked against vendor supplied hashes to ensure the software has not been modified in transit. Tools such as sha1sum or md5sum (Linux) or File Checksum Integrity Verifier (FCIV) for Windows can be used to generate hash checksums for downloaded files.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:200001
File: eap5-ocil.xml

1.2 - Ensure Java Runtime Environment in use is a supported version

Evaluated JBoss installation must use a vendor supported Java virtual machine - i.e., one that has not reached end-of-life. Migration strategies should be developed when end-of-life is impending.

Rationale
Java installations should be a vendor supported version. If the Java virtual machine in use by JBoss is not supported by the vendor, this may result in outages, unresolvable problems, no access to security or functional updates, etc.
Additional information

CVSSv2 Risk Assessment: 7.5 / High - CVSSv2 Formula: (AV:N/AC:L/Au:N/C:P/I:P/A:P)

DoD Risk Category: CAT I

NIST 800.53 Mapping: CM-6

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

Validation instructions

To identify the JRE used by JBoss, perform the following actions:

  • Execute run.bat --version or run.sh --version located within JBOSS_HOME/bin

The output of the command above will display a variety of information; including the vendor and version information for the JRE in use by JBoss. Search the vendor's website and support documentation to ensure the vendor actively supports the version of Java virtual machine in use. If the software will reach end-of-life within the next year, ensure the organization is developing a migration plan.

Java Runtime Environments commonly used with JBoss include:

  • Sun JRE 1.6.x
  • IBM JRE 1.6.x
  • OpenJDK JRE 1.6.x

Remediation instructions

Organizations should install a vendor supported Java Runtime Environment.

Ensure downloaded software is checked against vendor supplied hashes to ensure the software has not been modified in transit. Tools such as sha1sum or md5sum (Linux) or File Checksum Integrity Verifier (FCIV) for Windows can be used to generate hash checksums for downloaded files.

Finally, organizations must develop migration plans for Java Runtime Environments that reach end-of-life within the next year.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:200201
File: eap5-ocil.xml

1.3 - Ensure all configurations are made to the appropriate server profile

Production environments should utilize the production server profile. Development and test environments should choose the profile that best fits their needs.

Rationale

The JBoss server profiles are preconfigured with various deployed applications. Using a more restrictive profile ensures that less applications are deployed, minimizing the attack surface of the JBoss server and decreasing the amount of trimming that must be performed.

Additional information

CVSSv2 Risk Assessment: 3 / Low

DoD Risk Category: CAT III

NIST 800.53 Mapping: CM-6

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

Validation instructions

Ensure that all configuration changes and deployments are made to the appropriate server profile. Production environments should utilize the production server profile. Development and test environments should choose the profile that best fits their needs.

Remediation instructions

JBoss administrators should use the profiles as defined in the validation text.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:200501
File: eap5-ocil.xml

1.4 - Ensure Technology Preview components are disabled in production environments

Remove the PicketLink technology preview folder. By default, this folder is included at the same level as the JBoss-as folder. If you leave the picketlink folder as originally shipped in the EAP binary, PicketLink is unable to be launched, and subsequently interact with the certified configuration.

Rationale

Technology Preview components are not production-ready, vendor supported JBoss components. They may be incomplete, contain bugs, insecure features or architecture, etc.

Additional information

CVSSv2 Risk Assessment: 3 / Low

DoD Risk Category: CAT III

NIST 800.53 Mapping: CM-7

DoD 8500.2 Mapping: DCPP-1

Remediation instructions

Delete the JBOSS_HOME/picketlink/ folder.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://oval.mitre.org/XMLSchema/oval-definitions-5
Name: oval:com.redhat.eap5.scap:def:201801
File: eap5-oval.xml

1.5 - Disable Hot Deployment in production

Hot deployment should be disabled on production servers. Hot Deployment allows for automatic deployment of Java applications by simply placing Java applications into the deploy directory.

Rationale

Hot deployments are not a recommended best practice for production environments. By requiring the additional step of restarting the JBoss server, application deployments become more deliberate and purposeful. Additionally, the JBoss Hot Deployment feature has been known to become unstable over time - consuming additional memory and resources.

Additional information

CVSSv2 Risk Assessment: 3.0 / Low

DoD Risk Category: CAT III

NIST 800.53 Mapping: CM-7

DoD 8500.2 Mapping: DCPP-1

Remediation instructions

Delete the following file:

  • JBOSS_HOME/server/[PROFILE]/deploy/hdscanner-jboss-beans.xml
Check Summary

System: http://oval.mitre.org/XMLSchema/oval-definitions-5
Name: oval:com.redhat.eap5.scap:def:113001
File: eap5-oval.xml

1.6 - Production applications should not implement the default SRPVerifierStore interface for the Secure Remote Password (SRP) protocol

The SRP protocol is a public key exchange protocol similar to Diffie-Hellman. The default implementation of the SRPVerifierStore interface is not recommended for a production security environment because it requires all password hash information to be available as a file of serialized objects.

Rationale

Serializing objects is not a recommended practice for Java applications. Object serialization shows poor performance and is not typically scalable for production. Additionally, object serialization creates dependency concerns within the object hierarchy.

Additional information

CVSSv2 Risk Assessment: 3 / Low

DoD Risk Category: CAT III

NIST 800.53 Mapping: CM-6

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

Validation instructions

Interview application developers and review application documentation. If deployed applications utilize SRP and/or source code is available for reference, review evidence that the default SRPVerifierStore interface is not in use and that the existing code does not use serialized objects for persistence.

Remediation instructions

Application developers should not use the default implementation for SRPVerifierStore, and should extend it to avoid the use of serialized password objects.

References

1. JBoss Enterprise Application Platform 5 Security Guide, 2011

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:110101
File: eap5-ocil.xml

1.7 - Declare an EJB authorization policy for deployed applications

When configuring your application specific security policy, you must declare one (or more) of the following authorization modules in the security domain <policy-module> element.

A security domain does not explicitly require an authorization policy. If an authorization policy is not specified, the default jboss-web-policy and jboss-ejb-policy authorization configured in jboss-as/server/$PROFILE/deploy/security/security-policies-jboss-beans.xml is used. If you do choose to specify an authorization policy, or create a custom deployment descriptor file with a valid authorization policy, these settings override the default settings in security-policies-jboss-beans.xml.

Rationale

Explicitly referencing one of the identified authorization modules ensures that applications extend the security policies defined in security-policies-jboss-beans.xml. This allows JBoss administrators to set a secure baseline that can be tuned on a per-application basis.

Additional information

CVSSv2 Risk Assessment: 3.5 / Medium

DoD Risk Category: CAT II

NIST 800.53 Mapping: AC-3,AC-4

DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1,EBBD-1,EBBD-2,EBBD-3

Validation instructions

Review possible locations for definition of <application-policy> elements. Specifically, ensure that 'code' attributes for <authorization><policy-module> elements are either 'org.JBoss.security.authorization.modules.DelegatingAuthorizationModule' or 'org.JBoss.security.authorization.modules.JACCAuthorizationModule'.

These <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

  • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/META-INF/*-jboss-beans.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/*-jboss-beans.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml

NOTE: This applies even if the application is using Extensible Access Control Markup Language (XACML) Authorization Module.

Remediation instructions

Applications deploying their own security policies must specify one of the following <policy-module> within their 'code' attributes:

  • org.JBoss.security.authorization.modules.DelegatingAuthorizationModule
  • org.JBoss.security.authorization.modules.JACCAuthorizationModule

Example:

<application-policy name="demo">
	<authorization>
	<policy-module code="org.JBoss.security.authorization.modules.JACCAuthorizationModule"></policy-module>
	</authorization>
</application-policy>
References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:203901
File: eap5-ocil.xml

1.8 - Ensure appropriate permissions have been granted to Java Database Connectivity (JDBC) driver

The security manager policy file may require permissions to be set for database drivers. The JBoss administrator can assign permissions to the database drivers that are needed by deployed applications. It is recommended that the most restrictive permissions are added. With some installations, permissions must be granted to database drivers that are not available to deployed applications; such as java.net.SocketPermission.

Rationale

Deployed applications requiring access to data sources should have limited permissions to interact with the database drivers.

Additional information

CVSSv2 Risk Assessment: 6.2 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:C/I:C/A:C)

DoD Risk Category: CAT II

NIST 800.53 Mapping: AC-3,AC-6

DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1,ECLP-1

Validation instructions

To validate compliance, review all policy files defining permissions for the Java Security Manager. In a default Common Criteria compliant JBoss deployment the following policy files will be utilized by JSM (review run.conf or run.conf.bat for more):

  • java.home/lib/security/java.security
  • JBOSS_HOME/bin/security_cc.policy

Other environments will simply load the java.security properties file by default. Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy). Permissions required for JDBC drivers will vary and should be configured according to vendor documentation. In general, JDBC drivers should not be granted AllPermission.

Remediation instructions

The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) to applications accessing defined data sources. This should be done in cooperation with application developers or application documentation. Substitute the directory name of the JDBC driver where [JDBC.DRIVER] is specified in the code sample.

// granting permissions to JDBC driver 
grant codeBase "file:${JBoss.server.home.dir}/lib/[JDBC.DRIVER]" { 
	//JDBC specific permissions to be granted go here
};
References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:204201
File: eap5-ocil.xml

1.9 - Ensure appropriate DefaultDS is enabled

Create a default data store file for the desired database. Templates are located in JBOSS_HOME/docs/examples/jca.
The DefaultDS must not be a HSQLDB.

Rationale

To help ensure robust server operations, a DefaultDS that does not use HSQLDB should be specified. DefaultDS is used by some JBoss components by default.

Additional information

CVSSv2 Risk Assessment: 2.6 / Low - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:N/I:P/A:P)

DoD Risk Category: CAT III

NIST 800.53 Mapping: SC-4

DoD 8500.2 Mapping: ECRC-1

Validation instructions

Review defined data sources in the JBOSS_HOME/server/[PROFILE]/deploy directory. Data sources will be suffixed as -ds.xml. Search for a data source with a <jndi-name>DefaultDS</jndi-name> element. OS text searching utilities can help find the DefaultDS. The DefaultDS CANNOT be HSQL. An HSQL data source will contain elements like: <driver-class>org.hsqldb.jdbcDriver</driver-class> and <type-mapping>Hypersonic SQL</type-mapping>.

Linux: grep -Hri "<jndi-name>DefaultDS</jndi-name>" $JBOSS_HOME/server/[PROFILE]/deploy/*-ds.xml

Remediation instructions

Create a default DS file for the desired database at JBOSS_HOME/server/[PROFILE]/deploy/DefaultDS.xml. Examples of this file are located in JBOSS_HOME/docs/examples/jca. The DefaultDS must not be a HSQLDB.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:204401
File: eap5-ocil.xml

1.10 - Deployed applications must not write data to DefaultDS

Deployed applications (other than JBoss default applications) must not write information to the database defined by the DefaultDS data source. These applications must use a database specific to the application.

Rationale

Sharing databases between applications is a poor security practice that can create injection and leakage vulnerabilities that cross application boundaries.

Additional information

CVSSv2 Risk Assessment: 5.1 / Medium - CVSSv2 Formula: (AV:N/AC:H/Au:N/C:P/I:P/A:P)

DoD Risk Category: CAT II

NIST 800.53 Mapping: SC-4

DoD 8500.2 Mapping: ECRC-1

Validation instructions

Interview the application developers and/or review source code to identify when data sources are used. Ensure that the application is not storing data within the DefaultDS.

Next, review the data source definition files (files suffixed *.xml) used by the deployed user applications to ensure they do not reference the same database used by the DefaultDS.

NOTE: Using the same database server is acceptable, however the database must not be the same.

Remediation instructions

Create and deploy a data source in addition to the DefaultDS to store application data. This new data source must not point to the same database as the DefaultDS data source.

Data source templates can be found in the JBOSS_HOME/docs/examples/jca/ directory.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:215701
File: eap5-ocil.xml

1.11 - Ensure default HSQLDB is disabled

The default development HSQL database included with JBoss should be removed.

Rationale

HSQL is not meant for production environments - it is there to speed development and enable faster application prototyping. Thus, it is not a full-featured data source intended for production use.

Additional information

CVSSv2 Risk Assessment: 2.6 / Low - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:N/I:P/A:P)

DoD Risk Category: CAT III

NIST 800.53 Mapping: SC-4

DoD 8500.2 Mapping: ECRC-1

Remediation instructions

Delete the following files that refer to the HSQLDB database:

  • JBOSS_HOME/server/[PROFILE]/deploy/hsqldb-ds.xml
  • JBOSS_HOME/common/lib/hsqldb.jar
  • JBOSS_HOME/common/lib/hsqldb-plugin.jar
  • JBOSS_HOME/server/[PROFILE]/deploy/messaging/hsqldb-persistence-service.xml

Delete the HSLQDB database files:

  • JBOSS_HOME/server/[PROFILE]/data/hypersonic/*
References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://oval.mitre.org/XMLSchema/oval-definitions-5
Name: oval:com.redhat.eap5.scap:def:204501
File: eap5-oval.xml

1.12 - Ensure HSQLDB Security Domain is removed

The security domain for HsqlDbRealm should be removed from the JBOSS_HOME/server/[PROFILE]/conf/login-config.xml file.

Rationale

HSQL is not meant for production environments - it is there to speed development and enable faster application prototyping. Thus, it is not a full-featured data source intended for production use.

Additional information

CVSSv2 Risk Assessment: 1 / Low

DoD Risk Category: CAT III

NIST 800.53 Mapping: SC-4

DoD 8500.2 Mapping: ECRC-1

Remediation instructions

Remove the security domain for HsqlDbRealm in the JBOSS_HOME/server/[PROFILE]/conf/login-config.xml file as shown.

<!-- Security domains for testing new jca framework
<application-policy name = "HsqlDbRealm">
	<authentication>
		<login-module code = "org.JBoss.resource.security.ConfiguredIdentityLoginModule" flag = "required">
		<module-option name = "principal">sa</module-option>
		<module-option name = "userName">cctest</module-option>
		<module-option name = "password">cc1248</module-option>
		<module-option name = "managedConnectionFactoryName">JBoss.jca:service=LocalTxCM,name=DefaultDS</module-option>
		</login-module>
	</authentication>
</application-policy>
-->
References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://oval.mitre.org/XMLSchema/oval-definitions-5
Name: oval:com.redhat.eap5.scap:def:204601
File: eap5-oval.xml

1.13 - Ensure the appropriate Java Messaging Service (JMS) persistence configuration file is in use

The [database]-persistence-service.xml file contains the persistence service definition for Java Messaging Service, for the database specified by the [database] in the filename. The database must not be HSQLDB.

Rationale

In order to function properly, JMS should be configured to use the appropriate datastore. Production environments require a persistence service definition for JMS that does not use HSQLDB.

Additional information

CVSSv2 Risk Assessment: 2.6 / Low - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:N/I:P/A:P)

DoD Risk Category: CAT III

NIST 800.53 Mapping: CM-6

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

Validation instructions

Interview the JBoss administrators and application developers to determine if JMS is in use. A quick check can also be performed by checking for the existence of the following files:

  • JBOSS_HOME/server/[PROFILE]/deploy/messaging
  • JBOSS_HOME/server/[PROFILE]/deploy/jms-ra.rar

If JMS is installed, a persistence-service.xml file must exist that does not use HSQLDB. This persistence file will be located in the following location:

  • JBOSS_HOME/server/[PROFILE]/deploy/messaging/*persistence-service.xml
Remediation instructions

Copy the [database]-persistence-service.xml file that corresponds to the database you are using from the JBOSS_HOME/docs/examples/jms directory to JBOSS_HOME/server/[PROFILE]/deploy. Make any required content changes to fit the persistence service to the environment.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:204701
File: eap5-ocil.xml

1.14 - Ensure Oracle Database persistence plugin is set correctly

When using the Oracle Database as the DefaultDS, the database persistence plugin definition must be updated in JBOSS_HOME/server/[PROFILE]/deploy/ejb2-timer-service.xml.

Rationale

This is a performance optimization when using Oracle Database as the DefaultDS.

Additional information

CVSSv2 Risk Assessment: 2.6 / Low - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:N/I:N/A:P)

DoD Risk Category: CAT III

NIST 800.53 Mapping: CM-6

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

Validation instructions

Review defined data sources in the JBOSS_HOME/server/[PROFILE]/deploy directory. Data sources will be suffixed as -ds.xml. Search for a data source with a DefaultDS element. Review the DefaultDS datasource. If the DefaultDS is Oracle Database, review the persistence plugin located at JBOSS_HOME/server/[PROFILE]/deploy/ejb2-timer-service.xml. The DatabasePersistencePlugin attribute must be configured like below:

<attribute name="DatabasePersistencePlugin">
	org.JBoss.ejb.txtimer.OracleDatabasePersistencePlugin
</attribute>
Remediation instructions

When using the Oracle Database as the DefaultDS, the database persistence plugin definition must be updated in JBOSS_HOME/server/[PROFILE]/deploy/ejb2-timer-service.xml to:

<attribute name="DatabasePersistencePlugin">
	org.JBoss.ejb.txtimer.OracleDatabasePersistencePlugin
</attribute>
References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:205001
File: eap5-ocil.xml

1.15 - Ensure IBM JRE 1.6 is configured correctly

When IBM JRE 1.6 is configured as the Java Runtime Environment, the following configuration changes must be made to ensure compatibility between JBoss EAP and IBM JRE.

IBM JRE 1.6 uses a default policy provider which does not work correctly with the JBoss Enterprise Application Platform security policy. The IBM JRE must be reconfigured to use the standard policy provider.

Rationale

The IBM JRE 1.6 default policy provider does not work correctly with the JBoss EAP security policy. Failure to assign the correct policy can lead to system instability.

Additional information

CVSSv2 Risk Assessment: 3.5 / Medium

DoD Risk Category: CAT II

NIST 800.53 Mapping: CM-6

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

Validation instructions

Review the run.bat or run.sh file as appropriate to determine how JBoss Enterprise Application Platform is calling the Java Runtime Environment. By default, these files are configured to locate the JRE installation through the JAVA_HOME environment variable. If the JAVA_HOME environment variable is not configured, you must track the JRE installation path using information from the run.bat/run.sh file and the operating system PATH variables.

Open JAVA_HOME/jre/lib/security/java.security and review the entry for policy.provider. If the entry is not set to sun.security.provider.PolicyFile, this is a failure.

Remediation instructions

When IBM JRE 1.6 is configured as the Java Runtime Environment, the following configuration changes must be made for compatibility:

Edit the file JAVA_HOME/jre/lib/security/java.security and set the value of policy.provider to sun.security.provider.PolicyFile

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:206501
File: eap5-ocil.xml

1.16 - Configured security domains are recommended to secure production applications

SecurityDomain is an extension of the AuthenticationManager, RealmMapping, and SubjectSecurityManager interfaces. A java.security.KeyStore, and the Java Secure Socket Extension (JSSE) com.sun.net.ssl.KeyManagerFactory and com.sun.net.ssl.TrustManagerFactory interfaces are included in the class.

Rationale

SecurityDomain is the recommended way to implement security in components, because of the advantages the JAAS Subject offers, and the increased support offered to ASP-style application and resource deployments.

Additional information

CVSSv2 Risk Assessment: 3.5 / Medium

DoD Risk Category: CAT II

NIST 800.53 Mapping: AC-3,IA,SC

DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1

Validation instructions

Interview JBoss administrators and application developers. Review application documentation. If a need has been identified to secure production applications, JAAS SecurityDomains should be used.

Remediation instructions

Configure and apply SecurityDomains where appropriate for production applications.

For example, an <application-policy> (SecurityDomain) can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

  • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/META-INF/*-jboss-beans.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/*-jboss-beans.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml

To determine which <application-policy> are in use by deployed applications, search for <security-domain> elements within the following deployment descriptors:

  • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/jboss-web.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/jboss.xml
References

1. JBoss Enterprise Application Platform 5 Security Guide, 2011

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:110001
File: eap5-ocil.xml

1.17 - The allRolesMode must be configured to "strict"

The allRolesMode within JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml must be set to strict for production environments. This requires the authenticated user to be assigned to one of the web-app/security-role/role-name roles in order to be authorized.

Rationale

This rule enforces strict authorization, requiring authenticated users to be members of defined roles. This allows JBoss administrators to create a simpler, tighter security policy.

Additional information

CVSSv2 Risk Assessment: 4.6 / Medium - CVSSv2 Formula: (AV:N/AC:H/Au:S/C:P/I:P/A:P)

DoD Risk Category: CAT II

NIST 800.53 Mapping: AC-3,AC-6

DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1,ECLP-1

Remediation instructions

Update allRolesAttribute for the <Realm> element with className="org.jboss.web.tomcat.security.JBossWebRealm" in JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml. Set the attribute value to "strict". By default, the allRolesAttribute is set to "authOnly". For example:

<Realm className="org.jboss.web.tomcat.security.JBossWebRealm" certificatePrincipal="org.jboss.security.auth.certs.SubjectDNMapping" allRolesMode="strict" />
References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://oval.mitre.org/XMLSchema/oval-definitions-5
Name: oval:com.redhat.eap5.scap:def:203801
File: eap5-oval.xml

1.18 - Define <security-role> elements

Enable authorization and define <security-role> elements to control access to deployed applications.

Rationale

The specification of <security-role> elements is a recommended practice to ensure portability across application servers and for deployment descriptor maintenance.

Additional information

CVSSv2 Risk Assessment: 3.5 / Medium

DoD Risk Category: CAT II

NIST 800.53 Mapping: AC-3,AC-6

DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1,ECLP-1

Validation instructions

Review the web.xml deployment descriptors for deployed applications. Ensure that <security-role> elements have been define that are referenced by <security-constraint><auth-constraint> elements within the <web-app> root element.

Remediation instructions

Working with application developers (or available documentation), determine the desired roles for controlling access to the deployed applications.

Next, create the roles within web.xml.

<web-app>
	<security-role>
		<description>The role required to access restricted content </description>
		<role-name>AuthorizedUser</role-name>
	</security-role>
</web-app>

Finally, require the roles within the application's deployment descriptor, web.xml:

<web-app>
	<security-constraint>
		<auth-constraint>
			<role-name>AuthorizedUser</role-name>
		</auth-constraint>
	</security-constraint>
</web-app>
References

1. JBoss Enterprise Application Platform 5 Security Guide, 2011

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:109201
File: eap5-ocil.xml

1.19 - Remove, rename, or comment out the default user accounts from production servers

Remove, rename, or comment out the default user accounts defined in .properties files and login-config.xml.

Rationale

Default configurations are commonly leveraged by attackers to gain entry into closed systems. Removing, renaming, or commenting out default user accounts makes malicious exploitation more complex.

Additional information

CVSSv2 Risk Assessment: 6 / Medium - CVSSv2 Formula: (AV:N/AC:M/Au:S/C:P/I:P/A:P)

DoD Risk Category: CAT II

NIST 800.53 Mapping: IA-5

DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

Validation instructions

Ensure the default user accounts in the default <application-policy> elements located within the configuration file: JBOSS_HOME/server/[PROFILE]/conf/login-config.xml have been removed, renamed, or commented out.


<module-option name="principal">sa</module-option>
<module-option name="userName">sa</module-option>
<module-option name="password"></module-option>

<module-option name="principal">guest</module-option>
<module-option name="userName">guest</module-option>
<module-option name="password">guest</module-option>
				

Examine the .properties files located within the JBOSS_HOME/server/[PROFILE]/conf/props/ directory.

By default, the following files exist:

  • jbossws-users.properties
  • jmx-console-users.properties
  • messaging-users.properties

Ensure the default user accounts have been removed, renamed, or commented out. This includes:

  • admin
  • kermit
  • guest

Remediation instructions

Remove, rename, or comment out the default user accounts in the default <application-policy> elements located within the configuration file: JBOSS_HOME/server/[PROFILE]/conf/login-config.xml.


					<module-option name="principal">sa</module-option>
					<module-option name="userName">sa</module-option>
					<module-option name="password"></module-option>
					
					<module-option name="principal">guest</module-option>
					<module-option name="userName">guest</module-option>
					<module-option name="password">guest</module-option>
				

Remove, rename, or comment out the default user accounts in properties files: JBOSS_HOME/server/[PROFILE]/conf/props/

  • jbossws-users.properties
  • jmx-console-users.properties
  • messaging-users.properties

The default user accounts include:

  • admin
  • kermit
  • guest
NOTE: If access is required to the services protected by the <application-policy>, be sure that valid accounts and roles exist!

References

1. JBoss Enterprise Application Platform 5 Security Guide, 2011

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:300101
File: eap5-ocil.xml

1.20 - Remove, rename, or comment out the default roles from production servers

Remove, rename, or comment out the default role definitions in the default <application-policy> elements.

Additionally, remove, rename, or comment out the default role assignments in various properties files from JBOSS_HOME/server/[PROFILE]/conf/props/

Rationale

Default configurations are commonly leveraged by attackers to gain entry into closed systems. Renaming, removing, or commenting out default roles can make exploitation more complex. These steps can also prevent inadvertent assignment of permissions.

Additional information

CVSSv2 Risk Assessment: 6 / Medium - CVSSv2 Formula: (AV:N/AC:M/Au:S/C:P/I:P/A:P)

DoD Risk Category: CAT II

NIST 800.53 Mapping: IA-5

DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

Validation instructions

Ensure the default role assignments have been removed, renamed, or commented out from the default properties files located in JBOSS_HOME/server/[PROFILE]/conf/props/

  • jbossws-roles.properties
  • jmx-console-roles.properties
  • messaging-roles.properties

The default role assignments are JBossAdmin, HttpInvoker, friend, and guest.

Finally, ensure the default role assignments within application specific deployment descriptors have been removed, renamed, or commented out:

  • JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/WEB-INF/web.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/admin-console.war/WEB-INF/web.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml

These role assignments will fall within <auth-constraint> elements and will look similar to the following:

<security-constraint>
	<web-resource-collection>
		<web-resource-name>HtmlAdaptor</web-resource-name>
		<description>An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application</description>
		<url-pattern>/*</url-pattern>
	</web-resource-collection>
	<auth-constraint>
		<role-name>JBossAdmin</role-name>
	</auth-constraint>
</security-constraint>

Remediation instructions

Ensure the default role assignments have been removed, renamed, or commented out from the default properties files located in JBOSS_HOME/server/[PROFILE]/conf/props/

  • jbossws-roles.properties
  • jmx-console-roles.properties
  • messaging-roles.properties

The default role assignments are JBossAdmin, HttpInvoker, friend, and guest.

Finally, ensure the default role assignments within application specific deployment descriptors have been removed, renamed, or commented out:

  • JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/WEB-INF/web.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/admin-console.war/WEB-INF/web.xml
  • JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml

These role assignments will fall within <auth-constraint> elements and will look similar to the following:

<security-constraint>
	<web-resource-collection>
		<web-resource-name>HtmlAdaptor</web-resource-name>
		<description>An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application</description>
		<url-pattern>/*</url-pattern>
	</web-resource-collection>
	<auth-constraint>
		<role-name>JBossAdmin</role-name>
	</auth-constraint>
</security-constraint>

References

1. JBoss Enterprise Application Platform 5 Security Guide, 2011

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:300201
File: eap5-ocil.xml

1.21 - Security constraint elements should exist for all URLs in production environment

The content to be secured is declared using one or more <web-resource-collection> elements. Each <web-resource-collection> element contains an optional series of <url-pattern> elements followed by an optional series of <http-method> elements. The <url-pattern> element value specifies a URL pattern against which a request URL must match for the request to correspond to an attempt to access secured content. The <http-method> element value specifies a type of HTTP request to allow.

Rationale

Whitelisting allowed HTTP methods against all URL's is a recommended security practice to minimize the attack surface of deployed applications. This must be done carefully to ensure that security loopholes are not created, as JBoss allows all HTTP methods by default..

Additional information

CVSSv2 Risk Assessment: 6 / Medium

DoD Risk Category: CAT II

NIST 800.53 Mapping: AC-3

DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1

Validation instructions

Review application deployment descriptors for indications that <http-method> has been used to whitelist HTTP verbs. Application deployment descriptors will be located at JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/web.xml All deployed applications should restrict HTTP verbs.

JBoss administrators must take care when restricting HTTP verbs, as JBoss restricts no verbs by default. An incomplete whitelist/blacklist combination could allow circumvention of the intended security policy.
Remediation instructions
Implement a whitelist for HTTP methods accepted by each deployed application. This will generally take the form of two separate security constraints.
References

1. JBoss Enterprise Application Platform 5 Security Guide, 2011

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:109301
File: eap5-ocil.xml

1.22 - DefaultCacheTimeout must be configured properly for active security domains

Security domains in use must use DefaultCacheTimeout less than or equal to 1800 seconds. If you want to disable caching of security credentials, set this to 0 to force authentication to occur every time. This has no affect if the AuthenticationCacheJndiName has been changed from the default value.

Rationale

Production applications should be carefully evaluated to determine the appropriate level of cache credential timeouts. Overuse of cached credentials can leave applications vulnerable to stale authentication stores.

Additional information

CVSSv2 Risk Assessment: 4 / Medium - CVSSv2 Formula: (AV:N/AC:H/Au:N/C:P/I:P/A:N)

DoD Risk Category: CAT II

NIST 800.53 Mapping: SC-8,SC-9,SC-23

DoD 8500.2 Mapping: ECTM-1,ECTM-2

Remediation instructions

Open the JaasSecurityManagerService Mbean configuration file located at JBOSS_HOME/server/[PROFILE]/conf/jboss-service.xml

Find the element <mbean code="org.jboss.security.plugins.JaasSecurityManagerService" name="jboss.security:service=JaasSecurityManager">

Change the <DefaultCacheTimeout> to 1800 or less.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html
2. JBoss Enterprise Application Platform 5 Security Guide, 2011

Check Summary

System: http://oval.mitre.org/XMLSchema/oval-definitions-5
Name: oval:com.redhat.eap5.scap:def:109601
File: eap5-oval.xml

1.23 - snmp-adaptor.sar must not be deployed

The file JBOSS_HOME/server/[PROFILE]/deploy/snmp-adaptor.sar should not exist. snmp-adaptor.sar is the default deployment package for JBoss SNMP. The manager implements SNMP using joeSNMP, supporting only SNMP versions 1 and 2.

Rationale

The default SNMP package (snmp-adaptor.sar) implements joeSNMP, which itself implements SNMP versions 1 and 2. Both versions of the SNMP protocol have many flaws and known vulnerabilities that can leveraged by attackers. Often these are simple remote exploitations that can be easily used by attackers to penetrate a network.

Additional information

CVSSv2 Risk Assessment: 7.5 / High - CVSSv2 Formula: (AV:N/AC:L/Au:N/C:P/I:P/A:P)

DoD Risk Category: CAT I

NIST 800.53 Mapping: CM-6,CM-7

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1,DCPP-1

Validation instructions

To determine if SNMP capabilities have been completely removed, check for the existence of the SNMP adaptor located here: JBOSS_HOME/server/[PROFILE]/deploy/snmp-adaptor.sar/

If the exploded SAR exists, joeSNMP has been deployed and SNMP capabilities using this SNMP implementation still exist for the JBOSS server.

Remediation instructions

Delete the directory JBOSS_HOME/server/[PROFILE]/deploy/snmp-adaptor.sar/

Check Summary

System: http://oval.mitre.org/XMLSchema/oval-definitions-5
Name: oval:com.redhat.eap5.scap:def:200901
File: eap5-oval.xml

1.24 - Harden Tomcat Connectors: limit maxPostSize

The Tomcat container is commonly used to broker connections for JBoss. Several steps to harden the connectors can be taken quickly and easily. maxPostSize is the maximum size (in bytes) that the FORM URL parser can handle. Environments that pass large amounts of data through forms (such as file uploads), may need to increase this setting.

Rationale

An overly high setting can create a denial of service vulnerability in which an attacker simultaneously performs several large POSTS - tying up server resources and network bandwidth.

Additional information

CVSSv2 Risk Assessment: 6.3 / Medium - CVSSv2 Formula: (AV:N/AC:M/Au:S/C:N/I:N/A:C)

DoD Risk Category: CAT II

NIST 800.53 Mapping: CM-6,CM-7

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1,DCPP-1

Validation instructions

Review <Connector> elements in JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml. Check for <Connector> elements that define a maxPostSize attribute. If a maxPostSize attribute is defined, it should be 104857600 or less (100 MB).

Remediation instructions

Ensure that all <Connector> elements within JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml have appropriately configured maxPostSize attributes (104857600 or less).

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:401101
File: eap5-ocil.xml

1.25 - Harden Tomcat Connectors: limit maxSavePostSize

The Tomcat container is commonly used to broker connections for JBoss. Several steps to harden the defined connectors can be taken quickly and easily. maxSavePostSize is the maximum size (in bytes) that is buffered during CLIENT-CERT and FORM authentication. The default setting of 4096 (4 KB) is sufficient for most environments.

Rationale

An overly high setting can inadvertently create a denial of service vulnerability in which many users are authenticated and tying up server resources.

Additional information

CVSSv2 Risk Assessment: 6.3 / Medium - CVSSv2 Formula: (AV:N/AC:M/Au:S/C:N/I:N/A:C)

DoD Risk Category: CAT II

NIST 800.53 Mapping: CM-6,CM-7

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1,DCPP-1

Validation instructions

Review <Connector> elements in JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml. Check for <Connector> elements that define a maxSavePostSize attribute. If a maxSavePostSize attribute is defined, it should be 12288 or less (12 KB).

Remediation instructions

Ensure that all <Connector> elements within JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml have appropriately configured maxSavePostSize attributes (12288 or less).

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:401201
File: eap5-ocil.xml

1.26 - Harden Tomcat Connectors: set server header tags

The Tomcat container is commonly used to broker connections for JBoss. Several steps to harden the defined connectors can be taken quickly and easily. The server attribute controls the Server Header tag sent with each HTTP response. The default setting causes the server to return Apache-Coyote/1.1 with each HTTP response.

Rationale

Failure to set the server attribute aids malicious users in fingerprinting a web server. However, the server attribute is also used legitimately by some applications for identification.

Additional information

CVSSv2 Risk Assessment: 2.0 / Low

DoD Risk Category: CAT III

NIST 800.53 Mapping: CM-6,CM-7

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1,DCPP-1

Validation instructions

Review <Connector> elements in JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml. Check each HTTP <Connector> element to ensure it defines a server attribute. A server attribute should be defined, and it should be set to something other than Apache-Coyote/1.1.

Remediation instructions

Ensure that all HTTP <Connector> elements within JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml have appropriately configured server attributes (set to something other than Apache-Coyote/1.1).

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:401301
File: eap5-ocil.xml

1.27 - Harden Tomcat Connectors: ciphers attribute

The Tomcat container is commonly used to broker connections for JBoss. Several steps to harden the defined connectors can be taken quickly and easily. The ciphers attribute controls the what ciphers are used to negotiate secure connections. The default setting causes the server to use the ciphers allowed by the running Java Virtual Machine.

Rationale

In an environment where FIPS mode has been enabled for the JVM, overriding those settings can lead to system instability or the use of non-FIPS algorithms.

Additional information

CVSSv2 Risk Assessment: 6.0 / Medium

DoD Risk Category: CAT II

NIST 800.53 Mapping: CM-6,CM-7

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1,DCPP-1

Validation instructions

Review <Connector> elements in JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml. Check each <Connector> element that contains a secure=true attribute. Ensure this connector does not define a ciphers attribute and instead inherits ciphers defined by the JVM.

Remediation instructions

Ensure that all secure <Connector> elements within JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml have not defined cipher attributes.

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:401401
File: eap5-ocil.xml

1.28 - Harden Tomcat Connectors: limit connectionTimeout

The Tomcat container is commonly used to broker connections for JBoss. Several steps to harden the defined connectors can be taken quickly and easily. connectionTimeout is the time (in milliseconds) that the container will wait for URI content after receiving a connection. The default setting is 60000.

Rationale

An overly high setting can be easily exploited to create a denial of service condition by tying up server resources.

Additional information

CVSSv2 Risk Assessment: 6.3 / Medium - CVSSv2 Formula: (AV:N/AC:M/Au:S/C:N/I:N/A:C)

DoD Risk Category: CAT II

NIST 800.53 Mapping: CM-6,CM-7

DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1,DCPP-1

Validation instructions

Review HTTP <Connector> elements in JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml. Check to ensure they define a connectionTimeout attribute. The connectionTimeout attribute should be 20000 or less (20 seconds).

Remediation instructions

Ensure that all HTTP <Connector> elements within JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml have appropriately configured connectionTimeout attributes (20000 or less).

Check Summary

System: http://scap.nist.gov/schema/ocil/2
Name: ocil:com.redhat.eap5.scap:questionnaire:401501
File: eap5-ocil.xml

Securing JBoss platform

The rules in this group are used to secure the JBoss platform and its dependencies.

2.1 - Configure Java Security Manager to use an environment specific policy

The Java Security Manager is a crucial piece of the Java security infrastructure. JBoss Enterprise Application Platform should be configured to load a Java security policy that has been vetted for use in the environment. This precludes the use of the simple default policy that ships with JBoss, but does not preclude the use of preconfigured policy files like the security policy designed for use in a Common Criteria environment (See JBoss Common Criteria Configuration Guide for details).

Rationale

A weak, default, or incomplete Java Security Manager policy file can completely compromise the security of a Java installation by granting excessive permissions to applications running within the sandbox. These permissions can be leveraged (maliciously or not) to run code against the operating system.

Additional information

CVSSv2 Risk Assessment: 6.8 / Medium - CVSSv2 Formula: (AV:N/AC:M/Au:N/C:P/I:P/A:P)

DoD Risk Category: CAT II

NIST 800.53 Mapping: SA-13

Remediation instructions

To load an environment specific security policy, simply append the following line to JBOSS_HOME/bin/run.conf or JBOSS_HOME/bin/run.conf.bat as appropriate (depending on the host operating system).

JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy==[PATH TO POLICY FILE]"

NOTE: Using a prepackaged policy file is acceptable, as long as the policy file has been reviewed for compatibility and security within the current environment.

References

1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

Check Summary

System: http://oval.mitre.org/XMLSchema/oval-definitions-5
Name: oval:com.redhat.eap5.scap:def:204301
File: eap5-oval.xml

2.2 - Ensure proper permissions are configured for interactions with JBoss JMX Kernel MBean

Java permissions for MBeans should be carefully restricted to enforce the least privilege principle. These permissions are enforced by the Java Security Manager and the policies it loads at startup. These permissions can be assigned or restricted in an application-specific, granular manner.

Rationale
Java permissions for MBeans should be carefully restricted to enforce the least privilege principle. A JMX MBean server might have access to sensitive information and might be able to perform sensitive operations. JMX provides necessary access control that identifies which clients can access that information and who can perform those operations through the use of the Java Security Manager (JSM). An MBean has a management interface consisting of Named and typed attributes that can be read and written, Named and typed operations that can be invoked and Typed notifications that can be emitted by the MBean.
Additional information

CVSSv2 Risk Assessment: 3.7 / Low - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:P/I:P/A:P)

DoD Risk Category: CAT III

NIST 800.53 Mapping: AC-6

DoD 8500.2 Mapping: ECLP-1

Validation instructions

To validate compliance, review all policy files defining permissions for the Java Security Manager. In a default Common Criteria compliant JBoss deployment the following policy files will be utilized by JSM (review run.conf or run.conf.bat for more):

  • java.home/lib/security/java.security
  • JBOSS_HOME/bin/security_cc.policy
  • Other environments will simply load the java.security properties file by default. Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy)

    Review all JSM permissions granted to MBeans. Grant statements should be limited to specific users and specific methods.

    For example, permission A in the example below is allowed while permission B is not:

    //Permission A
    grant principal javax.security.auth.x500.X500Principal "CN=Administrator,OU=JBoss,O=RedHat,L=Raleigh,ST=NC,C=US"
    {
    	permission javax.management.MBeanPermission
    	"className#member[objectName]",
    	"invoke";
    }
    grant principal javax.management.remote.JMXPrincipal "guest"
    {
    	permission javax.management.MBeanPermission "*", "queryNames";
    	permission javax.management.remote.SubjectDelegationPermission;
    
    //Permission B
    grant {
    	permission javax.management.MBeanPermission "*","invoke";
    }
    Remediation instructions
    The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) for MBeans. This should be done in cooperation with system administrators, application developers and/or application documentation.
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:205101
    File: eap5-ocil.xml

    2.3 - Ensure proper permissions are configured for deployed applications: java.io.FilePermission

    Deployed applications must not be granted file permissions - except to those that are dedicated to the application only. These permissions are enforced by the Java Security Manager and the policies it loads at startup. These permissions can be assigned or restricted in an application-specific, granular manner.

    Rationale

    Java permissions for deployed applications should be carefully restricted to enforce the least privilege principle. Granting unrestricted access to the host operating system creates a large attack vector for malicious users that have penetrated the JBoss server.

    Additional information

    CVSSv2 Risk Assessment: 6.2 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:C/I:C/A:C)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-6

    DoD 8500.2 Mapping: ECLP-1

    Validation instructions

    To validate compliance, review all policy files defining permissions for the Java Security Manager. In a default Common Criteria compliant JBoss deployment the following policy files will be utilized by JSM (review run.conf or run.conf.bat for more):

    • java.home/lib/security/java.security
    • JBOSS_HOME/bin/security_cc.policy

    Other environments will simply load the java.security properties file by default. Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy).

    Review all permissions granted to user deployed applications. The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) for applications.

    Grant statements granting file permissions are permitted only when the file permission targets are located within the user application's directory and dedicated for use by the deployed application.

    For example, permission A in the example below is allowed while permission B is not:

    //Permission A
    grant codeBase "file:${JBoss.server.home.dir}/deploy/userApplication/" { 
    	permission java.io.FilePermission "${JBoss.server.home.dir}/deploy/userApplication/temp.txt", "read";
    };
    //Permission B
    	grant codeBase "file:${JBoss.server.home.dir}/deploy/userApplication/" { 
    	permission java.io.FilePermission "/etc/shadown", "read";
    };
    Remediation instructions

    The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) for applications. This should be done in cooperation with application developers or application documentation.

    Application access granted to files by java.io.FilePermission must be located within the deployed application's directory path and be dedicated for use by the deployed application. Grant statements in conflict with this guidance should be modified or removed.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:205201
    File: eap5-ocil.xml

    2.4 - Ensure proper permissions are configured for deployed applications: java.net.NetPermission

    Deployed applications must not be granted network permissions. These permissions are enforced by the Java Security Manager and the policies it loads at startup. These permissions can be assigned or restricted in an application-specific, granular manner.

    Rationale

    Java permissions for deployed applications should be carefully restricted to enforce the least privilege principle.

    Additional information

    CVSSv2 Risk Assessment: 5.2 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:P/I:P/A:C)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-6

    DoD 8500.2 Mapping: ECLP-1

    Validation instructions

    To validate compliance, review all policy files defining permissions for the Java Security Manager. In a default Common Criteria compliant JBoss deployment the following policy files will be utilized by JSM (review run.conf or run.conf.bat for more):

    • java.home/lib/security/java.security
    • JBOSS_HOME/bin/security_cc.policy

    Other environments will simply load the java.security properties file by default. Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy).

    Review all permissions granted to user deployed applications. Grant statements granting network permissions are not allowed and will look similar to the following:

    grant codeBase "file:${JBoss.server.home.dir}/deploy/userApplication/" { 
    	permission java.net.NetPermission [specific permissions];
    };
    Remediation instructions

    The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) for applications. This should be done in cooperation with application developers or application documentation.

    Permissions granted to applications via java.net.NetPermission should be removed.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:205301
    File: eap5-ocil.xml

    2.5 - Ensure proper permissions are configured for deployed applications: java.lang.RuntimePermission

    Deployed applications must not be granted runtime permissions. These permissions are enforced by the Java Security Manager and the policies it loads at startup. These permissions can be assigned or restricted in an application-specific, granular manner.

    Rationale

    Java permissions for deployed applications should be carefully restricted to enforce the least privilege principle. Granting RuntimePermission to applications allows these applications to modify classloaders or modify the running security manager. Either of these actions can be used to elevate permissions and increase the number of potential damaging actions that can be taken.

    Additional information

    CVSSv2 Risk Assessment: 6.2 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:C/I:C/A:C)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-6

    DoD 8500.2 Mapping: ECLP-1

    Validation instructions

    To validate compliance, review all policy files defining permissions for the Java Security Manager. In a default Common Criteria compliant JBoss deployment the following policy files will be utilized by JSM (review run.conf or run.conf.bat for more):

    • java.home/lib/security/java.security
    • JBOSS_HOME/bin/security_cc.policy

    Other environments will simply load the java.security properties file by default. Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy)

    Review all permissions granted to user deployed applications. Grant statements granting runtime permissions are not allowed and will look similar to the following:

    grant codeBase "file:${JBoss.server.home.dir}/deploy/userApplication/" { 
    	permission java.lang.RuntimePermission [specific permissions];
    };
    Remediation instructions

    The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) for applications. This should be done in cooperation with application developers or application documentation.

    Permissions granted to applications via java.lang.RuntimePermission should be removed.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:205401
    File: eap5-ocil.xml

    2.6 - Ensure proper permissions are configured for deployed applications: java.net.SocketPermission

    Deployed applications must not be granted any socket permissions. These permissions are enforced by the Java Security Manager and the policies it loads at startup. These permissions can be assigned or restricted in an application-specific, granular manner.

    Rationale

    Java permissions for deployed applications should be carefully restricted to enforce the least privilege principle. Most well-designed applications will not need to directly manipulate sockets for network access (access to datasources should be handled through datasources, which can be assigned SocketPermission.).

    Additional information

    CVSSv2 Risk Assessment: 6.2 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:C/I:C/A:C)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-6

    DoD 8500.2 Mapping: ECLP-1

    Validation instructions

    To validate compliance, review all policy files defining permissions for the Java Security Manager. In a default Common Criteria compliant JBoss deployment the following policy files will be utilized by JSM (review run.conf or run.conf.bat for more):

    • java.home/lib/security/java.security
    • JBOSS_HOME/bin/security_cc.policy

    Other environments will simply load the java.security properties file by default. Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy)

    Review all permissions granted to user deployed applications. Grant statements granting socket permissions are not allowed and will look similar to the following:

    grant codeBase "file:${JBoss.server.home.dir}/deploy/userApplication/" { 
    	permission java.net.SocketPermission [specific permissions];
    };
    Remediation instructions

    The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) for applications. This should be done in cooperation with application developers or application documentation.

    Permissions granted to applications via java.net.SocketPermission should be removed.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:205501
    File: eap5-ocil.xml

    2.7 - Ensure proper permissions are configured for deployed applications: java.security.AllPermission

    Deployed applications must not be granted all permissions. These permissions are enforced by the Java Security Manager and the policies it loads at startup. These permissions can be assigned or restricted in an application-specific, granular manner.

    Rationale

    Java permissions for deployed applications should be carefully restricted to enforce the least privilege principle. Using AllPermissions is essentially disabling the Java security sandbox and is inadvisable in nearly every scenario.

    Additional information

    CVSSv2 Risk Assessment: 6.2 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:C/I:C/A:C)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-6

    DoD 8500.2 Mapping: ECLP-1

    Validation instructions

    To validate compliance, review all policy files defining permissions for the Java Security Manager. In a default Common Criteria compliant JBoss deployment the following policy files will be utilized by JSM (review run.conf or run.conf.bat for more):

    • java.home/lib/security/java.security
    • JBOSS_HOME/bin/security_cc.policy

    Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy)

    Review all permissions granted to user deployed applications. Grant statements granting AllPermission are not allowed and will look similar to the following:

    grant codeBase "file:${JBoss.server.home.dir}/deploy/userApplication/" { 
    	permission java.security.AllPermission;
    };
    Remediation instructions

    The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) for applications. This should be done in cooperation with application developers or application documentation.

    Permissions granted to applications via java.security.AllPermission should be removed.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:205601
    File: eap5-ocil.xml

    2.8 - Ensure default system Java Authentication and Authorization Service configuration is in use for JBoss Seam

    For JBoss Seam, the simplified Java Authentication and Authorization Service configuration provided by the Seam Security API must not be used. The default system JAAS configuration should be used instead. Using the default system JAAS configuration ensures user identification and authentication are performed by the JBoss Enterprise Application Platform. JBoss Seam provides additional interfaces for implementing other security functions such as authorization (for example, entity bean permissions). This functionality is controlled by JBoss Seam, and is therefore outside the scope of the evaluated product.

    Rationale

    Using an administrator specified JAAS configuration enables a more rigorous security posture.

    Additional information

    CVSSv2 Risk Assessment: 5.5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CM-6

    DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

    Validation instructions

    Check for components.xml. These files are typically located within the WEB-INF director of a deployed WAR. However, components.xml can also be located within the META-INF directory of a JAR or any JAR directory containing classes with a @Name annotation.

    Within components.xml, the security identity should specify a JAAS security domain to override the default Seam configuration. See the example below:

    <security:identity jaas-config-name="[security domain]"/>

    The security domain must map to a valid JAAS security domain.

    Remediation instructions

    Within components.xml, the security identity should specify a JAAS security domain to override the default Seam configuration. See the example below:

    <security:identity jaas-config-name="[security domain]"/>

    Components.xml is typically located within the WEB-INF director of a deployed WAR. However, components.xml can also be located within the META-INF directory of a JAR or any JAR directory containing classes with a @Name annotation.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:202801
    File: eap5-ocil.xml

    2.9 - Validate keystore and keystorePasswordURL properties are defined and loaded by Java Security Manager

    Ensure keystore and keystorePasswordURL properties exist and are loaded by Java Security Manager.

    Rationale

    A keystore should be setup for production environments. Defining a keystore is a basic step towards implementing security and allowing for the use of public/private key cryptography for JBoss. The keystore should be password protected to protect the integrity of the keystore and prevent unauthorized modification.

    Additional information

    CVSSv2 Risk Assessment: 2.4 / Low - CVSSv2 Formula: (AV:L/AC:H/Au:S/C:P/I:P/A:N)

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: SC-28,IA-5

    DoD 8500.2 Mapping: ECCR-1,ECCR-2,ECCR-3,IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    In a default JBoss deployment the following policy file will be utilized by Java Security Manager: java.home/lib/security/java.security (Common Criteria installations are typically configured to use the JBOSS_HOME/bin/security_cc.policy file). Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy). Ensure the following lines exist within the any loaded policy file:

    keystore "file:[PATH TO KEYSTORE]";
    keystorePasswordURL "file:[PATH TO PASSWORD FILE]";

    NOTE: The file names and paths may vary.

    Remediation instructions

    Add the following lines to any loaded policy file:

    keystore "file:[DESIRED PATH TO KEYSTORE]";
    keystorePasswordURL "file:[DESIRED PATH TO PASSWORD FILE]";

    A typical configuration may look like the following:

    keystore "file:${JBoss.server.home.dir}/cc.keystore";
    keystorePasswordURL "file:${JBoss.server.home.dir}/cc.password";

    NOTE: The file names and paths may be different. Those shown are the defaults. If the keystore or password file are in different locations, the policy should reflect that.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:206001
    File: eap5-ocil.xml

    2.10 - Validate a keystore file for JBoss exists and is accessible to JBoss

    Validate a keystore for JBoss exists and is accessible to JBoss.

    Rationale

    A keystore should be setup for production environments. Defining a keystore is a basic step towards implementing security and allowing for the use of public/private key cryptography for JBoss. The keystore should be password protected to protect the integrity of the keystore and prevent unauthorized modification.

    Additional information

    CVSSv2 Risk Assessment: 3.5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-8,IA-5

    DoD 8500.2 Mapping: ECTM-1,ECTM-2,IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Determine which keystore is being used by JBoss. In a default JBoss deployment the following policy file will be utilized by Java Security Manager: java.home/lib/security/java.security (Common Criteria installations are typically configured to use the JBOSS_HOME/bin/security_cc.policy file). Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy). Search for a property similar to the following:

    keystore "file:[PATH TO KEYSTORE]";

    Next, validate that the keystore exists at the specified path and that the JBoss process owner account and JBoss administrators have READ/WRITE access to the keystore.

    Remediation instructions

    To create a JBoss keystore, run the following command (you will be prompted to create a password):

    keytool -importcert -alias jboss -keystore [PATH TO KEYSTORE AS DEFINED IN POLICY FILE] -file [PATH TO TRUSTED CERTIFICATE TO IMPORT] -noprompt -trustcacerts

    Setting permissions will vary by operating system, but typically commands like cacls, xacls, chmod, setfacl, etc can all be used to restrict permissions on the keystore. Only the JBoss process owner and JBoss administrators should have READ/WRITE access to the keystore.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:205901
    File: eap5-ocil.xml

    2.11 - Validate a password file for the Java keystore exists and is accessible to JBoss

    Validate a password file for the keystore defined in the properties file exists and is accessible to JBoss.

    Rationale

    A password-protected keystore should be setup for production environments. The password for the keystore should be stored in a password file to facilitate automated startup of JBoss Enterprise Application Platform.

    Additional information

    CVSSv2 Risk Assessment: 3.7 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-28,IA-5

    DoD 8500.2 Mapping: ECCR-1,ECCR-2,ECCR-3,IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Determine which keystore is being used by JBoss. In a default JBoss deployment the following policy file will be utilized by Java Security Manager: java.home/lib/security/java.security (Common Criteria installations are typically configured to use the JBOSS_HOME/bin/security_cc.policy file). Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy). Search for a property similar to the following:

    keystorePasswordURL "file:[PATH TO KEYSTORE PASSWORD FILE]";

    Next, validate that the password file exists at the specified path, that only JBoss process owner account and JBoss administrators have READ/WRITE access to the file, and the correct password for the JBoss keystore is in the file.

    Remediation instructions

    To add a password file for a JBoss keystore, simply add the plain-text password to a file and then specify that file in a loaded Java Security Manager policy.

    First, ensure the password file location is identified in the policy file being loaded by the Java Security Manager:

    keystorePasswordURL "file:[DESIRED PATH TO KEYSTORE PASSWORD FILE]";

    Next, add the plain-text password to file whose location you just defined.

    Finally, restrict permissions on the password file so that only the JBoss process owner account and JBoss administrators have READ/WRITE access. Setting permissions will vary by operating system, but typically commands like cacls, xacls, chmod, setfacl, etc can all be used to restrict permissions on the keystore. Only the JBoss process owner and JBoss administrators should have READ/WRITE access to the password file.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:216001
    File: eap5-ocil.xml

    2.12 - Validate JBoss keystore is password protected

    Validate the keystore loaded by the Java Security Manager is password protected. Password protecting the Java keystore used by JBoss issued to protect the integrity of the keystore. It does not prevent listing the content, but it does prevent modification of the keystore. Private keys within the keystore are still protected by their own passwords to prevent disclosure.

    Rationale

    Failure to protect the integrity of the keystore used by JBoss can result in authorized modification of the keystore and subsequent certificate trust compromises for JBoss.

    Additional information

    CVSSv2 Risk Assessment: 3.7 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:P/I:P/A:P)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-28,IA-5

    DoD 8500.2 Mapping: ECCR-1,ECCR-2,ECCR-3,IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Determine which keystore is being used by JBoss. In a default JBoss deployment the following policy file will be utilized by Java Security Manager: java.home/lib/security/java.security (Common Criteria installations are typically configured to use the JBOSS_HOME/bin/security_cc.policy file). Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy). Search for a property similar to the following:

    keystore "file:${JBoss.server.home.dir}/cc.keystore";

    Next, access the contents of the keystore using the following command:

    keytool -list -keystore [PATH TO KEYSTORE]

    You should be prompted for a password (non-blank).

    Remediation instructions

    Determine which keystore is being used by JBoss. In a default JBoss deployment the following policy file will be utilized by Java Security Manager: java.home/lib/security/java.security (Common Criteria installations are typically configured to use the JBOSS_HOME/bin/security_cc.policy file). Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy). Search for a property similar to the following:

    keystore "file:[PATH TO KEYSTORE]";

    Add a password to the keystore:

    keytool -storepasswd -keystore [PATH TO KEYSTORE]
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:215801
    File: eap5-ocil.xml

    2.13 - Ensure jboss alias is trusted within the JBoss keystore

    The jboss alias must be a trustedCertEntry with the JBoss Java keystore. This allows code signed by with the default JBoss certificate to run when using a restrictive policy file.

    Rationale

    A keystore should be setup for production environments with JBoss as a trustedCertEntry for proper functioning of the JBoss Enterprise Application Platform.

    Additional information

    CVSSv2 Risk Assessment: 2.4 / Low - CVSSv2 Formula: (AV:L/AC:H/Au:S/C:P/I:P/A:N)

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Determine which keystore is being used by JBoss. In a default JBoss deployment the following policy file will be utilized by Java Security Manager: java.home/lib/security/java.security (Common Criteria installations are typically configured to use the JBOSS_HOME/bin/security_cc.policy file). Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy). Search for a property similar to the following:

    keystore "file:${JBoss.server.home.dir}/cc.keystore";

    Next, list the contents of the keystore using the following command:

    keytool -list -keystore [PATH TO KEYSTORE]

    The jboss alias must exist as a trustedCertEntry.

    Remediation instructions

    To ensure the Jboss alias is a trustedCertEntry, the certificate must be imported to the keystore with the proper command:

    keytool -importcert -alias jboss -keystore [PATH TO KEYSTORE] -file JBOSS_HOME/bin/JBossPublicKey.RSA -noprompt -trustcacerts

    You can check the result with the following keytool command:

    keytool -list -keystore [PATH TO KEYSTORE]

    You should get similar results to those below:

    Your keystore contains 1 entry
    jboss, May 17, 2012, trustedCertEntry,
    Certificate fingerprint (MD5): 93:F2:F1:8B:EF:8A:E0:E3:D0:E7:69:BC:69:96:29:C1

    Alternatively, the Jboss public key can be added to the Java keystore:

    keytool -importcert -alias jboss -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file JBOSS_HOME/bin/JBossPublicKey.RSA -noprompt -trustcacerts

    If the system Java keystore is used, the password should be changed with the following command. This may affect the functioning of other applications using the system Java keystore.

    keytool -storepasswd -keystore JAVA_HOME/jre/lib/security/cacerts
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:206101
    File: eap5-ocil.xml

    2.14 - Ensure applications deployed by JBoss present valid DoD certificates where applicable

    JBoss applications implementing encryption should present a valid DoD issued X.509 certificate for purposes of identifying the server.

    Rationale

    Establishing trust between clients and servers is an important part of information security. Presenting a valid X.509 certificate leverages the mutually-trusted DoD Public Key Infrastructure. Failure to present a valid DoD certificate undermines user confidence, presents an inconsistent user experience for security, and creates potential for abuse of trust by malicious entities.

    Additional information

    CVSSv2 Risk Assessment: 3.5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Using a web browser or similar tool, access deployed JBoss applications that implement encryption and certificate exchange. Examine the X.509 certificate presented to the browser by the server. The certificate must meet the following requirements:

    • The certificate must match the domain name of the webserver being accessed. This can be determined by comparing the DNS name used in the browser to the DNS name on the presented certificate.
    • The certificate must not be expired. This can be determined by reviewing the expiration dates on the server's certificate.
    • The certificate must be issued by a DoD approved Certificate Authority. This can be determined by examining the issuing hierarchy of the presented certificate. Valid Certificate Authorities can be found here: https://crl.gds.disa.mil/
    • The certificate must not be revoked. This can be determined by enabling revocation checking on the web browser or manually reviewing the revocation list identified by the certificate.
    • The certificate public key length must be at least 1024 bits.

    Remediation instructions

    The JBoss administrator must work with the local security manager and certificate registrar to successfully request a certificate from a DoD Certificate Authority.

    Once a valid X.509 certificate has been obtained from a Certificate Authority within the DoD PKI, the certificate and associated private key can be installed in the JBoss keystore. The following example imports a PCKS12 public/private key pair into a Java Key Store.

    keytool -importkeystore -v -srckeystore KEYSTORE.p12 -srcstoretype PKCS12 -keystore NEW_KEYSTORE.jks

    The final step is to enable TLS on whichever Tomcat connector is used by the deployed application.

    
    <Connector protocol="HTTP/1.1" SSLEnabled="true"
    	port="8443" address="${jboss.bind.address}"
    	scheme="https" secure="true" clientAuth="false"
    	keystoreFile="${jboss.server.home.dir}/conf/NEW_KEYSTORE.jks"
    	keystorePass="KEYSTORE_PASSWORD" sslProtocol = "TLS" />
    				
    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:400501
    File: eap5-ocil.xml

    2.15 - Ensure X.509 keystore utilized by JBoss for certificate trusts contains DoD approved Certificate Authorities

    JBoss applications implementing encryption should utilize the DoD Public Key Infrastructure.

    Rationale

    Establishing trust between clients and servers is an important part of information security. Validating client X.509 certificates against the DoD Public Key Infrastructure leverages the enterprise trust system. Failure to validate client certificates undermines the enterprise trust infrastructure and makes the JBoss server vulnerable to trust abuse exploits.

    Additional information

    CVSSv2 Risk Assessment: 3.5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Determine which keystore is being used by JBoss. Check for keystore definition lines within any .policy files loaded by the Java Security Manager to determine the path to the keystore. For example:

    keystore "file:${JBoss.server.home.dir}/jboss.keystore";

    List the contents of the keystore using the following command:

    keytool -list -keystore [PATH TO KEYSTORE]

    All currently active DoD Certificate Authorities must exist as trustedCertEntry. At the time of this writing, there were 39 separate Certificate Authorities controlled by DoD that should be trusted.

    Remediation instructions

    Download and install the DoD CA certificates. Currently, the CA certificates can be retrieved from https://crl.gds.disa.mil/.

    The keys can be added to the keystore with a command similar to the following:

    keytool -importcert -keystore [PATH TO KEYSTORE] -storepass [KEYSTORE PASSWORD] -file [PATH TO CERTIFICATE] -noprompt -trustcacerts
    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:400601
    File: eap5-ocil.xml

    2.16 - Ensure deployed applications requiring authentication utilizes DoD PKI Class 3 or Class 4 certificate and hardware security token or NSA-certified product

    JBoss applications implementing authentication should utilize the DoD Public Key Infrastructure. The DoD Public Key Infrastructure is designed to use hardware tokens such as the Common Access Card in conjunction with issued X.509 certificates. These tokens are typically protected with a PIN that unlocks access to the private certificate stored on the token.

    Rationale

    Leveraging the DoD Public Key Infrastructure increases the security of an application because the DoD PKI raises the bar for exploitation of user identities. Applications that require authentication and do not utilize PKI must then rely on a less secure form of authentication, such as username and password. Additionally, current DoD guidance requires the use of DoD PKI over username and password.

    Additional information

    CVSSv2 Risk Assessment: 5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    There are many options for implementing this rule on deployed applications. Authentication using DoD's PKI can be accomplished using JBoss itself, the webserver underneath JBoss, or a traffic aggregator in front of JBoss. This rule focuses on configuration of JBoss to authenticate users with a PKI. This rule requires multiple steps to validate.

    First, determine if authentication is required by the deployed application. Review the deployed application's jboss-web.xml (JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/) file to ensure that a security domain has been referenced. For example:

    <security-domain>java:/jaas/JBossTestRealm</security-domain>

    Next, review the deployed application's web.xml (JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/) file to ensure that resources within the web application have been identified to be secured. The <auth-method> element MUST contain CLIENT-CERT in order to implement certificate-based authentication. For example:

    <security-constraint>
    	<web-resource-collection>
    		<web-resource-name>TestResource</web-resource-name>
    		<url-pattern>/*</url-pattern>
    	</web-resource-collection>
    	<auth-constraint>
    		<role-name>JBossTestRole</role-name>
    	</auth-constraint>
    </security-constraint>
    	
    <login-config>
    	<auth-method>CLIENT-CERT</auth-method>
    	<realm-name>Test realm</realm-name>
    </login-config>
    
    <security-role>
    	<role-name>JBossTestRole</role-name>
    </security-role>

    Next, ensure that an <application-policy> element is defined that matches the <security-domain> referenced by the jboss-web.xml file. These <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

    • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/META-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml

    Check the <application-policy> element to ensure it has modules defined for authentication. This <login-module> MUST contain the following attributes:

    • code="org.jboss.security.auth.spi.BaseCertLoginModule"
    • flag="required"

    Example of a satisfactory element:

    <application-policy name="JBossTestRealm">
    	<authentication>
    		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
    			<module-option name="usersProperties">testUsers.properties</module-option>
    			<module-option name="rolesProperties">testRoles.properties</module-option>
    		</login-module>
    	</authentication>
    </application-policy>

    Additional modules can be included to shape the exact functionality desired. For example, <module>s such as SubjectCNMapping can be included to perform attribute mapping.

    Finally, the client certificate's Distinguished Name field must be mapped to a certificate alias stored in the a keystore. The keystore will be defined in the JaasSecurityDomain MBean. For example:

    <mbean code="org.jboss.security.plugins.JaasSecurityDomain" name="jboss.ch8:service=SecurityDomain">
    	<constructor>
    		<arg type="java.lang.String" value="JBossTestRealm"/>
    	</constructor>
    	<attribute name="KeyStoreURL">resource:localhost.keystore</attribute>
    	<attribute name="KeyStorePass">cleartext-password-that-should-be-masked</attribute>
    </mbean>
    Remediation instructions

    First, setup an <application-policy> that enforces certificate-based authentication. This can be accomplished in the following files:

    • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/META-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml

    The <application-policy> should resemble the example below:

    <application-policy name="JBossTestRealm">
    	<authentication>
    		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
    			<module-option name="usersProperties">testUsers.properties</module-option>
    			<module-option name="rolesProperties">testRoles.properties</module-option>
    		</login-module>
    	</authentication>
    </application-policy>

    Next, add the <application-policy> to the deployment descriptors and setup the <security-constraint>.

    JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/jboss-web.xml

    <security-domain>java:/jaas/JBossTestRealm</security-domain>

    JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/web.xml

    <security-constraint>
    	<web-resource-collection>
    		<web-resource-name>TestResource</web-resource-name>
    		<url-pattern>/*</url-pattern>
    	</web-resource-collection>
    	
    	<auth-constraint>
    		<role-name>JBossTestRole</role-name>
    	</auth-constraint>
    </security-constraint>
    					
    <login-config>
    	<auth-method>CLIENT-CERT</auth-method>
    	<realm-name>Test realm</realm-name>
    </login-config>
    					
    <security-role>
    	<role-name>JBossTestRole</role-name>
    </security-role>

    Define a keystore to be used via the JaasSecurityDomain MBean:

    JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/jboss-service.xml:

    <mbean code="org.jboss.security.plugins.JaasSecurityDomain" name="jboss.ch8:service=SecurityDomain">
    	<constructor>
    		<arg type="java.lang.String" value="JBossTestRealm"/>
    	</constructor>
    	
    	<attribute name="KeyStoreURL">resource:test.keystore</attribute>
    	<attribute name="KeyStorePass">cleartext-password-that-should-be-masked</attribute>
    </mbean>

    Finally, import the client certificates into the keystore using the keytool command. For example:

    keytool -importcert -alias "DN ON THE CERTIFICATE" -keystore JBOSS_HOME/server/[PROFILE]/conf/test.keystore -file [PATH TO CERTIFICATE]
    References

    1. JBoss Enterprise Application Platform Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:400701
    File: eap5-ocil.xml

    2.17 - Enable Federal Information and Processing Systems 140-2 (FIPS) compliant cryptographic modules for use by JBoss Java environment

    While JBoss itself has no need to load FIPS compliant modules, the underlying technologies such as Java and the Apache Tomcat webcontainer do. Utilizing only FIPS compliant modules decreases compatibility with applications that are not FIPS enabled.

    Rationale

    Enabling FIPS compliant algorithms ensures that the underlying technologies that JBoss works through are using cryptographic modules that have been vetted by NIST for security, stability, and strength. Failure to utilize FIPS certified modules may cause the underlying technologies used by JBoss to utilize older, less secure algorithms. Failure to enable only FIPS compliant modules may also have regulatory consequences, as FIPS 140-2 requires the use of FIPS compliant modules by all federal agencies.

    Additional information

    CVSSv2 Risk Assessment: 4.0 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-13

    DoD 8500.2 Mapping: DCNR-1,ECCR-1,ECCR-2,ECCR-3,ECCT-1,ECCT-2,ECNK-1,ECNK-2

    Validation instructions

    Validating this rule is a multi-step process.

    1. First, ensure that the FIPS compliant providers are enabled in the Java security files.

      For IBM JRE/JDK 6.x:

      Check for the following provider in the JAVA_HOME/jre/lib/security/java.security file:

      • security.provider.1=com.ibm.crypto.fips.provider.IBMJCEFIPS

      NOTE: The FIPS compliant provider MUST be at the top of the list as #1.

      Ensure the following line exists in the System.Defaults properties file:

      • com.ibm.jsse2.usefipsprovider=true

      Finally, ensure the following two properties are defined in JAVA_HOME/jre/lib/security/java.security:

      • ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocketFactoryImpl
      • ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSLServerSocketFactoryImpl

      For Sun JRE/JDK 6.x:

      Check for the following providers in the JAVA_HOME/jre/lib/security/java.security file:

      • security.provider.1=com.sun.net.ssl.internal.ssl.Provider SunPKCS11-NSS

      NOTE: The FIPS compliant provider MUST be at the top of the list as #1

      Next, review the application source code to ensure that the proper constructors are utilized for FIPS compliant algorithms. Review the constructor used to initialize SunJSSE and ensure that the FIPS compliant mode has been enabled.

    2. Lastly, perform a packet capture of the TLS handshake to ensure that only FIPS 140-2 algorithms are selected by the server (ServerHello message).
    Remediation instructions

    As this check is not specific to JBoss, validation steps will vary dependent on the Java vendor in use.

    For IBM JRE/JDK 6.x:

    Add the following provider to the JAVA_HOME/jre/lib/security/java.security file:

    • security.provider.1=com.ibm.crypto.fips.provider.IBMJCEFIPS

    NOTE: There will be a list of several providers already in place, numbered 1 to X. The FIPS compliant providers MUST go at the top of the list as #1 and #2. The other providers must be re-numbered.

    Ensure the following line exists in the System.Defaults properties file:

    • com.ibm.jsse2.usefipsprovider=true

    Finally, ensure the following two properties are defined in JAVA_HOME/jre/lib/security/java.security:

    • ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocketFactoryImpl
    • ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSLServerSocketFactoryImpl

    For Sun JRE/JDK 6.x:

    Add the following provider to the JAVA_HOME/jre/lib/security/java.security file:

    • security.provider.1=com.sun.net.ssl.internal.ssl.Provider SunPKCS11-NSS

    NOTE: There will be a list of several providers already in place, numbered 1 to X. The FIPS compliant provider MUST go at the top of the list as #1. The other providers must be re-numbered.

    Now the deployed applications must be written to take advantage of the FIPS enabled providers. The Sun SunJSSE provider must be initialized at run-time with the FIPS boolean value as true.

    References

    1. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:400801
    File: eap5-ocil.xml

    2.18 - Eliminate clear-text passwords: data sources

    Eliminate clear-text passwords in data source configuration files. The class org.jboss.resource.security.SecureIdentityLoginModule can be used to both encrypt database passwords and to provide a decrypted version of the password when the data source configuration is required by the server. The SecureIdentityLoginModule uses a hard-coded password to encrypt/decrypt the data source password.

    Rationale

    Clear-text passwords are an unnecessary security vulnerability. While risk of exposure can be mitigated through configured permissions and file ownership, these methods do not completely remediate the risk.

    Additional information

    CVSSv2 Risk Assessment: 3.7 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:P/I:P/A:P)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-28

    DoD 8500.2 Mapping: ECCR-1,ECCR-2,ECCR-3

    Validation instructions

    Review data source file located within JBOSS_HOME/server/deploy/ and subdirectories. Data sources with encrypted passwords will no longer have <user-name> or <password> elements, and will instead reference a <security-domain>.

    Remediation instructions

    Following the extensive instructions located within Chapter 17, "Encrypting Data Source Passwords" of the JBoss Enterprise Application Platform 5 Security Guide, 2011. While too lengthy to contain here, the summarized steps include:

    • Encrypt the data source password.
    • Create an application authentication policy with the encrypted password.
    • Configure the data source to use the application authentication policy.
    References

    1. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:113601
    File: eap5-ocil.xml

    2.19 - Eliminate clear-text passwords: Tomcat Connectors

    Eliminate clear-text passwords in: Tomcat Connectors.

    Rationale

    Clear-text passwords are an unnecessary security vulnerability. While risk of exposure can be mitigated through configured permissions and file ownership, these methods do not completely remediate the risk.

    Additional information

    CVSSv2 Risk Assessment: 3.7 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:P/I:P/A:P)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-28

    DoD 8500.2 Mapping: ECCR-1,ECCR-2,ECCR-3

    Validation instructions

    Review JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml for evidence of clear-text passwords in Connectors. These Connectors will contain a <attribute name="KeyStorePass"> or a keystorePass attribute as part of the <Connector> element, with a clear-text password.

    Remediation instructions

    Following the extensive instructions located within Chapter 18, "Encrypting the Keystore Password in a Tomcat Connector" of the JBoss Enterprise Application Platform 5 Security Guide, 2011. While too lengthy to contain here, the summarized steps include:

    • Configure JaasSecurityDomain MBean
    • Generate encrypted password
    • Update the Tomcat service MBean
    References

    1. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:116301
    File: eap5-ocil.xml

    2.20 - Eliminate clear-text passwords: XML configuration files

    Using password masking, eliminate clear-text passwords in XML configuration files.

    Rationale

    Clear-text passwords are an unnecessary security vulnerability. While risk of exposure can be mitigated through configured permissions and file ownership, these methods do not completely remediate the risk.

    Additional information

    CVSSv2 Risk Assessment: 3.7 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:P/I:P/A:P)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-28

    DoD 8500.2 Mapping: ECCR-1,ECCR-2,ECCR-3

    Validation instructions

    Review configuration files for evidence of clear-text passwords. No clear-text passwords should exist in XML configuration files (password masking should be used instead).

    Remediation instructions

    Follow the extensive instructions located within Chapter 16, "Masking Passwords in XML Configuration" of the JBoss Enterprise Application Platform 5 Security Guide, 2011. These instructions are too lengthy to summarize here.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html
    2. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:116501
    File: eap5-ocil.xml

    2.21 - Change default password: JBoss Messaging MessageSucker

    JBoss Messaging ships with a default MessageSucker password located within the Messaging ServerPeer configuration. This password is used by JBoss to create connections and pass messages between nodes.

    Rationale

    The SuckerPassword ships with a default clear-text password that can be used by attackers to pass messages to default installations of Jboss. The exact content and ramifications of these messages will depend on the listening applications (application logic, input validations, etc.). Failure to change this password can allow an attacker to create connections and pass messages to nodes.

    Additional information

    CVSSv2 Risk Assessment: 7.5 / High - CVSSv2 Formula: (AV:N/AC:L/Au:N/C:P/I:P/A:P)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Review the Jboss Messaging configuration file for the Messaging ServerPeer located here:

    JBOSS_HOME/server[PROFILE]/deploy/messaging/messaging-jboss-beans.xml

    Ensure the <property name="suckerPassword" > has been changed from the default of "CHANGE ME!".

    Remediation instructions

    Open the Jboss Messaging configuration file for the Messaging ServerPeer located here:

    JBOSS_HOME/server[PROFILE]/deploy/messaging/messaging-jboss-beans.xml

    Locate the element <property name="suckerPassword" > and change the contents to a new password generated in accordance with your organization's password security requirements, restricting the use of predefined XML entities such as <'>@" or escaping them if you do. For example:

    <property name="suckerPassword" >Lmf3SdntiDFF6(D5</property>

    The encrypted version of this password can be added to JBOSS_HOME/server[PROFILE]/deploy/messaging/messaging-service.xml by following the directions located in Follow the extensive instructions located within Chapter 16, "Masking Passwords in XML Configuration" of the JBoss Enterprise Application Platform 5 Security Guide, 2011.

    References

    1. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:400201
    File: eap5-ocil.xml

    2.22 - Change default password: Java cacerts keystore

    The Java cacerts keystore is installed by default with most versions of Java. It contains X.509 public certificates for a set of default commercial Certificate Authorities.

    Rationale

    To prevent compromise of the server's X.509 trust chains, the well-known default password on the cacerts keystore should be changed. Failure to change this password could lead to the malicious modification of trusted X.509 CA's.

    This would allow attackers to create connections as trusted entities, sign malicious could as a trusted entity, or create any other number of X.509 certificate abuses.

    Additional information

    CVSSv2 Risk Assessment: 2.6 / Low - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:P/I:P/A:N)

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Attempt to access the contents of the Java cacerts keystore at the default location using the following command:

    keytool -list -keystore JAVA_HOME/lib/security/cacerts

    If the cacerts file cannot be found in your JAVA_HOME/lib/security/, try searching the system for the file named cacerts located in the Java install path.

    You should be prompted for a password (non-blank). Attempt to authenticate using the default password 'changeit'

    If you fail to authenticate, you will receive a warning message (and the contents of the keystore will still be displayed):

    ***************** WARNING WARNING WARNING *****************

    * The integrity of the information stored in your keystore *

    * has NOT been verified! In order to verify its integrity, *

    * you must provide your keystore password. *

    ***************** WARNING WARNING WARNING *****************

    Using the default password 'changeit' should fail to authenticate and thus produce the warning. If the default password successfully authenticates, this check fails.

    Remediation instructions

    Add a password to the default Java cacerts keystore:

    keytool -storepasswd -keystore [PATH TO KEYSTORE]
    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:400301
    File: eap5-ocil.xml

    2.23 - Ensure Security Audit Appender is enabled

    The Security Audit Appender must be enabled. The Security Audit Appender and the Security Audit Provider category together set up the audit infrastructure that allows deployed applications to easily audit authentication and authorization events.

    Rationale

    Enabling the Security Audit Appender is a necessary component of comprehensive auditing in a secure production environment.

    Additional information

    CVSSv2 Risk Assessment: 4 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AU-12

    DoD 8500.2 Mapping: ECAT-1,ECAT-2

    Remediation instructions

    Ensure the Security Audit Appender is defined within JBOSS_HOME/server/[PROFILE]/conf/jboss-log4j.xml. By default, the Security Audit Appender exists and just needs to be uncommented.

    <!-- Security AUDIT Appender -->
    <appender name="AUDIT" class="org.jboss.logging.appender.DailyRollingFileAppender">
    	<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
    	<param name="File" value="${JBoss.server.log.dir}/audit.log"/>
    	<param name="Append" value="true"/>
    	<param name="DatePattern" value="'.'yyyy-MM-dd"/>
    	<layout class="org.apache.log4j.PatternLayout">
    		<param name="ConversionPattern" value="%d %-5p [%c] (%t:%x) %m%n"/>
    	</layout>
    </appender>
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:201901
    File: eap5-oval.xml

    2.24 - Ensure Security Audit Provider is enabled

    The Security Audit Provider category must be enabled for production environments. The Security Audit Appender and the Security Audit Provider category together set up the audit infrastructure that allows deployed applications to easily audit authentication and authorization events.

    Rationale

    Enabling the Security Audit Provider category is a necessary component of comprehensive auditing in a secure production environment.

    Additional information

    CVSSv2 Risk Assessment: 4 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AU-12

    DoD 8500.2 Mapping: ECAT-1,ECAT-2

    Remediation instructions

    Ensure the Security Audit Provider category is defined within JBOSS_HOME/server/[PROFILE]/conf/jboss-log4j.xml. By default, the Security Audit Provider category exists and just needs to be uncommented.

    <!-- Category specifically for Security Audit Provider -->
    <category name="org.jboss.security.audit.providers.LogAuditProvider" additivity="false">
    	<priority value="TRACE"/>
    	<appender-ref ref="AUDIT"/>
    </category>
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:202001
    File: eap5-oval.xml

    2.25 - Ensure Configure SecurityInterceptor logging level is set correctly

    Production environments of JBoss require enhanced auditing on the SecurityInterceptor class.

    Rationale

    Enabling TRACE priority logging on the SecurityInterceptor class is a necessary component of comprehensive auditing in a secure production environment.

    Additional information

    CVSSv2 Risk Assessment: 4 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AU-12

    DoD 8500.2 Mapping: ECAT-1,ECAT-2

    Remediation instructions

    Ensure a category is defined for SecurityInterceptor class with a priority of TRACE within JBOSS_HOME/server/[PROFILE]/conf/jboss-log4j.xml.

    <category name="org.jboss.ejb.plugins.SecurityInterceptor">
    	<priority value="TRACE" />
    	<appender-ref ref="AUDIT" />
    </category>
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:202101
    File: eap5-oval.xml

    2.26 - Ensure logging is enabled for Microcontainer bootstrap operations

    Production environments of JBoss require auditing for Microcontainer bootstrap operations.

    Rationale

    Logging Microcontainer bootstrap operations is a necessary component of comprehensive auditing in a secure production environment.

    Additional information

    CVSSv2 Risk Assessment: 4 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AU-3,AU-12

    DoD 8500.2 Mapping: ECAR-1,ECAR-2,ECAR-3,ECLC-1,ECAT-1,ECAT-2

    Remediation instructions

    Set the priority and appender-ref levels for the Microcontainer bootstrap by adding the <category> block as specified to JBOSS_HOME/server/[PROFILE]/conf/jboss-log4j.xml.

    <category name="org.jboss.bootstrap.microcontainer">
    	<priority value="INFO"/>
    	<appender-ref ref="AUDIT"/>
    </category>
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:202201
    File: eap5-oval.xml

    2.27 - Ensure logging is enabled for web-based requests if required by deployed applications

    In the event that application requirements dictate additional logging for web-based requests, the AccessLogValve should be enabled.

    Rationale

    If application owners determine that additional logging of web-based requests is desired, it should be enabled.

    Additional information

    CVSSv2 Risk Assessment: 4 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AU-3,AU-12

    DoD 8500.2 Mapping: ECAR-1,ECAR-2,ECAR-3,ECLC-1,ECAT-1,ECAT-2

    Validation instructions

    If logging of web-based requests has been required for deployed applications the AccessLogValve should be enabled. To check the status of the <Valve>, ensure the following element is defined within JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml.

    <Valve className="org.apache.catalina.valves.AccessLogValve" prefix="localhost_access_log." suffix=".log" pattern="common" directory="${JBoss.server.home.dir}/log" resolveHosts="false" />
    Remediation instructions

    Ensure the following <Valve> exists within: JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml. By default, this <Valve> simply needs to be uncommented.

    <Valve className="org.apache.catalina.valves.AccessLogValve" prefix="localhost_access_log." suffix=".log" pattern="common" directory="${JBoss.server.home.dir}/log" resolveHosts="false" />
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:202301
    File: eap5-ocil.xml

    2.28 - Ensure all required information is displayed in <layout>

    The Security Audit Appender must log all identified information.

    Rationale

    Logging full event information to the Security Audit Appender is a necessary component of comprehensive auditing in a secure production environment.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: AU-12

    DoD 8500.2 Mapping: ECAT-1,ECAT-2

    Remediation instructions

    Enable server startup and shutdown events by making the following change to JBOSS_HOME/server/[PROFILE]/conf/jboss-log4j.xml. Update the ConversionPattern parameter in the Security Audit Appender to show thread information by replacing the default ConversionPattern with the pattern below:

    <!--The full pattern: Date MS Priority [Category] (Thread:NDC) Message -->
    <layout class="org.apache.log4j.PatternLayout">
    	<param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
    </layout>
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:202401
    File: eap5-oval.xml

    2.29 - Production applications should not log output to the JBoss console

    Turn off console logging in production. Console logging in a production environment is a needless drain on system resources.

    Rationale

    Logging to console is a potentially resource intensive activity that should be disabled in production environments. Additionally, disabling console logging removes a potential source of information leakage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: AU-9

    DoD 8500.2 Mapping: ECTB-1,ECTP-1

    Remediation instructions

    In order to prevent JBoss from logging to console, open the JBOSS_HOME/server/[PROFILE]/conf/jboss-log4j.xml file. Next, remove or comment out the <appender-ref> element with a ref attribute value of 'CONSOLE'. This <appender-ref> element will be a child of the <root> element, typically located near the end of the document.

    <root>
    <!--Set the root logger priority via a system property. Note this is parsed by log4j,
    so the full JBoss system property format is not supported; e.g.
    setting a default via ${jboss.server.log.threshold:WARN} will not work.-->
    	<priority value="${jboss.server.log.threshold}"/>
    		<!-- appender-ref ref="CONSOLE"/ -->
    	<appender-ref ref="ASYNC"/>
    </root>
    References

    1. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:110301
    File: eap5-oval.xml

    2.30 - Ensure JBoss process owner is executing with least privilege

    Operating environment permissions assigned to the JBoss process owner should be in compliance with the principle of least privilege.

    Rationale

    In order to reduce the potential impact of exploitation against the JBoss application server (and the rest of the operating environment), the JBoss process owner should execute with as few permissions as possible in the environment (if the account is not local to the operating system or is distributed across multiple operating systems). Failure to limit permissions can dramatically increase the severity of exploits against the JBoss server, such as the execution of arbitrary code.

    Additional information

    CVSSv2 Risk Assessment: 5.1 / Medium - CVSSv2 Formula: (AV:N/AC:H/Au:N/C:P/I:P/A:P)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-6

    DoD 8500.2 Mapping: ECLP-1

    Validation instructions

    Work with the JBoss administrator to identify the JBoss process owner account. Determine if the account is local to the host operating system or is elsewhere in the environment. On Red Hat or Linux systems look for a service definition for JBoss within /etc/init.d/. On Windows systems, check for a service definition within the Services console (services.msc). Assuming JBoss is running, either operating system can also determine the JBoss process owner by examining the currently executing process.

    Next, work with the JBoss administrator to identify the permissions the JBoss process owner executes with. This procedure will vary based on the host operating system. On Red Hat or Linux systems, check the group membership for the account. On Windows systems, review the User Rights Assignments within the Local Security Policy console (secpol.msc).

    This check fails if the JBoss process owner is not executing with least privileges. The following list identifies common scenario failures:

    • The JBoss process owner is a privileged account such as root or administrator.
    • The JBoss process owner is a member of a privileged group, such wheel, root, administrators, power users, domain admins, backup operators, etc.
    • The JBoss process owner is used by multiple applications via use of username and password or group membership.
    • The JBoss process owner account has unnecessary network access to other operating systems or other network nodes, typically through the use of a directory based account with no logon restrictions.

    Remediation instructions

    Steps for implementing this configuration will vary dependent upon operating system. On Red Hat or Linux systems, use /etc/group and /etc/passwd to assign the JBoss process owner a unique local account and group (and limit its group membership). Windows systems can create local accounts through the Computer Management console (compmgmt.msc) and User Rights Assignments managed through the Local Security Policy console (secpol.msc)..

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:400401
    File: eap5-ocil.xml

    2.31 - Deny the JBoss process owner console access

    The JBoss Application Server process owner should not have interactive console login access.

    Rationale

    In order to limit access in the event of an exploitation of the Jboss or one of its deployed applications, the account owning the Jboss process should be limited in its ability to interact with the supporting operating system where possible. Thus, the JBoss process owner account should not have interactive console access.

    Additional information

    CVSSv2 Risk Assessment: 4.1 / Medium - CVSSv2 Formula: (AV:L/AC:M/Au:S/C:P/I:P/A:P)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-6

    Validation instructions

    Steps for validating this configuration will vary, dependent upon operating system:

    Red Hat Enterprise Linux: Interview JBoss administrators or review running processes with ps to identify the JBoss process owner account. Next, review the /etc/passwd file to ensure that the JBoss process owner account is not assigned a login shell (the shell field should read /sbin/nologin).

    Windows: Interview JBoss administrators, review the configured JBoss service, review running process with WMI or task manager to identify the JBoss process owner account. Next, using Local Security Policy Microsoft Management Console or Resultant Set of Policy MMC, ensure the JBoss process owner account has been added to the 'Deny logon locally' security policy and 'Deny log on through Remote Desktop Services' security policy.

    Remediation instructions

    Steps for implementing this configuration will vary, dependent upon operating system:

    Red Hat Enterprise Linux: To prevent users from gaining interactive access to the system console, simply ensure that they are assigned no shell interpreter via the /etc/passwd file. For instance, a properly configured passwd entry for the JBoss account owner may resemble this:

    jboss:x:494:494:JBossAS:/var/lib/jbossas:/sbin/nologin
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html
    2. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:109901
    File: eap5-ocil.xml

    2.32 - Set JBoss file ownership

    All JBoss Enterprise Application Platform files within JBOSS_HOME should be owned by the JBoss process owner account.

    Rationale

    To prevent unauthorized modification or disclosure of JBoss configuration settings, all files within JBOSS_HOME should be owned by the JBoss process owner account.

    Additional information

    CVSSv2 Risk Assessment: 3.7 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:P/I:P/A:P)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-3

    DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1

    Validation instructions

    Validate file ownership for JBOSS_HOME files and subdirectories . Owner is required to be the JBoss process owner account. The JBoss administrators may have group ownership for operating systems that support it.

    Use the ls command to ensure the JBoss process owner owns all JBoss configuration files (JBOSS_HOME and subdirectories); JBoss administrators should be the group owners.

    Remediation instructions

    Steps for implementing this configuration will vary, dependent upon operating system.

    On Red Hat and Linux, use chown to ensure the JBoss process owner owns all JBoss configuration files (JBOSS_HOME and subdirectories); JBoss administrators may be the group owners.

    Windows environments can use the explorer GUI or cacls/xcacls to ensure the JBoss process owner owns all JBoss configuration files (JBOSS_HOME and subdirectories).

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:116201
    File: eap5-ocil.xml

    2.33 - Set JBoss file permissions

    All JBoss Enterprise Application Platform files within JBOSS_HOME should be readable by the JBoss Application Server process owner and JBoss administrators only.

    Rationale

    To prevent unauthorized modification or disclosure of JBoss configuration settings, access to all JBoss related files within JBOSS_HOME should be restricted to the JBoss process owner and JBoss administrators.

    Additional information

    CVSSv2 Risk Assessment: 4.3 / Medium - CVSSv2 Formula: (AV:L/AC:L/Au:S/C:P/I:P/A:P)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-3,AC-6

    DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1,ECLP-1

    Validation instructions

    Validate file permissions for JBOSS_HOME files and subdirectories. File permissions should be restricted to READ/WRITE for JBoss process owner and JBoss administrators. Other accounts that may require READ access include version control accounts or process owners for backup software.

    Red Hat Enterprise Linux: Use the ls command to check basic file permissions. The getfacl command can be useful as well.

    Remediation instructions

    Steps for implementing this configuration will vary, dependent upon operating system.

    Red Hat Enterprise Linux: Use chmod to restrict permissions on files to at least 660 for all files in JBOSS_HOME and subdirectories.

    Windows environments can use the explorer GUI or cacls/xcacls to restrict permissions for all files in JBOSS_HOME and subdirectories.

    File permissions should be restricted to READ/WRITE for JBoss process owner and JBoss administrators. Other accounts that may require READ access include version control accounts or process owners for backup software.

    References

    1. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:109801
    File: eap5-ocil.xml

    Securing deployed applications

    The rules in this group are used to secure applications deployed on JBoss EAP. This includes applications that JBoss packages and deploys by default.

    3.1 - Ensure JMX Console is either secured or removed

    The JMX Console application must be secured so it is accessible by trusted administrators only. If this condition is not met, the application must be removed (deleted) from deployment.

    Rationale

    The JMX Console should require authentication or be removed. Failure to require authentication may allow unauthenticated users to invoke commands or gather information on the JBoss server. This access can be leveraged to do many things, including loading additional code from a malicious source.

    Additional information

    CVSSv2 Risk Assessment: 8 / High - CVSSv2 Formula: (AV:N/AC:L/Au:S/C:P/I:P/A:C)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: AC-3

    DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1

    Validation instructions

    This rule can be checked for compliance by either:

    1. Determine the console is not deployed.
      1. To determine if the JMX Console is deployed, check to see if the exploded WAR located is located here: JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/
    2. If the console is deployed, it must require authentication. Review the defined <security-domain> for the console.
      1. To determine if authentication is required, first check the JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/WEB-INF/jboss-web.xml file to ensure that a security domain has been referenced (example: <security-domain>java:/jaas/jmx-console</security-domain>).
      2. Next, ensure that an <application-policy> element is defined that matches the <security-domain> referenced by the jboss-web.xml file. These <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.
        • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/META-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/WEB-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml
      3. Check the <application-policy> element to ensure it requires authentication. Example of a satisfactory element:
        <application-policy name="jmx-console">
        	<authentication>
        		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
        			<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
        			<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
        		</login-module>
        	</authentication>
        </application-policy>
    Remediation instructions

    This rule can be made compliant by either:

    1. Require authentication for access to the JBoss JMX Console.
      1. First, ensure that an <application-policy> element is defined that requires authentication. Default policies exist for jmx-console and web-console. Example of a satisfactory element:
        <application-policy name="jmx-console">
        	<authentication>
        		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
        			<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
        			<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>	
        		</login-module> 
        	</authentication> 
        </application-policy>

        These <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

        JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
        JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/META-INF/*-jboss-beans.xml
        JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/WEB-INF/*-jboss-beans.xml
        JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml

      2. Next, check the JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/WEB-INF/jboss-web.xml file to ensure that a security domain requiring authentication has been referenced (example: <security-domain>java:/jaas/jmx-console</security-domain>). If no <security-domain> element exists, add it as a child of <jboss-web>.
      3. Next, review the JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/WEB-INF/web.xml. The <security-constraint> must not contain the default limitations on HTTP verbs. For example: <http-method>GET</http-method> or <http-method>POST</http-method>. The default limitations were shown to allow side channel access to malicious users.
      4. Finally, configure the usersProperties defined in the application policy to manage accounts. Example editing JBOSS_HOME/server/[PROFILE]/conf/props/jmx-console-users.properties:
        # A sample users.properties file for use with the UsersRolesLoginModule
        admin=1qaz!QAZ2wsx@WSX
    2. Remove the JBoss JMX Console from deployment.
      1. To remove the JMX Console from deployment, delete the exploded WAR located here: JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war/
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:200601
    File: eap5-oval.xml

    3.2 - Ensure Web Console is either secured or removed

    The Web Console application must be secured so it is accessible by trusted administrators only. If this condition is not met, the application must be removed (deleted) from deployment.

    Rationale

    Failure to secure the default consoles against unauthorized access can quickly lead to system compromise. The default consoles included with JBoss are a well-known attack vector that can be leveraged to load malicious code to be executed on the server.

    Additional information

    CVSSv2 Risk Assessment: 8 / High - CVSSv2 Formula: (AV:N/AC:L/Au:S/C:P/I:P/A:C)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: AC-3

    DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1

    Validation instructions

    This rule can be checked for compliance by either:

    1. Determine the console is not deployed.
      1. To determine if the Web Console is deployed, check to see if the exploded SAR located is located here: JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/
    2. If the console is deployed, it must require authentication. Review the defined <security-domain> for the console.
      1. To determine if authentication is required, first check the JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml file to ensure that a security domain has been referenced (example: <security-domain>java:/jaas/web-console</security-domain>).
      2. Next, ensure that an <application-policy> element is defined that matches the <security-domain> referenced by the jboss-web.xml file. These <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.
        • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/META-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy//management/console-mgr.sar/web-console.war/WEB-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml
      3. Check the <application-policy> element to ensure it requires authentication. Example of a satisfactory element:
        <application-policy name="web-console">
        	<authentication>
        		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
        			<module-option name="usersProperties">web-console-users.properties</module-option>
        			<module-option name="rolesProperties">web-console-roles.properties</module-option>
        		</login-module>
        	</authentication>
        </application-policy>
    Remediation instructions

    This rule can be made compliant by either:

    1. Require authorization for access to the JBoss Web Console.
      1. First, ensure that an <application-policy> element is defined that requires authentication. Default policies exist for jmx-console and web-console. Example of a satisfactory element:
        <application-policy name="web-console">
        	<authentication>
        		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
        			<module-option name="usersProperties">web-console-users.properties</module-option>
        			<module-option name="rolesProperties">web-console-roles.properties</module-option>
        		</login-module>
        	</authentication>
        </application-policy>

        These <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

        • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/META-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/WEB-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml
      2. Next, check the JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml file to ensure that a security domain requiring authentication has been referenced (example: <security-domain>java:/jaas/web-console</security-domain>). If no <security-domain> element exists, add it as a child of <jboss-web>.
      3. Next, review the JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml. The <security-constraint> must not contain the default limitations on HTTP verbs. For example: <http-method>GET</http-method> or <http-method>POST</http-method>. The default limitations were shown to allow sidechannel access to malicious users.
      4. Finally, configure the usersProperties and rolesProperties files defined in the application policy to manage users and roles. Example editing JBOSS_HOME/server/[PROFILE]/conf/props/web-console-users.properties:
        # A sample users.properties file for use with the UsersRolesLoginModule
        admin=1qaz!QAZ2wsx@WSX
    2. Remove the JBoss Web Console from deployment.
      1. To remove the Web Console from deployment, delete the exploded SAR located here: JBOSS_HOME/server/[PROFILE]/deploy/management/
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:200701
    File: eap5-oval.xml

    3.3 - Ensure Administration Console is either secured or removed

    The Administration Console application must be secured so it is accessible by trusted administrators only. If this condition is not met, the application must be removed (deleted) from deployment.

    Rationale

    Failure to secure the default consoles against unauthorized access can quickly lead to system compromise. The default consoles included with JBoss are a well-known attack vector that can be leveraged to load malicious code to be executed on the server.

    Additional information

    CVSSv2 Risk Assessment: 8 / High - CVSSv2 Formula: (AV:N/AC:L/Au:S/C:P/I:P/A:C)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: AC-3

    DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1

    Validation instructions

    This rule can be checked for compliance by either:

    1. Determine the console is not deployed.
      1. To determine if the Administration Console is deployed, check to see if the exploded WAR located is located here: JBOSS_HOME/server/[PROFILE]/deploy/admin-console.war/
    2. If the console is deployed, it must require authentication. Review the defined <security-domain> for the console.
      1. To determine if authentication is required, first check the JBOSS_HOME/server/[PROFILE]/deploy/Administration-console.war/WEB-INF/jboss-web.xml file to ensure that a security domain has been referenced (example: <security-domain>java:/jaas/jmx-console</security-domain>).
      2. Next, ensure that an <application-policy> element is defined that matches the <security-domain> referenced by the jboss-web.xml file. These <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.
        • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/Administration-console.war/META-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/Administration-console.war/WEB-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml
      3. Check the <application-policy> element to ensure it requires authentication. Example of a satisfactory element (this example leverages the pre-existing jmx-console policy):
        <application-policy name="jmx-console">
        	<authentication>
        		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
        			<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
        			<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
        		</login-module>
        	</authentication>
        </application-policy>
      4. Finally, review the JBOSS_HOME/server/[PROFILE]/deploy/Administration-console.war/WEB-INF/web.xml. The <security-constraint> must not contain the default limitations on HTTP verbs. For example: <http-method>GET</http-method> or <http-method>POST</http-method>. The default limitations were shown to allow sidechannel access to malicious users.
    Remediation instructions

    This rule can be made compliant by either:

    1. Require authorization for access to the JBoss Administration Console.
      1. First, ensure that an <application-policy> element is defined that requires authentication. Default policies exist for jmx-console and web-console. Example of a satisfactory element:
        <application-policy name="jmx-console">
        	<authentication>
        		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
        			<module-option name="usersProperties">web-console-users.properties</module-option>
        			<module-option name="rolesProperties">web-console-roles.properties</module-option>
        		</login-module>
        	</authentication>
        </application-policy>

        These <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

        • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/Administration-console.war/META-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/Administration-console.war/WEB-INF/*-jboss-beans.xml
        • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml
      2. Next, check the JBOSS_HOME/server/[PROFILE]/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml file to ensure that a security domain requiring authentication has been referenced (example: <security-domain>java:/jaas/web-console</security-domain>). If no <security-domain> element exists, add it as a child of <jboss-web>.
      3. Next, review the JBOSS_HOME/server/[PROFILE]/deploy/Administration-console.war/WEB-INF/web.xml. The <security-constraint> must not contain the default limitations on HTTP verbs. For example: <http-method>GET</http-method> or <http-method>POST</http-method>. The default limitations were shown to allow sidechannel access to malicious users.
      4. Finally, configure the usersProperties and rolesProperties files defined in the application policy to manage users and roles. Example editing JBOSS_HOME/server/[PROFILE]/conf/props/jmx-console-users.properties:
        # A sample users.properties file for use with the UsersRolesLoginModule
        admin=1qaz!QAZ2wsx@WSX
    2. Remove the JBoss Administration Console from deployment.
      1. To remove the Administration Console from deployment, delete the exploded SAR located here: JBOSS_HOME/server/[PROFILE]/deploy/admin-console.war/
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:200801
    File: eap5-oval.xml

    3.4 - The JMXInvokerServlet servlet must be secured against web attacks

    The httpha-invoker.sar found in the deploy directory is a service that provides RMI/HTTP access for EJBs and the JNDI Naming service. By default older JBoss versions ship with a default set of <http-method> that allow attackers to bypass the security policy for JMX Invoker.

    Rationale

    Removing the default <http-method> security constraints allows JBoss to apply configured security settings to all HTTP verbs instead of only those specified. This is a well-known attack vector and failing to remove these constraints may allow attackers to gain authenticated or unauthorized access to the JMXInvokerServlet.

    Additional information

    CVSSv2 Risk Assessment: 8.3 / High - CVSSv2 Formula: (AV:N/AC:M/Au:N/C:P/I:P/A:C)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: AC-3

    DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1

    Validation instructions

    Review JBOSS_HOME/server/[PROFILE]/deploy/httpha-invoker.sar/invoker.war/WEB-INF/web.xml to ensure the following lines have been removed:

    <http-method>GET</http-method>
    <http-method>POST</http-method>
    Remediation instructions

    Within the JBOSS_HOME/server/[PROFILE]/deploy/httpha-invoker.sar/invoker.war/WEB-INF/web.xml file, the following lines must be removed from the web-app/security-constraint/web-resource-collection node:

    <http-method>GET</http-method>
    <http-method>POST</http-method>
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:202901
    File: eap5-oval.xml

    3.5 - The JMXInvokerServlet servlet must be configured to prevent unprivileged access using authentication

    The jmx-invoker-service.xml is a service that exposes the JMX MBeanServer interface via an RMI compatible interface using the RMI/JRMP detached invoker service. This interface must be made unavailable to unprivileged users which can be done by using the org.jboss.jmx.connector.invoker.AuthenticationInterceptor interceptor for performing identification and authentication using JAAS.

    Rationale

    The JMXInvokerServlet should require authentication. Failure to require authentication may allow unauthenticated users to invoke commands on the JBoss server. This access can be leveraged to do many things, including loading additional code from a malicious source.

    Additional information

    CVSSv2 Risk Assessment: 8.3 / High - CVSSv2 Formula: (AV:N/AC:M/Au:N/C:P/I:P/A:C)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: IA-2,IA-3

    DoD 8500.2 Mapping: EBRU-1,IAIA-1,IAIA-2,IAGA-1

    Remediation instructions

    Open JBOSS_HOME/server/[PROFILE]/deploy/jmx-invoker-service.xml, and ensure the <operation> element with child element <name>invoke</name> also contains the following <interceptor>:

    <interceptors>
    	<interceptor code="org.jboss.jmx.connector.invoker.AuthenticationInterceptor" securityDomain="java:/jaas/jmx-console"/>
    </interceptors>

    Next, ensure a valid authentication module is enabled for the security domain. For example, the following elements exist within logon-config.xml and implement authentication using the UsersRolesLoginModule:

    <application-policy name="jmx-console">
    	<authentication>
    		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
    			<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
    			<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
    		</login-module>
    	</authentication>
    </application-policy>

    NOTE: By default, this forces the invoker to authenticate against the jmx-console-users.properties file, located here: JBOSS_HOME/server/PROFILE/conf/prop/
    NOTE: The securityDomain does not have to be called jmx-console.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:203001
    File: eap5-oval.xml

    3.6 - The JMXInvokerServlet servlet must be configured to prevent unprivileged access using authorization

    The jmx-invoker-service.xml is a service that exposes the JMX MBeanServer interface via an RMI compatible interface using the RMI/JRMP detached invoker service. Access control for authenticated users must be configured using the interceptors of either org.jboss.jmx.connector.invoker.RolesAuthorization or org.jboss.jmx.connector.invoker.ExternalizableRolesAuthorization.

    Rationale

    The JMXInvokerServlet should require authorization. Failure to require authorization may allow unauthenticated users to invoke commands on the JBoss server. This access can be leveraged to do many things, including loading additional code from a malicious source.

    Additional information

    CVSSv2 Risk Assessment: 8.3 / High - CVSSv2 Formula: (AV:N/AC:M/Au:N/C:P/I:P/A:C)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: AC-3,AC-6

    DoD 8500.2 Mapping: ECAN-1,ECCD-1,ECCD-2,ECCR-2,ECIC-1,ECAN-1,ECLP-1

    Remediation instructions

    Open JBOSS_HOME/server/[PROFILE]/deploy/jmx-invoker-service.xml, and ensure the <operation> element with child element <name>invoke</name> also contains the following <interceptor>:

    <interceptors>
    	<interceptor code="org.jboss.jmx.connector.invoker.AuthorizationInterceptor" authorizingClass="org.jboss.jmx.connector.invoker.RolesAuthorization"/>
    </interceptors>

    Next, ensure a valid authorization module is enabled for the security domain. For example, the following elements exist within logon-config.xml and implement authorization using the UsersRolesLoginModule:

    <application-policy name="jmx-console">
    	<authentication>
    		<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
    			<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
    			<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
    		</login-module>
    	</authentication>
    </application-policy>

    NOTE: By default, this forces the invoker to authenticate against the jmx-console-users.properties file, located here: JBOSS_HOME/server/PROFILE/conf/prop/
    NOTE: The securityDomain does not have to be called jmx-console.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://oval.mitre.org/XMLSchema/oval-definitions-5
    Name: oval:com.redhat.eap5.scap:def:203101
    File: eap5-oval.xml

    3.7 - Deployed applications should display a system use banner upon access

    Upon accessing the system, a notification banner, consent to use, or policy warning banner should be displayed to alert system users of the system use details. This may include items such as implied consent to monitor, privacy practices, or liability waivers.

    Rationale

    Failing to provide adequate notification of system use details to users accessing the system can create legal troubles in the event of a civil lawsuit or criminal investigation.

    Additional information

    CVSSv2 Risk Assessment: 2.0 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: AC-8

    DoD 8500.2 Mapping: ECWM-1

    Validation instructions

    Access all deployed applications to determine if a warning banner is displayed. A code review showing the functional code will also suffice.

    This warning banner should be presented to the user prior to accessing any deployed application - commercial applications, in-house applications, or applications deployed by JBoss.

    Remediation instructions

    Create a system use notification message for all users who access the system. This can be done in a variety of ways, but a simple JavaScript alert(); containing a warning message will suffice. This warning banner should be presented to the user prior to accessing any deployed application - commercial applications, in-house applications, or applications deployed by JBoss. The contents of the system use notification should be clear, concise, in keeping with the organizational security policy, and should have been reviewed by the organization's legal team.

    On DoD systems, the warning banner should read:

    You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.

    By using this IS (which includes any device attached to this IS), you consent to the following conditions:

    -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.

    -At any time, the USG may inspect and seize data stored on this IS.

    -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.

    -This IS includes security measures (e.g., authentication and access controls) to protect USG interests—not for your personal benefit or privacy.

    -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:300601
    File: eap5-ocil.xml

    3.8 - Deployed applications should display a classification banner when required

    Deployed applications should present classification banners at the header and footer of each page in accordance with the applicable DoD classification guide for the environment (or in accordance with local security policies).

    Rationale

    Prominent classification banners reduce the risk of inadvertent information disclosure or data spillage across different classification levels.

    Additional information

    CVSSv2 Risk Assessment: 2.0 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: AC-8

    DoD 8500.2 Mapping: ECWM-1

    Validation instructions

    Access all deployed applications to determine if classification banners are displayed in accordance with the authoritative classification guide or local security policies. A code review showing the functional code will also suffice.

    These classification banners should be presented to the user on all deployed applications - commercial applications, in-house applications, and even default applications deployed by JBoss. The exact banner requirements such as text, color, and placement will vary dependent on the system classification. See the classification guide or local security manager for further guidance.

    Remediation instructions

    Create system classification banners for all deployed applications. This can be done in a variety of ways, but using a simple linked JavaScript to create header/footer SPAN tags with inline CSS will fit the requirements.

    References

    1. Department of Defense, (1997). Information Security Program (DoD 5200.1-R)

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:300701
    File: eap5-ocil.xml

    3.9 - Password hashing must be enabled within the appropriate login module

    A Security Domain is a set of authentication, authorization, and mapping policies defined in XML and are available to applications at runtime using Java Naming and Directory Interface (JNDI).

    Rationale

    Failure to enable password hashing within a login module can result in plain-text exposure client passwords used for authentication.

    Additional information

    CVSSv2 Risk Assessment: 4.3 / Medium - CVSSv2 Formula: (AV:A/AC:M/Au:N/C:P/I:P/A:N)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-8,SC-9

    DoD 8500.2 Mapping: ECTM-1,ECTM-2,ECCT-1,ECCT-2,ECNK-1,ECNK-2

    Validation instructions

    To determine which <application-policy> are in use by deployed applications, search for <security-domain> elements within the following deployment descriptors:

    JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/jboss-web.xml
    JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/jboss.xml

    An <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

    • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/META-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml

    The element below should be included within a deployed application's <application-policy><login-module>:

    <module-option name="hashUserPassword">true</module-option>
    Remediation instructions

    Add the following child element to any <application-policy><login-module> in use:

    <module-option name="hashUserPassword">true</module-option>

    An <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

    • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/META-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:201501
    File: eap5-ocil.xml

    3.10 - A password hashing algorithm must be defined within the appropriate login module

    A Security Domain is a set of authentication, authorization, and mapping policies defined in XML and are available to applications at runtime using Java Naming and Directory Interface (JNDI). An <application-policy> can be defined in the server profile or in an application deployment descriptor.

    Rationale

    By default, a hashing algorithm is not identified for hashing clear-text passwords. DoD organizations should use the SHA algorithm or higher whenever possible to prevent collision attacks against captured password hashes.

    Additional information

    CVSSv2 Risk Assessment: 4.3 / Medium - CVSSv2 Formula: (AV:A/AC:M/Au:N/C:P/I:P/A:N)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-8,SC-9

    DoD 8500.2 Mapping: ECTM-1,ECTM-2,ECCT-1,ECCT-2,ECNK-1,ECNK-2

    Validation instructions

    To determine which <application-policy> are in use by deployed applications, search for <security-domain> elements within the following deployment descriptors:

    JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/jboss-web.xml
    JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/jboss.xml

    An <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

    • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/META-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml

    The element should be included within a deployed application's <application-policy><login-module>:

    <module-option name="hashAlgorithm">SHA</module-option> 
    Remediation instructions

    Add the following child element to any <application-policy><login-module> in use:

    <module-option name="hashAlgorithm">SHA</module-option>

    An <application-policy> can be defined in the server profile conf directory, in an application deployment descriptor, or directly deployed as an MBean.

    • JBOSS_HOME/server/[PROFILE]/conf/login-config.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/META-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/[APPLICATION]/WEB-INF/*-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/*-jboss-beans.xml
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:201701
    File: eap5-ocil.xml

    3.11 - Enterprise JavaBeans Specification v2.1 must be strictly followed

    The programming restrictions mandated by the Enterprise JavaBeans Specification v2.1 must be strictly followed. For more information, refer to JSR-000153 Enterprise JavaBeans 2.1 specification. (Section 25.2, pages 562-564).

    Rationale

    Deployed applications should follow identified standards, procedures, and best practices. Compliance has many benefits, including helping applications stay interoperable with other programs and containers, implementing strong security and code standards, and improving performance and efficiency.

    Additional information

    CVSSv2 Risk Assessment: 6 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CM-6

    DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

    Validation instructions

    Interview developers or review product documentation to determine if deployed applications were developed in accordance with Enterprise JavaBeans 2.1 specifications. The list below denotes the restrictions identified by the specification.

    • An enterprise bean must not use read/write static fields. Using read-only static fields is allowed. Therefore, it is recommended that all static fields in the enterprise bean class be declared as final.
    • An enterprise bean must not use thread synchronization primitives to synchronize execution of multiple instances.
    • An enterprise bean must not use the AWT functionality to attempt to output information to a display, or to input information from a keyboard.
    • An enterprise bean must not use the java.io package to attempt to access files and directories in the file system.
    • An enterprise bean must not attempt to listen on a socket, accept connections on a socket, or use a socket for multicast.
    • The enterprise bean must not attempt to query a class to obtain information about the declared members that are not otherwise accessible to the enterprise bean because of the security rules of the Java language. The enterprise bean must not attempt to use the Reflection API to access information that the security rules of the Java programming language make unavailable.
    • The enterprise bean must not attempt to create a class loader; obtain the current class loader; set the context class loader; set security manager; create a new security manager; stop the JVM; or change the input, output, and error streams.
    • The enterprise bean must not attempt to set the socket factory used by ServerSocket, Socket, or the stream handler factory used by URL.
    • The enterprise bean must not attempt to manage threads. The enterprise bean must not attempt to start, stop, suspend, or resume a thread, or to change a thread’s priority or name. The enterprise bean must not attempt to manage thread groups.
    • The enterprise bean must not attempt to directly read or write a file descriptor.
    • The enterprise bean must not attempt to obtain the security policy information for a particular code source.
    • The enterprise bean must not attempt to load a native library.
    • The enterprise bean must not attempt to gain access to packages and classes that the usual rules of the Java programming language make unavailable to the enterprise bean.
    • The enterprise bean must not attempt to define a class in a package.
    • The enterprise bean must not attempt to access or modify the security configuration objects (Policy, Security, Provider, Signer, and Identity).
    • The enterprise bean must not attempt to use the subclass and object substitution features of the Java Serialization Protocol.
    • The enterprise bean must not attempt to pass this as an argument or method result. The enterprise bean must pass the result of SessionContext.getEJBObject, Session-Context.getEJBLocalObject, EntityContext.getEJBObject,or Entity-Context.getEJBLocalObject instead.
    Remediation instructions

    Developers must follow Enterprise JavaBeans Specification v2.1.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:206801
    File: eap5-ocil.xml

    Policy

    The rules in this group are used to manage JBoss servers in a secure manner. These rules are policy related.

    4.1 - Ensure adequate physical protections are in place

    The hardware and software executing JBoss Enterprise Application Platform, as well as the software critical to security policy enforcement must be protected from unauthorized modification including unauthorized modifications by potentially hostile outsiders. Reasonable physical security measures to ensure that unauthorized personnel do not have physical access to the hardware running the JBoss Enterprise Application Platform software must be implemented.

    Rationale

    Many software security precautions can easily be bypassed by personnel with physical access to hardware storing data or executing an application.

    Additional information

    CVSSv2 Risk Assessment: 6.9 / High - CVSSv2 Formula: (AV:L/AC:M/Au:N/C:C/I:C/A:C)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: PE-1,PE-2,PE-3,PE-7,PE-18

    DoD 8500.2 Mapping: PEPF-1,PEPF-2,PECF-1,PECF-2,PEPS-1,PEVC-1

    Validation instructions

    Interview JBoss administrators and security personnel. Visually inspect physical security precautions. Review space certifications where appropriate.

    Remediation instructions

    Implement reasonable physical access controls to protect the hardware running and storing information for JBoss Enterprise Application Platform. Typically, these sorts of protections will include locked doors, locked server cabinets, security alarms, cameras, door guards, etc. What is considered 'reasonable' will scale with the importance of the JBoss server and the sensitivity of the information it processes.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:206201
    File: eap5-ocil.xml

    4.2 - Assign a JBoss administrator

    There must be one or more competent individuals who are assigned to manage JBoss Enterprise Application Platform, its environment and the security of the information it contains.

    Rationale

    Incompetent, careless, or negligent JBoss administrators can completely invalidate a secure JBoss configuration and create numberless problems for JBoss.

    Additional information

    CVSSv2 Risk Assessment: 8 / High

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: AT-2,AT-3,AT-4

    DoD 8500.2 Mapping: PRTN-1,PETN-1

    Validation instructions

    Interview JBoss administrators. Review credentials and qualifications. JBoss Administrators should possess a basic level of proficiency with the software.

    Additionally, they must not be carelessly or willfully negligent, or hostile, and must follow the instructions provided by the administrator documentation.

    Remediation instructions

    Ensure a minimum level of competency / expertise has been established for JBoss administrators before granting them access to production systems.

    Ensure documentation and procedures exist (and are followed) for routine administrative tasks.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:206301
    File: eap5-ocil.xml

    4.3 - Document incident response procedures

    Ensure well developed procedures exist for incident handling. Incidents include any events that are anomalous to the environment, which typically include:

    Rationale

    Planning for incidents prior to real-life scenarios increases incident response time and mitigates damages. Failure to adequately prepare, plan, and exercise for these scenarios can result in extensive losses.

    Additional information

    CVSSv2 Risk Assessment: 6 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: IR-1,IR-8

    DoD 8500.2 Mapping: VIIR-1,VIIR-2

    Validation instructions

    Interview JBoss administrators. Review system documentation, incident response documentation, contingency documentation, and any other relevant documentation. Determine if the incident response procedures in place are robust, up-to-date, and clear.

    Remediation instructions

    Draft formal incident response policies and procedures. Utilize national and international standards such as ISO/IEC TR 18044 or NIST Special Publication 800-61.

    References

    1. Mallik, R. (2011, May). Jboss in the Trenches.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:112901
    File: eap5-ocil.xml

    4.4 - Perform periodic incident response exercises

    Production environments should exercise incident response procedures at least annually. Environments requiring higher assurances of security should test incident response procedures more often, possibly quarterly or even monthly. Incident response procedures should cover all anomalous events.

    Rationale

    Planning for incidents and practicing procedures to be followed prior to real-life scenario improves response time and mitigates damages/losses that occur with incidents.

    Additional information

    CVSSv2 Risk Assessment: 4 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: IR-3

    DoD 8500.2 Mapping: VIIR-1,VIIR-2

    Validation instructions

    Interview JBoss administrators. Review system documentation, incident response documentation, and any other relevant documentation. Review lessons-learned, after-action reports, or other historical documentation. Determine if the incident response procedures are meaningfully exercised at least annually.

    Remediation instructions

    Draft a schedule to ensure that documented procedures are exercised at least annually. More frequent exercises may be needed for some environments.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:113301
    File: eap5-ocil.xml

    4.5 - Document disaster recovery procedures

    Robust disaster recovery documentation and procedures should exist. This documentation should include provisions for the JBoss platform, deployed applications, required source code, and supporting applications (such as authentication stores or database servers).

    Rationale

    Planning for disasters and extended outages prior to a real-life scenario helps mitigate losses associated with identified disasters. Failure to adequately prepare, plan, and exercise for these scenarios can result in extensive losses.

    Additional information

    CVSSv2 Risk Assessment: 6 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CP-1,CP-2

    DoD 8500.2 Mapping: CODP-1,CODP-2,CODP-3,COEF-1,COEF-2

    Validation instructions

    Interview JBoss administrators. Review system documentation, disaster recovery documentation, contingency documentation, and any other relevant documentation. Determine if the disaster recovery procedures in place are robust, up-to-date, and feasible.

    Remediation instructions

    Draft formal disaster response policies and procedures. Utilize national and international standards such as ISO 17799 or NIST Special Publication 800-34.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:113201
    File: eap5-ocil.xml

    4.6 - Perform periodic disaster recovery exercises

    Production environments should exercise disaster recovery procedures that include provisions for the JBoss platform, deployed applications, and any required source code at least annually. Environments requiring higher assurances of disaster recovery ability should test procedures more often, possibly quarterly or even monthly.

    Rationale

    Planning for disasters and extended outages prior to a real-life scenario helps mitigate losses associated with identified disasters. Failure to adequately prepare, plan, and exercise for these scenarios can result in extensive losses.

    Additional information

    CVSSv2 Risk Assessment: 4 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CP-4

    DoD 8500.2 Mapping: DCSS-2,COED-1,COED-2

    Validation instructions

    Interview JBoss administrators. Review system documentation, disaster recovery documentation, contingency documentation, and any other relevant documentation. Review lessons-learned, after-action reports, or other historical documentation. Determine if the disaster recovery procedures are meaningfully exercised at least annually.

    Remediation instructions

    Draft a schedule to ensure that documented procedures are exercised at least annually. More frequent exercises may be needed for some environments.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:113401
    File: eap5-ocil.xml

    4.7 - Identify and document application data flows

    It is recommended to identify and document application data flows. This will allow insight into what paths sensitive information takes through the application environment and what data source connections need to be encrypted.

    Rationale

    Failure to document an application's data flows reduces security, increases the chance for architectural and configuration errors, and can impede performance. Many applications use network services that are not immediately apparent.

    Additional information

    CVSSv2 Risk Assessment: 4.3 / Medium - CVSSv2 Formula: (AV:A/AC:M/Au:N/C:P/I:P/A:N)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-8,SC-9,SC-23

    DoD 8500.2 Mapping: ECTM-1,ECTM-2

    Validation instructions

    Examine application documentation, system architecture documentation, and any other pertinent diagrams. Interview JBoss administrators and application developers. Application data flows should be identified for all deployed applications, including the following information:

    • Relevant protocol information (for instance, TCP traffic should record port information)
    • Traffic destination
    • Purpose
    • Sensitivity of traffic
    • Applicable security information, such as encryption types, specific vulnerabilities in transport or application protocols, etc.
    Remediation instructions

    Work with JBoss administrators and application developers to document data flows for deployed applications. Information documented should include:

    • Relevant protocol information (for instance, TCP traffic should record port information)
    • Traffic destination
    • Purpose
    • Sensitivity of traffic
    • Applicable security information, such as encryption types, specific vulnerabilities in transport or application protocols, etc.
    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:113501
    File: eap5-ocil.xml

    4.8 - Java permissions for deployed applications should be documented and reviewed prior to deployment

    Java permissions for applications should be documented and carefully reviewed prior to deployment. Developers and administrators should strive to balance application permissions and application functionality.

    Rationale

    Java permissions for deployed applications should be carefully restricted to enforce the least privilege principle. Careful documentation, along with a thorough review will help prevent needlessly insecure permission assignments for applications. An overabundance of Java permissions can allow applications to circumvent one of Java's strongest security features - the Java Security Manager sandbox.

    Additional information

    CVSSv2 Risk Assessment: 5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-1

    Validation instructions

    Review documentation for an application's permission requirements. Review policy files to determine if applications are in compliance with their documentation. In a default JBoss deployment the following policy file will be utilized by JSM (review run.conf or run.conf.bat for more):

    • java.home/lib/security/java.security

    Additional policy files can be specified either at runtime (through run.conf or run.conf.bat) or by chaining existing policy files (policy.url.x=file:/user/application/java.policy)

    Remediation instructions

    The JBoss administrator must assign the most restrictive permissions possible (in accordance with the least privilege principle) for applications. This should be done in cooperation with application developers or application documentation.

    Further, documentation should exist for all applications that have been granted specific permissions.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:115901
    File: eap5-ocil.xml

    4.9 - Regular backups should be performed

    JBoss applications and configuration files should be backed up at least weekly, possibly more if needed by the environment.

    Rationale

    Failure to regularly backup JBoss configuration files and deployed applications can result in extensive downtime or information losses in the event of a disaster or other system outage.

    Additional information

    CVSSv2 Risk Assessment: 6 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CP-9

    DoD 8500.2 Mapping: DCSW-1,COBR-1,CODB-1,CODB-2,CODB-3,COSW-1,DCWH-1

    Validation instructions

    Interview JBoss administrators. Review backup policies, procedures, and other applicable documentation. Review backup media and validate presence of JBoss configuration files and deployed applications. Determine if JBoss configuration files and deployed applications are backed up at least once a week - or as specified by organization documentation.

    Remediation instructions

    Ensure backups are conducted regularly (at least once a week) in accordance with the organization backup-policy. All JBoss configuration files and deployed applications should be backed up.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:114601
    File: eap5-ocil.xml

    4.10 - Auditing policy should exist

    In order to effectively audit and review system logs, an audit policy should be written to identify data and trends of interest.

    Rationale

    Without a comprehensive audit policy and review procedures, organizations risk missing critical events or event trends within their environment. These missed events may indicate system anomalies ranging from malicious attacks, system instabilities, system misuse, etc.

    Additional information

    CVSSv2 Risk Assessment: 4 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AU-1,AU-2,AU-3,AU-5

    DoD 8500.2 Mapping: ECAR-1,ECAR-2,ECAR-3,ECLC-1,ECND-2

    Validation instructions

    Interview JBoss administrators. Review any available auditing documentation. Determine if the auditing policy is comprehensive and the auditing procedures are usable and up-to-date.

    Remediation instructions

    JBoss system administrators should work security team members to draft a comprehensive audit policy. Along with this auditing policy, a set of written procedures should be created that details what events or trends must be monitored, reactions, etc.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:115301
    File: eap5-ocil.xml

    4.11 - Access control policy and procedures

    JBoss administrators must have access to guidance regarding account creation, permissions assignments, role assignments, etc.

    Rationale

    A consistent, cohesive access control policy is impossible to attain without a well-documented access control policy and related procedures. Failure to do so typically results in over-assignment of access permissions for users and applications, stale access for users and applications, and other access control misconfigurations that reduce the effectiveness of the security policy.

    Additional information

    CVSSv2 Risk Assessment: 5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AC-1

    Validation instructions

    Interview JBoss administrators. Review all relevant documentation. Determine if an access control policy exists that addresses purpose, scope, roles, responsibilities, management commitment, coordination among organizational entities, and compliance. There should be an associated set of procedures with implementation details for specific tasks such as assigning user roles, creating user accounts, or assigning Java Security Manager permissions.

    Remediation instructions

    Draft an access control policy to address purpose, scope, roles, responsibilities, management commitment, coordination among organizational entities, and compliance. There should be an associated set of procedures with implementation details for specific tasks such as assigning user roles, creating user accounts, or assigning Java Security Manager permissions.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:116401
    File: eap5-ocil.xml

    4.12 - Define an appropriate minimum and maximum password length requirement

    Organizations should create an authenticator management policy that defines minimum and maximum password sizes for user accounts accessing JBoss and its deployed applications.

    Rationale

    In brute force scenarios, passwords of extended lengths increase password security and the length of time required to decrypt the password.

    However, there are risks associated with requiring passwords of great lengths, as users may take steps to circumvent policy; such as using repetitive passwords, writing password reminders, or writing down their passwords.

    Additional information

    CVSSv2 Risk Assessment: 5.0 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Work with JBoss administrators and security team members to identify and review relevant documentation. Minimum and maximum password lengths should be defined.

    Remediation instructions

    JBoss system administrators should work security team members to draft a comprehensive password policy. Minimum and maximum password lengths should be defined. Further, accounts may be categorized in order to define varying length requirements for particular types of accounts.

    For example:

    • User accounts shall require password lengths of between 8 and 24 characters
    • Administrator shall require password lengths of 24 characters
    • Web service accounts shall require password lengths of 24 characters

    Password storage software and password generation software are recommended for organizations to assist in managing a secure password policy. NIST Special Publication 800-118 (Draft) and NIST Special Publication 800-53 both contain extensive guidance on creating a password policy document.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html
    2. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Guide to Enterprise Password Management (Draft) (800-118). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:300301
    File: eap5-ocil.xml

    4.13 - Define an appropriate minimum password complexity requirement

    Organizations should create an authenticator management policy that defines a minimum level of complexity for user accounts accessing JBoss and its deployed applications. These requirements should also restrict passwords from containing dictionary words and reusing previous passwords.

    Rationale

    Complex passwords increase password security and the length of time required to decrypt the password. Additionally, complex passwords are less likely to be found in password dictionaries.

    However, there are risks associated with requiring overly complex passwords, as users may take steps to circumvent policy; such as using repetitive passwords, writing password reminders, or writing down their passwords.

    Additional information

    CVSSv2 Risk Assessment: 5.0 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Work with JBoss administrators and security team members to identify and review relevant documentation. Password complexity requirements should be defined. The policy should not allow passwords to be reused or contain dictionary words.

    Remediation instructions

    JBoss system administrators should work security team members to draft a comprehensive password policy. Password complexity requirements should be defined. The policy should not allow passwords to be reused or contain dictionary words. Further, accounts may be categorized in order to define varying complexity requirements for particular types of accounts.

    For example:

    • User accounts shall require passwords containing at least 1 lowercase alphanumeric character, 1 uppercase alphanumeric character, and 1 number
    • Administrator accounts shall require passwords containing at least 2 lowercase alphanumeric characters, 2 uppercase alphanumeric characters, 2 numbers, and 2 special characters. Special characters include: !@#$%^&*()
    • Web service accounts shall require passwords containing at least 3 lowercase alphanumeric characters, 3 uppercase alphanumeric characters, 3 numbers, and 3 special characters. Special characters include: !@#$%^&*()

    Password storage software and password generation software are recommended for organizations to assist in managing a secure password policy. NIST Special Publication 800-118 (Draft) and NIST Special Publication 800-53 both contain extensive guidance on creating a password policy document.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html
    2. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Guide to Enterprise Password Management (Draft) (800-118). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:300401
    File: eap5-ocil.xml

    4.14 - Define an appropriate minimum password expiration interval

    Organizations should create an authenticator management policy that defines a maximum password age for user accounts accessing JBoss and its deployed applications.

    Rationale

    In combination with password length and complexity, regularly changing passwords can defeat many attacks. If a password or password hash is intercepted by a malicious party, changing the password can remove access or render invalid a cracking attempt on the hash.

    However, there are risks associated with frequently changing passwords. Users may take steps to circumvent policy such as using repetitive passwords or using password derivatives. Additionally, changing passwords for system or application accounts introduces an element of configuration risk. Poorly coordinated or documented changes can result in system outages or create other problems.

    Additional information

    CVSSv2 Risk Assessment: 5.0 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: IA-5

    DoD 8500.2 Mapping: IAIA-1,IAIA-2,IATS-1,IATS-2

    Validation instructions

    Work with JBoss administrators and security team members to identify and review relevant documentation. Password complexity requirements should be defined. The policy should not allow passwords to be reused or contain dictionary words.

    Remediation instructions

    JBoss system administrators should work security team members to draft a comprehensive password policy. Password expiration requirements should be defined. Further, accounts may be categorized in order to define varying length requirements for particular types of accounts.

    For example:

    • Passwords for user accounts must expire every 90 days
    • Passwords for administrator accounts must expire every 30 days
    • Passwords for web service accounts must expire every 180 days

    Password storage software and password generation software are recommended for organizations to assist in managing a secure password policy. NIST Special Publication 800-118 (Draft) and NIST Special Publication 800-53 both contain extensive guidance on creating a password policy document.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html
    2. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Guide to Enterprise Password Management (Draft) (800-118). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:300501
    File: eap5-ocil.xml

    Architecture

    The rules in this group are used to manage JBoss servers in a secure manner. These rules are related to deploying a secure architecture.

    5.1 - Production JBoss EAP installations should reside on a dedicated platform

    Production JBoss servers in production environments should be hosted on dedicated operating systems and not sharing a host operating system with other service applications.

    Rationale

    Co-locating JBoss EAP with other critical infrastructure components in an organization can have multiple negative impacts on an organization's security posture. Applications sharing host operating systems cumulatively increase the surface area of attack for the other (including indirectly), increase the likelihood of resource contention, and increase the severity of any problems that do occur on the platform at a business process level.

    Additional information

    CVSSv2 Risk Assessment: 5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CM-6

    DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

    Validation instructions

    Interview JBoss administrators, review system documentation and architecture diagrams. Review applications hosted by the same operating system as JBoss. Determine if JBoss Enterprise Application Platform installations are hosted on dedicated operating systems. JBoss installations should not be hosted by the same operating system that may be hosting other organization resources such as name resolution servers, directory servers, or database servers.

    Remediation instructions

    Installations of JBoss should reside on a dedicated operating system. If not, ensure the configuration, rationale, and risk assessment is well documented.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:400101
    File: eap5-ocil.xml

    5.2 - Avoid multiple JBoss instances per server

    Multiple instances of JBoss deployed onto a single server should be avoided whenever possible to reduce environmental complexity and administrative burdens. However, occasionally circumstances require that multiple JBoss instances are deployed to the same server. In this scenario, the configurations and justifications should be documented along with the rest of the system's documentation.

    Rationale

    Multiple JBoss instances on a single server may occasionally become necessary due to resource or design constraints. However, this practice increases the complexity and administrative burden for the application servers - potentially leading to unforeseen problems and increasing chance of misconfigurations.

    Additional information

    CVSSv2 Risk Assessment: 5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CM-6

    DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

    Validation instructions

    Interview JBoss administrators, review system documentation and architecture diagrams. Determine if JBoss Enterprise Application Platform installations are limited to one per server. If they are not limited to one per server, ensure the configuration, rationale, and risk assessment is well documented.

    Remediation instructions

    Limit JBoss Enterprise Applications Platform instances to one per server if possible. If not, ensure the configuration, rationale, and risk assessment is well documented.

    References

    1. Mallik, R. (2011, May). Jboss in the Trenches.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:112401
    File: eap5-ocil.xml

    5.3 - Bind multiple JBoss instances per server to different IPs

    If multiple JBoss instances are installed, the servers should be set to bind to different IP addresses on the server rather than changing the default port configuration.

    Rationale

    Binding to different IP addresses eases administrative and maintenance burdens by reducing the number of variables between instances. In turn, this increases reliability and reduces the chances for configuration errors.

    Additional information

    CVSSv2 Risk Assessment: 3.5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CM-6

    DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

    Validation instructions

    Interview JBoss administrators and review system documentation. Examine running JBoss servers and bound ports using commands like netstat. If multiple JBoss instances are deployed to a single server, it is a best practice to bind each instance to its own IP address.

    Remediation instructions

    If multiple JBoss Enterprise Application Platforms are deployed to a single server, the binding IP address can be specified at server startup using the -b argument to specify the binding IP. Example:

    run.sh -c public -b 10.10.10.75
    References

    1. Mallik, R. (2011, May). Jboss in the Trenches.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:113101
    File: eap5-ocil.xml

    5.4 - Packet filtering should be emplaced around JBoss Enterprise Application Platform

    JBoss Enterprise Application Platform must operate in a network segment that is logically separated from any other network segment using a packet filtering mechanism. This packet filter must only allow incoming communication that is TCP with destination ports of 8080 or 8443. This packet filter can be resident on the host operating system or a completely separate system entirely. When JBoss Enterprise Application Platforms are clustered, all outgoing communication from the JBoss Enterprise Application Platform instance must be allowed.

    Rationale

    Packet filtering is a basic security technique for securing TCP/IP and UDP/IP communications.

    Additional information

    CVSSv2 Risk Assessment: 9.3 / High - CVSSv2 Formula: (AV:N/AC:M/Au:N/C:C/I:C/A:C)

    DoD Risk Category: CAT I

    NIST 800.53 Mapping: SC-7

    DoD 8500.2 Mapping: DCSS-2,EBBD-1,EBBD-2,EBBD-3,EBPW-1,ECID-1

    Validation instructions

    Interview JBoss administrators and architects. Review system network diagrams. Work with JBoss administrators to review ipfilter rulesets to ensure the TCP/IP and UDP/IP packet filters are protecting the JBoss Enterprise Platform. The packet filters must only allow incoming communication that is TCP with destination ports of 8080 or 8443. This packet filter can be resident on the host operating system or a completely separate system entirely.

    When JBoss Enterprise Application Platforms are clustered, all outgoing communication from the JBoss Enterprise Application Platform instance must be allowed.

    Remediation instructions

    Install and/or configure a TCP/IP and UDP/IP packet filtering device to logically separate the JBoss Enterprise Application Server from other networks.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:206401
    File: eap5-ocil.xml

    5.5 - Do not transmit sensitive information over unsecured HTTP connections

    Sensitive information should not be transferred over insecure means. This includes plaintext credential information, application information deemed sensitive, or other information that may be valuable to a malicious entity. The <auth-method> child element specifies the authentication mechanism for the web application. Using the BASIC authentication method causes the exchange of credentials in clear-text.

    Rationale

    Sensitive information being transmitted without strong encryption creates possible exposure for the deployed application and users connecting to it. Plain text transmission of authentication credentials over insecure channels (such as HTTP) exposes credential information to any entity capable of intercepting packets from the connection.

    Additional information

    CVSSv2 Risk Assessment: 4.3 / Medium - CVSSv2 Formula: (AV:A/AC:M/Au:N/C:P/I:P/A:N)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SC-8

    DoD 8500.2 Mapping: ECTM-1,ECTM-2

    Validation instructions

    Interview JBoss administrators and application developers. Review application documentation. Descriptive information for sensitive data used by the application should be readily available. Ensure this information is secured with SSL 3.x or TLS. There are multiple ways to secure the connections - the most common being configuration of the Apache Tomcat container (JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml).

    Real-world tests using a browser, wget, and a packet capture utility may also assist in validating the level of encryption for sensitive information.

    Remediation instructions

    Applications passing sensitive data should use a secure channel such as SSL or TLS. There are several ways to secure traffic with SSL, the method below uses the underlying Apache Tomcat technology to handle the connection.

    To setup SSL or TLS, proceed as follows:

    • Ensure a valid keystore is being loaded by JSM
    • Load the JBoss server's public/private key pair into the keystore
    • Add a secure connector to JBOSS_HOME/server/[PROFILE]/deploy/jbossweb.sar/server.xml
      <Service name="jboss.web">
      	<Connector protocol="HTTP/1.1" SSLEnabled="true"
      		port="8443" address="${jboss.bind.address}"
      		scheme="https" secure="true" clientAuth="false"
      		keystoreFile="${jboss.server.home.dir}/conf/bp.keystore"
      		keystorePass="KEYSTORE_PASSWORD" sslProtocol = "TLS" />
      </Service>
    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html
    2. JBoss Enterprise Application Platform 5 Security Guide, 2011

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:109401
    File: eap5-ocil.xml

    Policy

    The rules in this group are used to manage JBoss servers in a secure manner. These rules are related to general best practices.

    6.1 - Use a version control repository

    All configuration files (such a data sources, custom connectors, etc) and any scripts used for modifications and deployments should be stored in the version control repository. Typical repositories include applications such as SVN or Git. Additionally, a hash-validated 'Gold' version of the JBoss installation package should also be stored in the version control system.

    Rationale

    Configuration management is an essential part long-term success for any software application - especially for complex software or collaborative environments. Using a versioning system allows for tighter control and accountability of application server changes.

    Maintaining a 'Gold' version of JBoss is useful for environments that may need to periodically or dynamically deploy JBoss instances. This can also be useful for static environments that simply desire to have a known baseline to deploy from.

    Additional information

    CVSSv2 Risk Assessment: 5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CM-3,CM-5

    DoD 8500.2 Mapping: DCCB-1,DCCB-2,ECPC-1,ECPC-2,DCSL-1,ECSD-1,ECSD-2

    Validation instructions

    Interview JBoss administrators and/or platform administrators. Review evidence of version control system and its use.

    Remediation instructions

    Initiate a version control repository such as Git or SVN for JBoss maintenance and deployments. This will likely be a multi-stage process requiring planning and implementation.

    References

    1. Mallik, R. (2011, May). Jboss in the Trenches.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:110401
    File: eap5-ocil.xml

    6.2 - Automate JBoss Deployments

    Scripts or other software tools should be used to automatically configure and deploy JBoss applications in environments.

    Rationale

    As much as possible new application deployments to JBoss should be scripted. This increases standardization in deployments and reduces the possibility of errors and misconfigurations. Smaller environments may see less benefit from implementing an automated process.

    Additional information

    CVSSv2 Risk Assessment: 5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CM-6

    DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

    Validation instructions

    Interview JBoss administrators and review procedural documentation. Determine if applications are deployed to JBoss Enterprise Application Platforms in an automated manner. The level of automation should be assessed vs. the costs for implementation.

    Remediation instructions

    Utilize custom scripts and/or software to automate application deployments to JBoss. Popular applications in this field include Cargo, ANT, JBoss Tools, and Hudson. Software in this category is quickly evolving and adding new features.

    References

    1. Mallik, R. (2011, May). Jboss in the Trenches.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:112501
    File: eap5-ocil.xml

    6.3 - Application performance testing

    Ensure routine performance testing is completed before applications are deployed to production. Establish and document performance profiles.

    Rationale

    Without adequate performance testing, production applications may fail to perform to expectations - resulting in a denial of service.

    Additional information

    CVSSv2 Risk Assessment: 3.5 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SA-3

    DoD 8500.2 Mapping: DCSP-1

    Validation instructions

    Interview JBoss system administrators and application developers. Review product documentation related to performance testing and load limits. Review policy and procedural documents related to performance testing. Production environments should have documented and established performance profiles. Applications should be performance tested prior to deployment to production environments.

    Remediation instructions

    Ensure routine performance testing is completed before applications are deployed to production. Establish and document performance profiles. Attempt to test against anticipated peak demands as well as load averages. Individual tests will vary, but commonly consist of testing message throughputs (various message types), application inputs, connections open/closed/expired, data transactions completed, method calls, objects persisted, etc.

    References

    1. Mallik, R. (2011, May). Jboss in the Trenches.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:112701
    File: eap5-ocil.xml

    6.4 - Monitor JBoss servers

    JBoss Enterprise Application Platform servers in production environments should be monitored real-time. Information monitored and alarm thresholds will vary. Common monitoring tools include:

    Rationale

    Production environments should be carefully monitored to ensure the any problems on the server are detected as quickly as possible. Identifying and isolating a problem when it is small may prevent downtime or other problems on the network.

    Additional information

    CVSSv2 Risk Assessment: 6 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: AU-3,AU-6,AU-7,AU-12

    DoD 8500.2 Mapping: ECAR-1,ECAR-2,ECAR-3,ECLC-1,ECAT-1,ECAT-2,ECRG-1

    Validation instructions

    Interview JBoss system administrators. Review server documentation and system architecture diagrams. Review documents related to server monitoring. Production environments should have a real-time monitoring solution in place.

    Remediation instructions

    Research and implement an appropriate monitoring solution for the production environment. Different environments will have different requirements owing to sensitivity to downtime, regulatory requirements, service agreements, and other factors. Be careful when implementing a monitoring solution to minimize performance impact on the servers where possible. Common monitoring tools include:

    • JBoss Operations Network (JON)
    • Foglight
    • HP Openview
    • Nagios

    Common metrics include:

    • Active threads on the application server
    • Threads on the front-end http/ajp web connector
    • Database connection pools
    • JVM metrics such as memory usage and GCs
    • Typical host platform metrics such as available hard drive space, CPU usage, etc.
    References

    1. Mallik, R. (2011, May). Jboss in the Trenches.

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:112801
    File: eap5-ocil.xml

    6.5 - Ensure all downloaded software is authentic

    Software and packages should be downloaded from redhat.com, and hash validated.

    Rationale

    Without validating downloaded files are authentic, malicious users may compromise software before it has even been installed. Attackers may redirect traffic to alternate download locations and attempt to trick administrators into downloading modified software.

    Additional information

    CVSSv2 Risk Assessment: 6.2 / Medium - CVSSv2 Formula: (AV:L/AC:H/Au:N/C:C/I:C/A:C)

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: CM-6

    DoD 8500.2 Mapping: DCCS-1,DCCS-2,DCCT-1,ECSC-1,DCSS-1

    Validation instructions

    Interview JBoss administrators. JBoss administrators must demonstrate proficiency in securely acquiring JBoss Enterprise Application Platform installation materials.

    Remediation instructions

    When downloading software, first ensure it is coming from the site you expect it to. For instance, when downloading JBoss Enterprise Application Platform from Red Hat, JBoss administrators should review the X.509 certificate presented by the remote server to ensure the authenticity of the site.

    Next, JBoss administrators should hash validate files after completed downloads. Hash generation will vary depending on operating system. These hashes should be compared to one of the hashes available on the Red Hat website.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:205701
    File: eap5-ocil.xml

    6.6 - Ensure JBoss is configured in accordance with Common Criteria configuration guides

    JBoss deployments in government and DoD organizations require JBoss be deployed in a Common Criteria certified configuration. The Common Criteria configuration is a list of technical configuration items, policy requirements, and other configurations required to certify a JBoss installation at the EAL4+ protection level. Red Hat maintains configuration guidance available online to assist administrators during the installation and configuration of JBoss (http://docs.redhat.com/docs/en-US/index.html).

    Rationale

    By deviating from a Common Criteria configuration, JBoss will no longer be considered certified against any protection level - this may have legislative or regulatory consequences that must be identified and risk assessed dependent on your environment.

    Additional information

    CVSSv2 Risk Assessment: 6.2 / Medium

    DoD Risk Category: CAT II

    NIST 800.53 Mapping: SA-4

    DoD 8500.2 Mapping: DCAS-1,DCSR-1,DCSR-2,DCSR-3

    Validation instructions

    Interview JBoss administrators and review on-site documentation. Review the JBoss Common Criteria Configuration Guide (available here from Red Hat's website) to ensure JBoss has been installed and configured in accordance with the Common Criteria requirements.

    Remediation instructions

    Configure JBoss in its Common Criteria certified configuration. The configuration guide can be found here on Red Hat's website.

    References

    1. U.S. Department of Commerce, National Institute of Standards and Technology. (2009). Recommended security controls for federal information systems and organizations (800-53). Retrieved from website: http://csrc.nist.gov/publications/PubsSPs.html

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:401001
    File: eap5-ocil.xml

    Trimming

    The rules in this group concern trimming JBoss EAP.

    7.1 - Unused features should be disabled or deleted: Java Universal Description, Discovery, Integration (JUDDI)

    Features and services not in use should be removed. JUDDI is an open source Java implementation of the Universal Description, Discovery, and Integration (UDDI v3) specification for (Web) Services.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following directory:

    • JBOSS_HOME/server/[PROFILE]/deploy/juddi-service.sar
    Remediation instructions
    In order to completely disable the this component, take the following actions:

    Delete this directory:

    • JBOSS_HOME/server/[PROFILE]/deploy/juddi-service.sar
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf
    3. JUDDI; An Apache Project. (February 6, 2012).

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:110601
    File: eap5-ocil.xml

    7.2 - Unused features should be disabled or deleted: Enterprise Java Beans (EJB) Services

    Features and services not in use should be removed.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following directory:

    • JBOSS_HOME/server/[PROFILE]/deploy/ejb3-connectors-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb3-container-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb3-interceptors-aop.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb3-timerservice-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/profile-service-secured.jar
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb2-container-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb2-timer-service.xml
    • JBOSS_HOME/server/[PROFILE]/deployers/jboss-ejb3-endpoint-deployer.jar
    • JBOSS_HOME/server/[PROFILE]/deployers/ejb3-deployers-jboss-beans.xml
    Remediation instructions

    In order to completely disable the this component, Delete the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/ejb3-connectors-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb3-container-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb3-interceptors-aop.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb3-timerservice-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/profile-service-secured.jar
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb2-container-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/ejb2-timer-service.xml
    • JBOSS_HOME/server/[PROFILE]/deployers/jboss-ejb3-endpoint-deployer.jar
    • JBOSS_HOME/server/[PROFILE]/deployers/ejb3-deployers-jboss-beans.xml
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:110701
    File: eap5-ocil.xml

    7.3 - Unused features should be disabled or deleted: Universal Unique Identifier (UUID) Generator

    Features and services not in use should be removed. UUID Generator allows for the generation of unique identifiers for hosted Java applications.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following directory:

    • JBOSS_HOME/server/[PROFILE]/deploy/uuid-key-generator.sar
    Remediation instructions

    In order to completely disable the this component, Delete this directory:

    • JBOSS_HOME/server/[PROFILE]/deploy/uuid-key-generator.sar
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:110801
    File: eap5-ocil.xml

    7.4 - Unused features should be disabled or deleted: Java Message Service (JMS)

    Features and services not in use should be removed. Java Message Service is a component of Java Enterprise Edition that enables application to send and receive messages. It is a cornerstone service that many distributed applications are built on.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/conf/props/messaging-roles.properties
    • JBOSS_HOME/server/[PROFILE]/conf/props/messaging-users.properties
    • JBOSS_HOME/server/[PROFILE]/deploy/messaging
    • JBOSS_HOME/server/[PROFILE]/deploy/jms-ra.rar
    • JBOSS_HOME/server/[PROFILE]/deploy/quartz-ra.rar
    • JBOSS_HOME/server/[PROFILE]/deployers/messaging-definitions-jboss-beans.xml

    Validate changes to the following files:

    • Ensure all elements with references to JMS have been removed from: JBOSS_HOME/server/[PROFILE]/conf/standardjboss.xml
    • Ensure the following <property> element has been removed from JBOSS_HOME/server/[PROFILE]/conf/jbossts-properties.xml
      <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1" value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
    Remediation instructions

    In order to completely disable this component, take the following actions:

    Delete these files and directories:

    • JBOSS_HOME/server/[PROFILE]/conf/props/messaging-roles.properties
    • JBOSS_HOME/server/[PROFILE]/conf/props/messaging-users.properties
    • JBOSS_HOME/server/[PROFILE]/deploy/messaging
    • JBOSS_HOME/server/[PROFILE]/deploy/jms-ra.rar
    • JBOSS_HOME/server/[PROFILE]/deploy/quartz-ra.rar
    • JBOSS_HOME/server/[PROFILE]/deployers/messaging-definitions-jboss-beans.xml

    Make the identified changes to the following files:

    • Remove all elements with references to JMS from: JBOSS_HOME/server/[PROFILE]/conf/standardjboss.xml
    • Remove the following <property> element from JBOSS_HOME/server/[PROFILE]/conf/jbossts-properties.xml
      <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1" value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:110901
    File: eap5-ocil.xml

    7.5 - Unused features should be disabled or deleted: JBoss Mail

    Features and services not in use should be removed. JBoss Mail is a deployed package for Java Mail - a set of Java API's implementing an email server supporting the SMTP, POP3, and IMAP protocols.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/mail-ra.rar
    • JBOSS_HOME/server/[PROFILE]/deploy/mail-service.xml
    Remediation instructions

    In order to completely disable the this component, Delete the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/mail-ra.rar
    • JBOSS_HOME/server/[PROFILE]/deploy/mail-service.xml
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111001
    File: eap5-ocil.xml

    7.6 - Unused features should be disabled or deleted: JBoss Scheduling

    Features and services not in use should be removed. JBoss Scheduling implements a JBoss service that supports scheduling and running jobs for deployed Java applications.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/schedule-manager-service.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/scheduler-service.xml
    Remediation instructions

    In order to completely disable the this component, Delete the following files:

    • JBOSS_HOME/server/[PROFILE]/deploy/schedule-manager-service.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/scheduler-service.xml
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111101
    File: eap5-ocil.xml

    7.7 - Unused features should be disabled or deleted: Hypersonic SQL Database (HSQLDB)

    Features and services not in use should be removed. HSQLDB is the default datasource configured to run with JBoss Enterprise Application Platform out of the box. It is not recommended for production usage.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/hsqldb-ds.xml
    • JBOSS_HOME/common/lib/hsqldb.jar
    • JBOSS_HOME/common/lib/hsqldb-plugin.jar
    • JBOSS_HOME/server/[PROFILE]/deploy/messaging/hsqldb-persistence-service.xml
    • JBOSS_HOME/server/[PROFILE]/data/hypersonic/
    Remediation instructions

    In order to completely disable the this component, Delete the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/hsqldb-ds.xml
    • JBOSS_HOME/common/lib/hsqldb.jar
    • JBOSS_HOME/common/lib/hsqldb-plugin.jar
    • JBOSS_HOME/server/[PROFILE]/deploy/messaging/hsqldb-persistence-service.xml
    • JBOSS_HOME/server/[PROFILE]/data/hypersonic/
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111201
    File: eap5-ocil.xml

    7.8 - Unused features should be disabled or deleted: BeanShell (BSH) Deployer

    Features and services not in use should be removed. The BSH Deployer allows for the hot deployment of one use execution scripts or services.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deployers/bsh.deployer
    Remediation instructions

    In order to completely disable the this component, Delete the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deployers/bsh.deployer
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111301
    File: eap5-ocil.xml

    7.9 - Unused features should be disabled or deleted: JBossWS

    Features and services not in use should be removed. JBossWS is a web service framework for use with the JBoss Enterprise Application Platform.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/conf/jax-ws-catalog.xml
    • JBOSS_HOME/server/[PROFILE]/conf/props/jbossws-roles.properties
    • JBOSS_HOME/server/[PROFILE]/conf/props/jbossws-users.properties
    • JBOSS_HOME/server/[PROFILE]/deploy/jbossws.sar
    • JBOSS_HOME/server/[PROFILE]/deploy/jbossws-console.war
    • JBOSS_HOME/server/[PROFILE]/deployers/jbossws.deployer
    Remediation instructions

    In order to completely disable the this component, Delete the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/conf/jax-ws-catalog.xml
    • JBOSS_HOME/server/[PROFILE]/conf/props/jbossws-roles.properties
    • JBOSS_HOME/server/[PROFILE]/conf/props/jbossws-users.properties
    • JBOSS_HOME/server/[PROFILE]/deploy/jbossws.sar
    • JBOSS_HOME/server/[PROFILE]/deploy/jbossws-console.war
    • JBOSS_HOME/server/[PROFILE]/deployers/jbossws.deployer
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111401
    File: eap5-ocil.xml

    7.10 - Unused features should be disabled or deleted: Seam

    Features and services not in use should be removed. Seam is an application framework for Java designed to reduce application complexity.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deployers/seam.deployer
    • JBOSS_HOME/server/[PROFILE]/deployers/webbeans.deployer
    Remediation instructions

    In order to completely disable the this component, Delete the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deployers/seam.deployer
    • JBOSS_HOME/server/[PROFILE]/deployers/webbeans.deployer
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111501
    File: eap5-ocil.xml

    7.11 - Unused features should be disabled or deleted: JBoss Internet Inter-ORB Protocol (IIOP)

    Features and services not in use should be removed. JBoss IIOP implements a standards compliant CORBA server for JBoss.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/conf/jacorb.properties
    • JBOSS_HOME/server/[PROFILE]/deploy/iiop-service.xml
    • JBOSS_HOME/server/[PROFILE]/deployers/ejb3.deployer/META-INF/ejb3-iiop-deployers-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/lib/jacorb.jar

    Validate changes to the following files:

    In JBOSS_HOME/server/[PROFILE]/conf/jndi.properties, Replace:

    java.naming.factory.initial=org.jboss.iiop.naming.ORBInitialContextFactory

    with

    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    Remediation instructions

    In order to completely disable this component, Delete these files and directories:

    • JBOSS_HOME/server/[PROFILE]/conf/jacorb.properties
    • JBOSS_HOME/server/[PROFILE]/deploy/iiop-service.xml
    • JBOSS_HOME/server/[PROFILE]/deployers/ejb3.deployer/META-INF/ejb3-iiop-deployers-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/lib/jacorb.jar

    Make the identified changes to the following files:

    In JBOSS_HOME/server/[PROFILE]/conf/jndi.properties, Replace:

    java.naming.factory.initial=org.jboss.iiop.naming.ORBInitialContextFactory

    with

    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

    In JBOSS_HOME/server/[PROFILE]/conf/standardjboss.xml, Delete text:

    invoker-proxy-binding iiop
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111601
    File: eap5-ocil.xml

    7.12 - Unused features should be disabled or deleted: Miscellaneous

    Miscellaneous features and services not in use should be removed.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]deployers/xnio.deployer
    • JBOSS_HOME/server/[PROFILE]deployers/hibernate-deployer-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/jboss-xa-jdbc.rar
    • JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war
    • JBOSS_HOME/server/[PROFILE]/deploy/profileservice-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/sqlexception-service.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/xnio-provider.jar
    • JBOSS_HOME/server/[PROFILE]/deploy/management/
    Remediation instructions

    In order to completely disable these components, Delete these files and directories:

    • JBOSS_HOME/server/[PROFILE]deployers/xnio.deployer
    • JBOSS_HOME/server/[PROFILE]deployers/hibernate-deployer-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/jboss-xa-jdbc.rar
    • JBOSS_HOME/server/[PROFILE]/deploy/jmx-console.war
    • JBOSS_HOME/server/[PROFILE]/deploy/profileservice-jboss-beans.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/sqlexception-service.xml
    • JBOSS_HOME/server/[PROFILE]/deploy/xnio-provider.jar
    • JBOSS_HOME/server/[PROFILE]/deploy/management/
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111701
    File: eap5-ocil.xml

    7.13 - Unused features should be disabled or deleted: HTTP Invokers

    Features and services not in use should be removed. HTTP invocation allows the JBoss server to receive and act on remote instructions. This can be useful for administrators - especially in large or distributed environments.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    For HTTP Invoker for JNDI, EJB and JMX:

    • JBOSS_HOME/server/[PROFILE]/deploy/http-invoker.sar
    • JBOSS_HOME/server/[PROFILE]/deploy/httpha-invoker.sar

    For JMS HTTP Invoker:

    • JBOSS_HOME/server/[PROFILE]/deploy/jms/jbossmq-httpil.sar
    Remediation instructions

    In order to completely disable HTTP Invoker for JNDI, EJB and JMX, Delete these files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/http-invoker.sar
    • JBOSS_HOME/server/[PROFILE]/deploy/httpha-invoker.sar

    In order to completely disable HTTP Invoker for JMS, Delete this directory:

    • JBOSS_HOME/server/[PROFILE]/deploy/jms/jbossmq-httpil.sar
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111801
    File: eap5-ocil.xml

    7.14 - Unused features should be disabled or deleted: Java Management Extensions (JMX) Invoker

    Features and services not in use should be removed. The JMX Invoker exposes the JMX MBeanServer interface via Remote Method Invocation compatible interface. This can be useful for administrators - especially in large or distributed environments.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/jmx-invoker-service.xml
    Remediation instructions

    In order to completely disable this component, Delete these files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy/jmx-invoker-service.xml
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:111901
    File: eap5-ocil.xml

    7.15 - Unused features should be disabled or deleted: Pooled Invoker

    Features and services not in use should be removed. The org.jboss.invocation.pooled.server.PooledInvoker provides RMI over a custom socket implementation of the Invoker interface.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate changes to the following files:

    In JBOSS_HOME/server/[PROFILE]/deploy/legacy-invokers-service.xml Ensure the <mbean> with name attribute of "jboss:service=invoker,type=pooled" has been deleted.

    Remediation instructions

    In order to completely disable this component, take the following actions:

    In JBOSS_HOME/server/[PROFILE]/deploy/legacy-invokers-service.xml, Delete the <mbean> with name attribute of "jboss:service=invoker,type=pooled"

    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:112001
    File: eap5-ocil.xml

    7.16 - Unused features should be disabled or deleted: Java Remote Method Protocol (JRMP) Invoker

    Features and services not in use should be removed. The org.jboss.invocation.jrmp.server.JRMPInvoker provides the RMI/JRMP implementation of the Invoker interface.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate changes to the following files:

    In JBOSS_HOME/server/[PROFILE]/deploy/legacy-invokers-service.xml, Ensure the <mbean> with name attribute of "jboss:service=invoker,type=jmrp" has been deleted.

    Remediation instructions

    In order to completely disable this component, take the following actions:

    In JBOSS_HOME/server/[PROFILE]/deploy/legacy-invokers-service.xml, Delete the <mbean> with name attribute of "jboss:service=invoker,type=jmrp"

    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:112101
    File: eap5-ocil.xml

    7.17 - Unused features should be disabled or deleted: Clustering

    Features and services not in use should be removed. Clustering allows deployed applications to run distributed across multiple JBoss Enterprise Application Platform servers.

    Rationale

    Removing unused features or services is a common security strategy that reduces the potential attack surface of an information system. Removing unused features or services also reduces resource usage.

    Additional information

    CVSSv2 Risk Assessment: 3 / Low

    DoD Risk Category: CAT III

    NIST 800.53 Mapping: CM-7

    DoD 8500.2 Mapping: DCPP-1

    Validation instructions

    Interview JBoss administrators and/or platform administrators. If the feature or service is not used, validate the removal of the following files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy-hasingleton/
    • JBOSS_HOME/server/[PROFILE]/farm/
    • JBOSS_HOME/server/[PROFILE]/deploy/cluster/

    Validate this change to the following file:

    In JBOSS_HOME/server/[PROFILE]/conf/bootstrap/profile.xml, Delete the following from "BootstrapProfileFactory":

    <property name="farmURIs">
    	<list elementClass="java.net.URI">
    		<value>${jboss.server.home.url}farm</value>
    	</list>
    </property>
    Remediation instructions

    In order to completely disable this component, take the following actions:

    Delete these files and directories:

    • JBOSS_HOME/server/[PROFILE]/deploy-hasingleton/
    • JBOSS_HOME/server/[PROFILE]/farm/
    • JBOSS_HOME/server/[PROFILE]/deploy/cluster/

    In JBOSS_HOME/server/[PROFILE]/conf/bootstrap/profile.xml, Delete the following from "BootstrapProfileFactory":

    <property name="farmURIs">
    	<list elementClass="java.net.URI">
    		<value>${jboss.server.home.url}farm</value>
    	</list>
    </property>
    References

    1. Jboss 6.x Tuning/Slimming. (October 21, 2011). In JBossAS. Retrieved May 1, 2012, from https://community.jboss.org/wiki/JBoss6xTuningSlimming
    2. DeCoste, W. (2011). Slim, Trim, Prune JBoss Enterprise Application Platform. Retrieved from https://access.redhat.com/sites/default/files/slimtrimpruneeap.pdf

    Check Summary

    System: http://scap.nist.gov/schema/ocil/2
    Name: ocil:com.redhat.eap5.scap:questionnaire:112301
    File: eap5-ocil.xml


    Rear Matter

    For additional information regarding the JBoss EAP 5 SCAP benchmark, please visit https://fedorahosted.org/scap-security-guide/

    You may also contact the authors: