XML External Entity injection, or XXE, occurs when an XML processor resolves an external entity supplied through untrusted input. Depending on the parser and its access, that behavior can cause unwanted file reads or network requests. An XXE assessment checks the parser’s effective configuration throughout the import pipeline.
The business question is whether importing a supplier’s document authorizes the server to contact another resource or read a local file. Accepting XML should not silently grant that additional authority.
Where can XML processing appear in a business application?
Start with supplier feeds, document imports, legacy integrations, and services that validate or transform XML. Ask which component parses the original document and which later components process it again.
For an illustrative inventory system, an uploaded supplier catalog passes through a validator, a transformation step, and a background importer. Record the parser and library version at each step. A safe upload handler does not prove that the later transformer uses the same settings.
Include the actual entry path in the assessment. A sample file tested directly against a library may not exercise the application wrapper that changes its defaults.
Which controls should the parser enforce?
OWASP’s XXE prevention guidance recommends disabling document type definitions where possible, restricting external entity resolution, and controlling external access during schema and stylesheet processing. XInclude needs separate attention when supported. Exact settings vary by parser and version.
For the catalog importer, document whether external definitions are a real business requirement. If schemas are necessary, identify the trusted schema source and how the application selects it. Avoid granting arbitrary document-supplied locations the same status as a reviewed schema.
How can an XXE test avoid sensitive files and networks?
Use a synthetic catalog, a disposable environment, and a harmless marker resource owned by the test team. Agree whether the test observes a local marker read, an outbound request to that controlled resource, or both.
First establish that an ordinary catalog imports successfully. Then submit the designated test document and observe the parser’s result and relevant telemetry. A rejected document is useful evidence only when the team can identify why it was rejected.
If a controlled callback occurs, record which pipeline stage initiated it. Do not claim file disclosure from a network callback alone. Likewise, a parser error does not establish that a resource was retrieved. State the result at the level the evidence supports.
What if the application needs external schemas?
Choose a specific approved resolution path and test it separately from arbitrary external access. For the example inventory system, the owner might supply a reviewed local catalog of schemas and update it through a release process.
Verify a valid catalog against the approved schema, then test an unapproved resource reference. Retain the configuration and decision so the exception remains reviewable when a supplier changes its format.
Also define bounded document sizes and processing time. Those limits answer availability questions beyond whether external entities are resolved. Use small agreed cases; exhausting a production importer is not required to validate a rejection rule.
What makes the retest complete?
Repeat the original document through every affected entry path and verify that normal imports still complete. Confirm the deployed parser settings, including error handling when a requested security option is unsupported.
For a Ceron assessment, supply representative catalog formats, test resources, and access to relevant processing evidence. The deliverable should identify the affected stage, resource access, business consequence, and verified correction.
URL import and SSRF assessment covers other server-initiated network requests. File processing security covers the wider import lifecycle. The inventory example is illustrative.