Wat is XML external entity
XML external entity, vaak aangeduid als XXE, is een kwetsbaarheid in XML parsers die externe entiteiten toestaat te refereren. Een externe entiteit is een verwijzing in een XML Document Type Definition naar een bron buiten het XML-document, zoals een bestand op het bestandssysteem of een URL. Wanneer een onveilige parser deze entiteiten resolveert, kan een aanvaller vertrouwelijke informatie uitlezen, interne services aanroepen of de applicatie doen vastlopen.
Hoe een XXE aanval werkt
Een typisch XXE scenario begint met het uploaden of versturen van kwaadaardige XML-inhoud naar een service die XML verwerkt. De kwaadaardige XML definieert een externe entiteit die verwijst naar bijvoorbeeld een lokaal bestand zoals /etc/passwd of een interne HTTP endpoint. Als de parser externe entiteiten verwerkt, wordt de inhoud van die bron in het antwoord opgenomen of verzonden, waardoor informatielekkage of server side request forgery ontstaat.
Typische gevolgen voor beveiliging
De impact van een succesvolle XXE aanval varieert van informatielekken tot volledige compromittering van systemen. Mogelijke gevolgen zijn het uitlekken van wachtwoorden en configuratiebestanden, denial of service door enorme entiteiten of recursieve expansies, en het uitvoeren van requests naar interne netwerken. XXE kan leiden tot credential leakage, data exfiltratie en toegang tot interne APIs.
Veelvoorkomende aanvalsvectoren
Aanvallers zoeken vaak naar endpoint die XML accepteren, zoals SOAP webservices, XML API endpoints of bestandupload functies. Ook SAML en andere XML gebaseerde authenticatiemechanismen kunnen risico lopen. Testscripts en scanners proberen standaard payloads om externe entiteiten te injecteren en te controleren of de server reageert met ongewenste data.
Hoe je XXE kunt detecteren
Detectie kan plaatsvinden door zowel dynamische als statische analyse. Loginspectie kan aanwijzingen geven als onverwachte externe requests of leesacties plaatsvinden. Dynamische tests met gecontroleerde externe entiteiten, die terugrapporteren naar een externe server, helpen bevestigen of een endpoint kwetsbaar is. Gebruik tools en referenties zoals OWASP voor testcases: https://owasp.org/www-community/attacks/XML_External_Entity_%28XXE%29.
Preventie en best practices
De belangrijkste maatregel is het uitschakelen van externe entiteitverwerking in XML parsers. Configureer parsers om geen externe DTDs te laden en zet entity resolving uit. Beperk toegang tot kritieke bestanden en netwerkbronnen en pas principe van minimale rechten toe op services die XML verwerken. Valideer en normaliseer input, en gebruik whitelists waar mogelijk.
Veilige configuratie en libraries
Gebruik libraries en configuratie-instellingen die bekend veilig zijn. Veel moderne XML parsers bieden opties om external entity processing uit te schakelen. Voor concrete configuratierichtlijnen en flags, zie de OWASP cheat sheets: https://cheatsheetseries.owasp.org/cheatsheets/XML_Entity_Parser_Flags_Cheat_Sheet.html. Zorg ook dat derde partij componenten up-to-date blijven.
Testen tijdens ontwikkeling en deployment
Integreer XXE tests in CI pipelines en gebruik security scanners tijdens development en build. Voer zowel automatische als handmatige penetratietests uit op endpoints die XML verwerken. Controleer logging en monitoring op afwijkende externe requests en probeer payloads waarvan het resultaat duidelijk teruggehaald kan worden om kwetsbaarheid te reproduceren.
Aanbevelingen voor operationeel beheer
Zorg dat incident response plannen klaarstaan als een XXE-aanval wordt gedetecteerd. Beperk netwerktoegang tot interne resources vanuit applicaties die XML verwerken en implementeer firewall regels en egress filtering. Houd inventaris bij van systemen die XML gebruiken en voer periodieke audits uit.
Verdieping en bronnen
Voor verdere verdieping en up-to-date informatie over XXE en gerelateerde mitigaties, raadpleeg betrouwbare bronnen en technische documentatie. Een nuttige bron is de algemene uitleg op Wikipedia: https://en.wikipedia.org/wiki/XML_external_entity_attack. Combineer deze bronnen met praktische guidances van OWASP en vendor documentatie voor specifieke parserconfiguraties.
Samenvattend advies voor ontwikkelaars
Maak van het uitschakelen van externe entiteiten een standaard securityconfiguratie bij alle XML parsers. Train ontwikkelteams in risico’s van XXE en integreer beveiligingschecks in de ontwikkelcyclus. Met preventieve instellingen, goede monitoring en regelmatige tests verminder je het risico op ernstige data leaks en onnodige blootstelling van interne systemen.