영웅 배경, 구분선 없음
지침

Fehlkonfiguration der Sicherheitseinstellungen — XXE detailliert

Bei der Schwachstellenklasse „XML eXternal Entities“ (XXE) handelt es sich um eine Sicherheitsfehlkonfiguration, an der XML-Parser beteiligt sind.

Der XML-Standard beinhaltet Möglichkeiten, auf „Entitäten“ wie Dateien und URLs zu verweisen. Es ist oft die Standardeinstellung, dass Parser externe Entitäten vollständig auflösen, was bedeutet, dass XML-Dokumente zur Offenlegung von Dateien und anderen vertraulichen Informationen für potenzielle Angreifer führen können.

Ein einfaches Beispiel

Schauen wir uns ein kleines Beispiel für ein XML-Dokument an, das externe Entitäten verwendet:

xml
<? xml-Version = „1.0"? >
<! DOCTYPE Äußeres Element [
<! ] >
<outerElement>&Externe Entität;</outerElement>

Zuerst deklarieren wir einen neuen 'Doctype', der die Struktur-/Elementtypen definiert, die im Dokument existieren und vom Parser verarbeitet werden können.

Darin spezifizieren wir eine Entität vom Typ System namens 'ExternalEntity'. Diese Entität zeigt auf die Datei '/etc/passwd'.

Nach der 'Doctype'-Definition haben wir unsere tatsächlichen XML-Daten. Wir definieren ein 'outerElement' und fügen dann eine Referenz (gekennzeichnet durch das '&') zur Entität 'ExternalEntity' hinzu.

An diesem Punkt sucht der Interpreter nach der Entitätsdefinition und löst die URL auf, die definiert und an die Stelle von '&externalEntity; 'gesetzt wurde.

Am Ende des Analysevorgangs erhalten wir ein Dokument, das wie folgt aussieht:

xml
<? xml-Version = „1.0"? >
<outerElement>
root: x: 0:0:root: /root: /usr/bin/zsh
Daemon: x: 1:1:daemon: /usr/sbin: /usr/sbin/nologin
bin: x: 2:2:bin: /bin: /usr/sbin/nologin
...
</outerElement>

Schadensbegrenzung

Die Notwendigkeit und die Einzelheiten eines umfassenden Schutzes vor XXE hängen stark von der Sprache, dem Framework und der Version ab.

Jede Kombination ermöglicht es oft, einige Aspekte des Parsers zu deaktivieren, was die Auflösung von Dateien verhindern kann, nicht aber von HTTP-Pfaden. Oder es kann immer noch die Erweiterung von Entitäten ermöglichen, was an sich schon zu einer Denial-of-Service-Schwachstelle führen kann.

.NET

Wenn Sie.NET 4.5.1 oder niedriger verwenden, sind die folgenden Klassen standardmäßig anfällig:

  • XmlDocument (Deaktiviert mit 'XmlDocument.xmlResolver = null; ')
  • XmlTextReader (Deaktiviert mit 'XmlTextReader.prohibitDTD = true; ')
  • XPathNavigator