Security für Software Engineers

Im Rahmen des Schulungsprogramms zum Certified Method Park Engineer (CMPE) fand erstmals unser neu aufgelegter Kurs zum Thema Security statt. Hierzu fanden sich elf Engineers ein, um ihr Bewusstsein für Sicherheitsaspekte bei der Softwareentwicklung zu schärfen und ihre Erfahrungen zu teilen.

In einer kurzen Vorstellungsrunde machten wir uns ein Bild über die aktuelle Situation und die bisherigen Berührungspunkte mit der Thematik in den jeweiligen Projekten. Danach ging es direkt ans Eingemachte und wir begannen mit einem Überblick einiger Grundprinzipien des sicheren Software-Entwurfs. Besprochen wurden hier beispielsweise das Priorisieren von Schwachstellen nach Ausnutzbarkeit (Securing the Weakest Link) und Risiken von unzureichendem Output Encoding.

Threat Modeling und Attack Trees

Anschließend gab Richard eine Einführung in die verschiedenen, möglichen Vorgehensweisen beim Threat Modeling. Das Ziel ist hier, sich ein umfassendes Bild von den Sicherheits-Risiken zu machen, denen das eigene System ausgesetzt ist. Ein möglicher Ansatz ist, die Datenflüsse in einem Diagramm zu erfassen und zu visualisieren. Anschließend können mit Hilfe des STRIDE-Modells die vorliegenden Bedrohungen  identifiziert und klassifiziert werden.

Eine alternative Methode im Threat Modeling ist das Ausarbeiten eines Attack Trees. Hier betrachtet man das eigene System aus Sicht eines Angreifers. Ausgehend von einem bestimmten, zentralen Angriffsziel – beispielsweise das Abgreifen sensibler Daten – erarbeitet man die in Frage kommenden Zwischenschritte, um dieses Ziel zu erreichen. Auf dieser Basis bewertet man die verschiedenen Pfade zum Ziel nach Faktoren wie Aufwand und Kosten, um schlussendlich die wichtigsten Angriffsvektoren zuerst zu adressieren.

Diese Methodiken durften die Teilnehmer in einer praktischen Übung erproben. Als Beispiel diente uns ein vernetztes Entertainment-System. Dieses besteht aus einem Raspberry Pi mit einem Kodi, einem NAS als Medienspeicher sowie einer App zur Fernsteuerung.

Weiter ging es dann mit der Vorstellung möglicher Ansätze zur Bewertung von Sicherheitsrisiken (CVSS, DREAD und OWASP Risk Rating). Anschließend befassten wir uns mit dem Prinzip der Attack Surface Reduction. Es folgte eine Einführung in den Secure Development Lifecycle (SDL) von Microsoft. Danach gab es einen etwas technischeren Abstecher in die Herausforderungen von Software Updates, insbesondere bei der Entwicklung von embedded devices.

Live-Hacking Demo

Zum Abschluss inszenierten wir eine kleine Live-Hacking-Vorführung eines CSRF-Exploits. Das Rollenspiel setzte sich zusammen aus einem Blog-Betreiber als Opfer, einem unbeteiligten Kommentator aus dem Publikum, welcher auch Fan des Texteditors Emacs ist, sowie schließlich dem Angreifer, ein radikalisierter Nutzer des Konkurrenz-Editors vim. Unter dem Vorwand einer humorigen Email an den Blog-Admin (ein harmlos aussehender Link auf den Lächelblumenkohl) nutzte der Angreifer eine erst vor kurzem entdeckte Schwachstelle in seiner Blogsoftware aus und löschte so hinterlistig den Kommentar des Emacs-Nutzers.

Nach diesem offiziellen Ende fand sich noch eine kleinere Runde bei einem letzten Kaffee zusammen. Dabei vertieften wir die technischen Details der ausgenutzten Lücke und die Frage der Wichtigkeit von regelmäßigen Software Updates.