lolloj - Fotolia

F

Wie lässt sich ein Angriff per Server-Side Template Injection verhindern?

Server-Side Template Injection ist eine Art Einspeisungsangriff. Unser Experte erklärt, wie Sie Ihre Firma vor solchen Bedrohungen schützen.

Auf der Black Hat 2015 wurde eine Sicherheitslücke enthüllt, die sich Server-Side Template Injection nennt. Was sind die Unterschiede zwischen den Schwachstellentypen Cross-Site Scripting und Server-Side Template Injection? Unterscheiden sich die Strategien für eine Verteidigung?

Die Überprüfung und Bereinigung von Eingaben aus nicht vertrauenswürdigen Quellen ist eine der wichtigsten Regeln, die Entwickler befolgen müssen. Damit verhindern sie, dass schädlicher Code eingespeist wird. Das ist zum Beispiel mit Cross-Site Scripting (XSS) oder SQL Injection möglich. Auch wenn diese Bereinigung von Anwendereingaben zu den Grundprinzipien der sicheren Programmierung gehört, tauchen dennoch immer wieder Instanzen auf, bei denen das nicht der Fall ist. Das reißt Löcher, durch die Bösewichte sowohl Nutzer als auch Systeme angreifen können. PortSwigger stellt das Security-Test-Tool Burp Suite her. Damit lassen sich Webanwendungen überprüfen. Die Security-Experten haben eine unbekannte Klasse an Einspeisungsangriffen entdeckt, die sie Server-Side Template Injection nannten.

Template Engines setzt man in der Regel ein, um die Programmlogik einer Website von der Präsentationsschicht zu separieren. Wikis, Blogs und CMS-Plattformen (Content Management System) setzen normalerweise auf solche Vorlagen-Engines. Das wird aber nicht nur wegen sauberer Programmierung praktiziert. Anwender mit wenig HTML-Kenntnissen können so auch sehr einfach die Inhalte einer Website aktualisieren. Das Erstellen von mit HTML formatierten E-Mails ist ein anderer Anwendungsfall. Weiterhin können Profi-Designer Code wiederverwenden und somit Seiten schneller und effizienter erstellen. Zu den populären Template Engines gehören Twig, Jade und Xwiki Enterprise.

Einige Engines verwenden einfache String Interpolation, wobei Platzhalter durch Daten ersetzt werden. Lassen wir als Beispiel ein E-Mail-Template mit Lieber {Vorname} beginnen und die Engine ersetzt Vorname mit einem Namen aus der zugehörigen Datenbank. Andere Vorlagen erlauben sogenannte Wenn-Vorhanden-Konditionen. Damit wird überprüft, ob Daten vorhanden sind. Andere sind noch flexibler und ermöglichen foreach-Schleifen, rekursive Makros und eingebettete Ausdrücke. Das bietet natürlich noch höhere Funktionalität.

Es ist sehr wichtig, dass der Code innerhalb eines sich auf einem Server befindlichen Templates jegliche Anwendereingaben und Inhalte ausreichend überprüft und bereinigt. Andernfalls ist ein Angriff via Server-Side Template Injection möglich. Anders als bei XSS-Angriffen kann man damit den darunterliegenden Webserver direkt angreifen und nicht nur dessen Anwender. Einige Template Engines bringen eine Art Sandbox mit, um den Zugriff auf leistungsfähigere Funktionen zu limitieren und nicht vertrauenswürdige Eingaben sicher verarbeiten zu können. PortSwigger hat aber herausgefunden, dass sich viele dieser Implementierungen von solchen Injection-Angriffen umgehen lassen. Das Dokument der Experten erklärt eine Methode, wie sich Template-Injection-Schwachstellen entdecken und ausnutzen lassen. Ebenso demonstriert PortSwigger verschiedene Exploits gegen fünf der populärsten Template Engines. Dazu gehört auch, wie man aus den Sandboxes ausbricht.

PortSwigger ist sich nicht ganz sicher, wie weit verbreitet solche Template Injections sind. Man will die Burp Suite allerdings erweitern, damit auch solche Sicherheitslücken entdeckt werden. Einfach gestrickte Vorlagen-Engines wie zum Beispiel Mustache stellen kein Risiko dar. Anwender können hier nicht beliebige Funktionen aus der Template-Sprache aufrufen. Dennoch müssen die HTML-Ausgaben bereinigt werden. MediaWiki ist die Open Source Template Engine hinter Wikipedia. Das ist eine flexiblere Engine und eine Umgebung in einer Sandbox. Laut PortSwigger verrichtet sie gute Arbeit bei der Verhinderung von Zugriffen auf potenziell gefährliche Module und Funktionen.

Fazit

Diese Untersuchung zeigt sehr deutlich, dass sich Entwicklerteams in Unternehmen nicht blind auf die Entwickler-Tools für Websites verlassen können, um Best Practices einzuhalten. Die für die Sicherheit zuständigen Personen müssen umsichtig bewerten, wie die Templates mit den Eingaben der Anwender umgehen und ob sich eingebaute Security-Prüfungen und Sandboxes umgehen lassen oder nicht. Durch die dazugehörigen Dokumentationen finden Sie vielleicht Hinweise auf unzureichende Bereinigungspraktiken. Besser ist es, den Code zu analysieren und so herauszufinden, was die Vorlage mit Eingaben von Anwendern genau anstellt. Außerdem lässt sich dabei gleich testen, ob Sicherheitsprüfungen umgehbar sind. Eine Methode für die Abschwächung solcher Angriffe wäre eine Sandbox, die sich innerhalb eines abgehärteten Docker-Containers befindet. So könnte man das Ausführen von schädlichem Code abfangen.

Folgen Sie SearchSecurity.de auch auf Twitter, Google+ und Facebook!

Artikel wurde zuletzt im Februar 2016 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Sicherheit von Webanwendungen

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

SearchDataCenter.de

Close