Je bekijkt nu XML eXternal Entities (XXE) Injection

XML eXternal Entities (XXE) Injection

  • Laatste wijziging in bericht:juli 20, 2025
  • Bericht auteur:

Wat is XML External Entities (XXE) Injection? | Bescherm je Webapplicaties tegen XML-aanvallen

XML wordt veel gebruikt in webapplicaties om gegevens te structureren en uit te wisselen. Maar net als elke technologie kent ook XML kwetsbaarheden. Een van de gevaarlijkste daarvan is XML External Entities (XXE) Injection. Deze aanvalstechniek maakt misbruik van slecht geconfigureerde XML-parsers en stelt aanvallers in staat om gevoelige gegevens te stelen, servers te manipuleren of zelfs toegang te krijgen tot interne netwerken. In deze SEO-geoptimaliseerde tekst leggen we uit wat XXE is, hoe het werkt, en hoe je je applicaties hiertegen kunt beveiligen.

Wat is XXE (XML External Entities) Injection?

XML External Entities Injection is een aanvalstechniek waarbij een aanvaller kwaadaardige externe entiteiten in een XML-invoerbestand insluit. Deze entiteiten worden vervolgens verwerkt door een kwetsbare XML-parser, wat kan leiden tot ernstige beveiligingsproblemen.

Een entiteit in XML is een soort variabele die verwijst naar een extern bestand of bron. Wanneer de parser deze entiteiten verwerkt, kunnen aanvallers:

  • Lokale bestanden uitlezen (bijv. /etc/passwd)
  • Interne netwerken scannen via server-side request forgery (SSRF)
  • Denial-of-Service (DoS) veroorzaken
  • Informatie exfiltreren via externe verbindingen

Hoe werkt XXE Injection?

Een typische aanval begint met het invoegen van een extern entiteitsreferentie in een XML-document:

<?xml version="1.0"?>
<!DOCTYPE data [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<data>&xxe;</data>

Als de XML-parser externe entiteiten toestaat, zal deze proberen de inhoud van het opgegeven bestand te laden en invoegen in de XML-output. Het resultaat kan zichtbaar worden voor de aanvaller of gebruikt worden in combinatie met andere kwetsbaarheden.

Gevolgen van een XXE-aanval

De impact van een succesvolle XXE-aanval is aanzienlijk:

  • Diefstal van gevoelige systeem- of gebruikersgegevens
  • Uitvoeren van interne netwerkverkenning (voor latere aanvallen)
  • DoS-aanvallen via entiteitenbommen zoals Billion Laughs
  • Verlies van vertrouwelijkheid, integriteit en beschikbaarheid
  • Compliance-schendingen zoals AVG/GDPR-overtredingen

Voorbeelden van XXE-aanvallen

  • Een webapplicatie accepteert XML-upload voor configuratie of bestandssynchronisatie. Een aanvaller voegt een externe entiteit toe om serverbestanden te lezen.
  • Een SOAP-gebaseerde API verwerkt XML-aanroepen met een parser die externe entiteiten toestaat. De aanvaller gebruikt XXE om gevoelige bedrijfsinformatie te achterhalen.

Hoe voorkom je XXE-aanvallen?

Het voorkomen van XXE-aanvallen begint bij veilige configuratie van XML-parsers en invoerbehandeling:

  1. Schakel externe entiteiten en DTD’s uit in je XML-parser:
    • In Java: factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
    • In .NET: gebruik XmlReaderSettings om DTD-verwerking uit te schakelen
  2. Gebruik veilige bibliotheken die standaard XXE uitsluiten
  3. Voer inputvalidatie uit om verdachte XML-structuren te detecteren
  4. Gebruik JSON waar mogelijk, aangezien het veiliger is voor dataoverdracht
  5. Voer penetratietests uit op API’s en uploadfunctionaliteiten
  6. Gebruik een Web Application Firewall (WAF) met bescherming tegen XML-injectie

Detectie van XXE-kwetsbaarheden

  • Automated security scans met tools als OWASP ZAP, Burp Suite, of Nessus
  • Code audits van XML-verwerkende modules
  • Logging en monitoring van ongebruikelijke foutmeldingen of bestandstoegang

Wat te doen bij een XXE-beveiligingsincident?

  1. Isoleer het getroffen systeem van het netwerk
  2. Analyseer logs om vast te stellen welke bestanden of data zijn blootgesteld
  3. Patch je XML-parser en implementeer veilige instellingen
  4. Informeer gebruikers of klanten bij een datalek
  5. Voer een uitgebreide beveiligingscontrole uit op vergelijkbare kwetsbaarheden

Conclusie

XXE-aanvallen zijn verraderlijk en kunnen enorme schade aanrichten als ze niet worden voorkomen. Gelukkig is de oplossing meestal relatief eenvoudig: configureer je XML-parsers veilig, valideer invoer en overweeg overstap naar veiligere gegevensformaten zoals JSON. Proactieve beveiliging voorkomt dat een simpele XML-upload het begin wordt van een ernstige datalek of systeeminbraak.

Wil je weten of jouw applicatie kwetsbaar is voor XXE? Neem contact met ons op voor een beveiligingsaudit of pentest.

Laat je systeem niet uitlezen via XML. Bescherm je parser. Stop XXE-aanvallen.