Das Open Web Application Security Project kurz OWASP sollte Software Entwicklern vor allem durch Veröffentlichungen wie der OWASP TOP 10, welche die 10 häufigsten Sicherhitsrisiken für Webanwendungen beschreibt, bekannt sein. Da mit dem German OWASP DAY 2016 in Darmstadt nun die deutsche Security Konferenz dieser gemeinnützigen Organisation in der direkten Nachbarschaft stattfand, ließ ich es mir nicht nehmen, gemeinsam mit einigen meiner Kollegen, an dieser Veranstaltung teilzunehmen.
Bereits am Vorabend des German OWASP Day wird den Teilnehmern traditionell die Möglichkeit zum Kennenlernen angeboten. Dieses Mal traf man sich hierzu in der Weststadtbar, wo zum angeregten Austausch Snacks und Getränke gereicht wurden. Auch der sportliche Wettkampf kam nicht zu kurz: So wurde auf einem Kicker-Tunier der wohl erste OWASP-Tischfußball-Meister ermittelt.
Die Konferenz selbst wurde am 29.11. um 09:00 Uhr von Ingo Hanke eröffnet. Nach einer kurzen Einleitung durch Martin Knobloch, der erklärte was die OWASP ist und dass man das „W“ in OWASP nicht ganz so wichtig nehmen sollte, startete Tobias Millauer von Daimler die Keynote:
CarIT Security: Facing Information Security Threats
Ob es an dem spannenden Thema CarIT Security oder dem auf der ersten Folie dargestellten Mercedes GT AMG lag, dass der Vortrag gleich von Beginn an die ungeteilte Aufmerksamkeit des Mercedespunks genoß, lässt sich im Nachhinein leider nicht mehr nachvollziehen.
Tobias Millnauer von Daimler erklärte in der Keynote, wie die zunehmende Vernetzung auch vor der Automobil-Industrie nicht halt macht und wie die dadurch aufgeworfenen Fragen bezüglich der IT-Sicherheit beantwortet werden. Hierzu zeigte er anhand des Stride Threat Model und des Projekts Heavens, wie der Automotive-Bereich bekannte Modelle der IT-Security adaptiert und an die speziellen Anforderungen im KFZ-Segment anpasst.
Für sehr kontroverse Diskussionen in der Kaffeepause führte die etwas provokative Rückfrage aus dem Auditorium, die ich etwa folgendermaßen zitieren würde: „… und wofür brauchen wir überhaupt den ganzen Mist?“. Nun ja, offensichtlich gibt es einen Business Case…
Java Deserialisation Attacks: Angriff & Verteidigung
Um 10:00 Uhr legte dann die Java Fraktion, vertreten durch Christian Schneider, los und zeigte den interessierten Zuhörern, wie man bei Java magische Funktionen ausnutzen kann, um über serialisierte Objekte Logik in die Applikation zu schleusen. Ausgestattet mit vielen Code Beispielen war dieser Vortrag so spannend, dass wir PHP-Jungs voll auf ihre Kosten kamen und später noch hitzige Diskussionen über die Möglichkeiten eines Angriffs über die PHP-Funktion unserialize() führten. Das wichtigste Fazit dieses Vortrags werden aber mit Sicherheit alle beteiligten Zuhörer in Zukunft beherzigen:
DO NOT DESERIALIZE UNTRUSTED DATA!
Security Requirements im Software Development Lifecycle
Nach einer ausgedehnten Kaffeepause stellten Daniel Kefer und René Reuter ihr Tool SecurityRat vor. Bei diesem Tool handelt es sich um eine Web-Oberfläche, über die man Sicherheitsanforderungen adressieren kann. Als Backend für diese Oberfläche kann zum Beispiel ein Jira zum Einsatz kommen.
Schönes Tool, werde ich mir sicher einmal näher anschauen.
Searching and Analyzing HTTP Data with the WASE Framework
Pen-Tester Thomas Patzke stellte mit dem WASE-Framework (Web Audit Search Engine) ein von ihm entwickeltes Tool vor, welches bei der Analyse von HTTP-Kommunikation hilft. Sehr beeindruckend waren hier die Ergebnisse, die er präsentierte, als er für sehr kleines Geld die Top 1Mio Webseiten bei Alexa scannte.
Sicher in die Cloud mit Angular 2 und Spring Boot
Die Zeit bis zur Mittagspause verkürzte uns Andreas Falk, der uns ein Projekt vorstellte, welches unter seiner Beteiligung mit Angualar 2 und Spring Boot entstanden ist. Hierbei beleuchtete er nicht nur die sicherheitsrelevanten Eigenschaften der beiden Frameworks, sondern verschaffte auch einen kleinen Einblick in den gewählten Entwicklungsprozess und zeichnete ein grobes Bild der Softwarearchitektur.
Zu einem mitfühlendem Lächeln, insbesondere bei den Entwicklern unter den Zuhörern, führte die Geschichte, dass man sich bei der internen HTTP-Kommunikation aus Kostengründen für selbstsignierte Zertifikate entschieden hat. Später zahlte man diese Kosten jedoch doppelt, da die angeschlossenen Komponenten nicht mit selbstsignierten Zertifikaten umgehen konnten und man teure Workarounds bauen musste.
Reverse Engineering Android Apps with CodeInspect
Nach der Mittagspause und dem fabelhaften Tiramisu ging es gleich weiter mit Reverse Engineering. Hierzu zeigte uns Siegfried Rastloser wie weit der Stand der Technik beim Reverse Engineering im Android-Umfeld ist. Dies demonstrierte er anhand einer Malware, die ein Fenster zur Abfrage von Zugangsdaten und TANs öffnet sobald die Commerzbank-App im Vordergrund erscheint. Mittels CodeInspect vom Frauenhofer SIT konnte er die Malware nicht nur entpacken und reverse-engineeren, sondern auch im neu entstandenen Source Code debuggen, diesen abändern und als neue App abspeichern und auf einem Telefon ausführen.
Wirklich beeindruckt hat mich hierbei die Code-Qualität nach dem Reverse-Engineering-Prozess: Das Tool von Frauenhofer übersetzt den Code in eine eigens hierzu entwickelte java-ähnliche Sprache, die super verständlich und sehr einfach zu lesen ist. Als ich mich vor vielen Jahren das letzte Mal mit Reverse Engineering auseinander gesetzt habe, waren die Ergebnisse hier noch um ein vielfaches schlechter.
NoSQL Injection revisited
Auch wenn noSQL-Datenbanken keine SQL-Injections zulassen, sind sie natürlich Query-Injections möglich. Das weiß auch Patrick Spiegel und machte in seinem interessanten Vortrag am Beispiel von MongoDB, redis, memchached und CouchDB auf unterschiedlichen Technologie-Stacks deutlich, was über Injections im noSQL-Bereich machbar ist.
Lightning Talks
Bei den Lightning Talks sprach Bastian Braun über Security im agilen Umfeld, Björn Kimminich zeigte, wie es seit dem letzten OWASP-Day mit seinem Juice Shop weiter gegangen ist und Juraj Somorovsky zeigte wie man mit seinem TLS-Attacker TLS-Bibiliotheken testen kann.
CSP is Dead, Long Live CSP! On the Insecurity of Whitelist and the Future of Content Security Policy
Einer der Vorträge, die in unserer Gruppe am meisten diskutiert wurde, war der von Sebastian Lekies zum Thema Content Security Policy. Er beschrieb hier die Situation bei Google, bei denen der Einsatz von CSPs zum Schutz vor XSS nicht funktionierte. Dadurch angefeuert analysierte man bei Google den gesamten Index nach Webseiten die CSP verwenden und deren Effektivität gegen XSS-Angriffe. Das Ergebnis war, dass fast alle Webseiten, die CSP einsetzten den durch die Content Security Policy versprochene Schutz, durch den Einsatz von Whitelists wieder aushebelten. Hierzu zeigte Lekies einige Beispiele.
Als Lösung für dieses Problem zeigte Lekis, wie sich Skripte mit Hilfe des nonce-Attribut „signieren“ lassen, um so nur die Ausführung einzelner Skripte zu ermöglichen, ohne alle Skripte einer Domäne ausführbar machen zu müssen, wie es bei Whitelists der Fall wäre.
Sicherheit agil testen
Bei Matthias Rohr ging es dann wieder um Security im agilen Umfeld. Gleich zu Beginn zeigte Rohr wie einfach die Welt der Security Tests noch war, als man im Wasserfall vor sich hin arbeiten konnte und alle 0,5 bis 1 Jahre vor einem Deployment einen ausführlichen Security Test inkl. Pen-Test machen konnte. Klar, wenn der dann schief gegangen ist, mussten alle wieder von vorne anfangen, aber das war ja nicht das Problem der Leute, die in den Abteilungen für die Security-Tests zuständig waren.
Im Zeitalter von DevOps und mehreren Deployments am Tag ist ein solches Vorgehen natürlich nicht mehr denkbar. Rohr erklärte in seinem Vortrag sehr gut, wie in Teams eine höhere Awareness und klare Verantwortungen bezüglich der Security geschaffen werden kann und wie mit automatisierten Tests über die CI-Umgebungen die Anwendungssicherheit erhöht werden kann.
DROWN (oder warum TLS-Konfiguration schwer ist)
Der meiner Meinung nach beste Vortrag des OWASP-Tages kam von Sebastian Schinzel und hatte DROWN-Angriff zum Thema. Schinzel zeigte dabei sehr anschaulich, wie bei diesem Hack vorgegangen wurde und warum der Angriff, der eigentlich SSLv2 zum Ziel hatte, auch eine Gefahr für die über TLS geführte Kommunikation sein kann.
Fazit des ganzen:
- Verwendet nirgendwo mehr SSLv2
- SSLv2 macht eure Systeme verwundbarer, als wenn ihr gar keine Verschlüsselung verwenden würdet
- Verwendet für unterschiedliche Anwendungen (HTTP, SMTP etc.) unterschiedliche Zertifikate.
Der Vortrag war wirklich sehenswert und da Schinzel den gleichen Vortrag bereits auf der RuhrSec gehalten hat, gibt es sogar ein Video dazu.
Fazit
Der OWASP Day 2016 war eine sehr gute Veranstaltung, auf der ich viele neue Eindrücke aus der Welt der Anwendungssicherheit gewonnen habe. Wer sich intensiver über die beschriebenen Vorträge informieren will, kann dies auf der Veranstaltungsseite zum German OWASP Day 2016 tun. Dort gibt es seit kurzem auch die Folien zu den meisten der Vorträge.
Was mir noch auffiel, war die extreme Bandbreite zwischen den Beiträgen, so daß theoretisch für jeden was dabei war:
– NoSQL und Angular2 waren relativ einsteigerfreundlich
– Wase und besonders SecurityRAT war für professionelle Webworker
– „Special Interest“ – Die 2 SSL-Beiträge und das Reverse-Engineering-Tool.
Der Rest war irgendwo dazwischen.
Besonders gut war, daß die „Advanced“-Vorträge so vorbereitet waren, daß selbst teilweise Themenfremde damit was anfangen konnten. Ich war überrascht, wie „simpel“-Vortrag den recht komplexen Hack-Vorgang erklären konnte. Selbst ich hatte am Ende das Gefühl, daß ich weiß, warum der Hack funktioniert und wie ich ihn verwenden kann.
Alles in allem ein wirklich interessantes Event.