Skip to content

Drucksache: Windows Developer 1.19 - Wie sicher ist SOAP?

Im Windows Developer 1.19 ist ein Artikel über die Sicherheit von SOAP erschienen.

Eine Leseprobe des Artikels gibt es auf entwickler.de.

SOAP war ursprünglich die Abkürzung für "Simple Object Access Protocol", aber seit der Version 1.2 wird diese Erklärung nicht mehr verwendet. Denn SOAP ist nicht unbedingt "Simple", und auf keinen Fall nur auf den Zugriff auf "Objects" beschränkt. Nun sagt uns die Erfahrung aber ganz eindeutig: Wenn etwas nicht einfach ist wird es schnell zur Gefahrenquelle. Entweder weil die Implementierungen Schwachstellen aufweisen oder eine sichere Nutzung unnötig erschwert wird. Wie sieht es denn in der Hinsicht bei SOAP aus?

Das Ergebnis ist wenig überraschend: SOAP ist wirklich nicht gerade Simple, und XML-Encryption und XML-Signature machen das Ganze nicht einfacher, von WS-Security ganz zu schweigen.

Wenn Sie sich die im Artikel vorgestellten Beispiel-Schwachstellen und -Angriffe ansehen, erkennen Sie aber ein Muster: Das Problem ist i.A. nicht SOAP selbst, sondern die fehlende Authentifizierung bzw. Autorisierung. Oder die unzureichende Prüfung der über SOAP erhaltenen Daten, wie eine Suche nach "SOAP" in der CVE-Datenbank zeigt. Diese Schwachstellen wären auch entstanden, wenn die Entwickler statt SOAP REST in gleicher Weise verwendet hätten.

Ab und zu gibt es Probleme mit den SOAP-Implementierungen, aber die sind ziemlich selten. Auch auf den Sicherheitskonferenzen wurden in den letzten Jahren keine Schwachstellen in bzw. Angriffe auf SOAP selbst vorgestellt, das Protokoll sowie seine Implementierungen sind also wohl relativ sicher. "Wohl", weil die Sicherheitsforscher ja vielleicht auch nur keine Lust haben, sich damit zu befassen.

Das größte Problem bei SOAP sind aber tatsächlich die Authentifizierung und die Prüfung der darüber erhaltenen Daten. Wenn Sie die Daten aus einem SOAP-Request ungeprüft für z.B. eine SQL-Abfrage verwenden, erhalten Sie sofort eine wunderschöne SQL-Injection-Schwachstelle. Aber die hat nichts mit SOAP zu tun, sondern mit der fehlenden Prüfung der Eingaben.

Und da gibt es bei SOAP auch den einzigen Punkt, den Sie bei der Entwicklung zusätzlich beachten müssen: Bevor Sie Benutzereingaben in einen SOAP-Request übernehmen, müssen Sie die so kodieren, das sie den Request nicht manipulieren können.

Alles andere ist für Webanwendungen und Web Services "Business as usual". Z.B. führt eine fehlerhafte Authentifizierung immer zu Problemen. Egal ob Sie SOAP oder REST verwenden, ob Sie die Daten per HTTP, HTTPS oder Brieftauben übertragen, ob der Server mit Windows oder Linux läuft, ... .

Und hier noch die Links und Literaturverweise aus dem Artikel:

Carsten Eilers

>
        </div>
                
        <footer class= Kategorien: Drucksache

Trackbacks

Keine Trackbacks