Skip to main content

Insecure service configuration - DocumentBuilderFactory

Description

DocumentBuilderFactory is insecurely configured, which makes it susceptible to XXE attacks.

Impact

  • Read confidential information.
  • Execute commands on the server.

Recommendation

Securely configure DocumentBuilderFactory.

Threat

Authorized attacker from the Internet.

Expected Remediation Time

⌚ 30 minutes.

Score

Default score using CVSS 3.1. It may change depending on the context of the vulnerability.

Base

  • Attack vector: N
  • Attack complexity: H
  • Privileges required: L
  • User interaction: R
  • Scope: U
  • Confidentiality: L
  • Integrity: L
  • Availability: N

Temporal

  • Exploit code madurity: P
  • Remediation level: O
  • Report confidence: R

Result

  • Vector string: CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N/E:P/RL:O/RC:R
  • Score:
    • Base: 3.7
    • Temporal: 3.2
  • Severity:
    • Base: Low
    • Temporal: Low

Code Examples

Compliant code

There are additional settings in the DocumentBuilderFactory to securely configure the service

import com.sap.security.hardener.nw.facade.HardenerFacade;

public static DocumentBuilderFactory secureDocumentBuilderFactory(final DocumentBuilderFactory factory, final String callerNamespace) throws ParserConfigurationException{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
//One possible method to secure the DocumentBuildeerFactory
dbFactory = HardenerFacade.secureDocumentBuilderFactory(dbFactory);
DocumentBuilder parser = dbf.newDocumentBuilder();
parser.setErrorHandler(handler);
return parser.parse(stream);
}

Non compliant code

The DocumentBuilderFactory does not have a secure configuration

public static DocumentBuilderFactory secureDocumentBuilderFactory(final DocumentBuilderFactory factory, final String    callerNamespace) throws ParserConfigurationException{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder parser = dbf.newDocumentBuilder();
parser.setErrorHandler(handler);
return parser.parse(stream);
}

Requirements

free trial

Search for vulnerabilities in your apps for free with our automated security testing! Start your 21-day free trial and discover the benefits of our Continuous Hacking Machine Plan. If you prefer a full service that includes the expertise of our ethical hackers, don't hesitate to contact us for our Continuous Hacking Squad Plan.