XML Injection je typ útoku, při kterém útočník vkládá škodlivý obsah do XML dat, která jsou následně zpracována na straně serveru. Tento útok cílí na aplikace, které používají XML pro přenos nebo ukládání dat, typicky bez dostatečné validace vstupu. Pokud není vstup správně ošetřen, může útočník získat přístup k citlivým informacím, obejít autentizaci, upravit logiku dotazu, nebo dokonce vyvolat chyby v parseru XML.
Jak XML Injection funguje?
Útočník manipuluje s XML strukturou tím, že do vstupního pole (např. formuláře) vloží speciálně vytvořený XML kód. Při zpracování tohoto kódu může dojít například k:
Změně chování dotazu nebo filtru.
Injekci dalších XML elementů nebo atributů.
Získání přístupu k datům, která by jinak měla být skryta.
Spuštění neautorizované akce.
Např. místo zadání běžného jména do formuláře může útočník zadat:
<user><name>admin</name><role>admin</role></user>
Pokud server tato data bez validace převezme, může dojít k neoprávněnému přístupu.
Různé typy XML útoků
XML Injection může být součástí širší skupiny útoků souvisejících s XML, například:
XPath Injection – modifikace dotazu do XML databáze.
XXE (XML External Entity) – využití externích entit pro čtení souborů nebo síťový přístup.
SOAP Injection – cílení na XML SOAP zprávy v API rozhraních.
Proč je XML Injection nebezpečný?
Může obejít autentizaci nebo oprávnění.
Může vést k úniku dat nebo změně jejich významu.
Lze ho provádět i bez nutnosti XSS nebo SQL injection – často tiše a bez zjevných stop.
Je těžko detekovatelný v běžných logovacích systémech.
Reálné příklady z praxe
XML Injection je často zneužíván v prostředích s SOAP API, staršími podnikových systémech nebo webových službách využívajících XML-RPC. Například:
V roce 2017 byla zjištěna zranitelnost v několika enterprise systémech, kde pomocí XML Injection šlo upravit strukturu SOAP dotazu a získat přístup k administrátorským funkcím.
U některých starších CMS bylo možné pomocí injekce do XML konfigurace změnit chování modulu bez nutnosti přístupu do administračního rozhraní.
Ochrana proti XML Injection
Validace a sanitizace vstupů – nikdy nezpracovávat uživatelský vstup bez kontroly.
Používání bezpečných parserů – moderní knihovny mají ochranu proti injekci i XXE.
Zakázání externích entit (DTD) – minimalizuje riziko XXE.
Logování a monitoring – sledování podezřelých XML struktur může odhalit pokusy o útok.
Používání alternativ k XML – např. JSON ve spojení s dobře definovaným schématem může být bezpečnější.
Shrnutí
XML Injection je zákeřný typ útoku, který se může objevit v aplikacích, kde by to správce ani vývojář nečekal – v datových strukturách, konfiguračních souborech nebo API zprávách. Jeho účinek může být stejně ničivý jako SQL injection, zejména pokud není odhalen včas. V dnešní době by měl být každý vývojář a administrátor připraven XML vstupy řádně ověřovat a chránit své aplikace před tímto typem hrozby.