Geekstammtisch

Geekstammtisch

Das heimelige Nerdgespräch über Webentwicklung, Ruby/Rails und mehr

GST035 - Im DOM hört dich keiner schreien

Audio herunterladen: MP3 | AAC | OGG | OPUS

Unser Gast (00:00:00)

  • Mario Heiderich, @0x6D6172696F
  • Hat einen Security Talk "Im DOM hört Dich keiner schreien" auf der enterJS gegeben: http://www.enterjs.de/
  • Mario's Security Firma: https://cure53.de/
    • Nutzen wenig Scanner, mehr Handarbeit
  • Security Scanner finden keine "logischen Bugs"
  • RIPS: Statische Analyse von PHP Code: http://rips-scanner.sourceforge.net/

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)

  • Talk auf der enter.js (http://www.enterjs.de/abstracts#im-dom-hoert-dich-keiner-schreien-eine-reise-in-die-gruselige-schicht-zwischen-html-und-javascript)
  • Historie des DOMs
  • Verschiedene Probleme aufgezeigt, Bsp.: DOM-Clobbering
    • Mit statischem HTML bestehende Variablen, Funktionen o.ä. überschreiben
    • Ist im Grunde im Standard sogar definiertes Verhalten oO
  • Am Ende kann man sehr viel Spaß nur mit statischem HTML haben :-)
  • Was ist das DOM überhaupt
    • Ein API zwischen einem Dokument und einer beliebigen Scripting-Sprache
    • Ziel des DOM: Bereitstellung von Feature-Parität, dabei müssen einige Features explizit ausgeschlossen werden
    • Bsp: CSS-History-Stealing (http://jeremiahgrossman.blogspot.de/2006/08/i-know-where-youve-been.html)
  • SVG bringt möglicherweise ganz neue Probleme mit
    • Timing Attacke von Paul Stone mit Hilfe von SVG Filtern: http://www.contextis.com/documents/2/BrowserTimingAttacks.pdf
  • Manchmal gibt es auch keinen echten Fix für Lücken, und selbst wenn, es gibt ja jetzt auch CSS Shader ;-)
  • Wie geht man vor um Lücken zu finden
    • Viel Kreativität notwendig
    • Man hört von einem Feature und denkt sich, da muss doch was gehen und dann wird halt so lange gebohrt bis man was findet ;-)
  • DOMPurify (https://github.com/cure53/DOMPurify) ist ein Client-seitiger Sanitzer, um verschiedenen Angriffen zu begegnen
  • Reaktion auf der Konferenz war vor allem gefasst :-)

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

Kommentare


Neuer Kommentar