>

GST035 - Im DOM hört dich keiner schreien

Synopsis Wir sprachen mit Mario Heiderich (@0x6D6172696F) über (Web-)Security, Pentesting und wie sich in der letzten Zeit das Feld gewandelt hat. Immer mehr Logik passiert im Browser womit sich die Angriffsflächen verschieben. Browser sind darüber hinaus hoch komplexe und oft angreifbare Softwaresysteme.

Die Aufnahme ist vom 1.7.2014. Entschuldigt die späte Veröffentlichung.

Unser Gast (00:00:00)

Terminologie & Methodologie (00:05:51)

  • Sources: Quellen von Input (User Input z.B.)
  • Sink: Stellen im Code, wo Input ankommt bzw. was mit ihm passiert
  • Input: Input :)
  • Getestet wird manchmal in VMs, manchmal auf Test oder Staging Umgebungen oder auch in Produktion
    • das hängt vom Kunden und Projekt ab
  • WAF: Web Application Firewall: https://en.wikipedia.org/wiki/Application_firewall
  • Erfolgsquote: 100% - "noch keine leeren Reports"
  • Eine Frage der Einstellung: Die einen Entwickler wollen Features bauen, andere Software kaputt machen
  • Scope
    • "Ihr dürft nicht nach DoS suchen!"
    • Abgrenzung, was in der Betrachtung liegt und was nicht
  • Vektor: Der Angriff an sich, z.B. ein String bei einer SQL Injection; oder Vektor kann ein ganzer Prozess oder Ablauf sein
  • Exploit: Nutzung eines Vektors mit einem Ziel: Beispiel String (Source) für SQL Injection (Vektor) nutzen, um Admin zu werden
  • Pwn2Own: https://en.wikipedia.org/wiki/Pwn2Own
  • Stuxnet: https://en.wikipedia.org/wiki/Stuxnet

Betätigungsfelder (00:22:20)

  • Marios Firma hat für alle möglichen Bereiche Spezialisten:
    • Binary Pentesting
    • Datenbanken
    • Web/Browser/JavaScript/Flash
    • Bruteforcing
    • Cold Fusion
    • Kryptographie, Kryptoanalyse
    • Java

Neue und alte Probleme (00:24:30)

  • Es verlagert sich viel in den Browser
  • daher mehr und mehr Lücken in Richtung XSS, CSRF, …
  • NoSQL wird auch getestet
  • MongoDB führt JS in der Datenbank aus und zwar als eval!

Auf der Suche nach XSS und anderen Schwachstellen (00:27:00)

  • "Nennt sich doch mal constructor.constructor"
    • oder "prototype"
    • "proto"

Handhaben von Benutzerinput (00:28:30)

  • Validieren: Format explizit und strikt prüfen
  • Filtern: z.B. Single Quotes oder Kommata entfernen
  • Aber so einfach ist das nicht
    • Strings (Quotes) verboten? was ist mit /i'm a string/.source
    • 1..constructor.constructor
  • Sanitizing:
    • "Escape den Input und Encode den Output"
    • Es ist wichtig zu unterscheiden zwischen der Information die durch das Sanitizing soll, UND
    • Kontext, wo die Information später verwendet werden soll

Back to Frontend Security (00:34:30)

  • Template Expressions Exploit, z.B. bei AngularJS: https://code.google.com/p/mustache-security/wiki/AngularJS
  • Der Browser ist die neue Sink
  • Security im Browser ist anders und komplexer als auf dem Server
  • Sehr viel mehr Wissen über konkrete Prozesse bei der Darstellung von HTML/CSS und der Ausführung von Javascript notwendig
  • Browser ist im Grunde "moving target"
  • Die Vielzahl der Browser bietet sehr viel Angriffsfläche
  • Vor allem im Kontext großer Unternehmen sind oft auch sehr alte Browser noch im Einsatz (IE6)
  • Eine Umstellung auf neuere Browser ist u.U. nicht immer möglich => Paradies für Pentesting

Im DOM hört dich keiner schreien (00:46:50)

Krypto im Browser und moderne APIs (01:07:45)

  • Grundsätzlich: Bedarf steigt an, Verbreitung nimmt zu
  • Man hört immer wieder von Problemen
  • Was kann man machen?
  • Antwort: "Ich habe keine Ahnung"
  • Aussage Mario: Wir sind noch nicht soweit, es zuverlässig einzusetzen.
  • Aber: Es ist auch nicht zum Scheitern verurteilt, aber es braucht noch einiges an Research
  • Seiten wie https://keybase.io machen das bereits
    • Kann man machen, wenn die Seite 100% sicher und vor allem beweisbar sicher ist
    • Ergo: Aufwand ist enorm hoch
  • Es gibt auch Bestrebungen vom W3C das Thema voranzutreiben: http://www.w3.org/TR/WebCryptoAPI/
  • Zusätzlich entstehen ganz neue APIs für den Zugriff auf mobile Devices
    • Bsp: Android-Devices haben über nicht hörbare Töne miteinander kommuniziert
    • Exploits mit Sprachsynthese und Spracherkennung (Bsp: Cookies zwischen Tabs übertragen)
  • WebGL klingt kritisch, aber in dem Bereich gibt es in den letzten Jahren viel Forschung
  • WebSockets und WebRTC bietet hingegen auch viele Möglichkeiten

Info:

  • Veröffentlichung:
  • Autor:
    Dirk Breuer, Sebastian Cohnen
  • Link:
    Website
  • Abonnieren:
    Feed