{"id":1345,"date":"2023-04-21T00:48:00","date_gmt":"2023-04-20T22:48:00","guid":{"rendered":"https:\/\/www.felix-bauer-it.de\/blog\/?p=1345"},"modified":"2023-04-25T13:51:09","modified_gmt":"2023-04-25T11:51:09","slug":"risikomanagement-mit-stride-und-dread","status":"publish","type":"post","link":"https:\/\/www.felix-bauer-it.de\/blog\/risikomanagement-mit-stride-und-dread\/","title":{"rendered":"Risikomanagement mit STRIDE und DREAD (IT-Sicherheit)"},"content":{"rendered":"<p>Sicherheit ist keine Funktion, die nachtr\u00e4glich in ein Softwareprodukt eingebaut werden kann. Durch die enge Vernetzung sind Computer heute ein leichtes Angriffsziel und die Verbreitungsgeschwindigkeit von Sch\u00e4dlingen hat enorm zugenommen. Auf der anderen Seite ist es nahezu unm\u00f6glich, 100% sichere Software zu schreiben. Die Kunst besteht darin, Angriffsszenarien zu kennen und deren Bedrohungspotential in Bezug auf die eigenen Anwendungen einzusch\u00e4tzen. Nur dann k\u00f6nnen im Falle eines Angriffs wirksame Ma\u00dfnahmen ergriffen werden. Kurzum: Sicherheit ist ein Prozess!<\/p>\n\n\n\n<p>Oder anders ausgedr\u00fcckt: Es gewinnt nicht derjenige, der Bedrohungen am besten verhindern kann, sondern derjenige, der am besten mit den Risiken umgeht.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Ver\u00e4nderte Entwicklung<\/h2>\n\n\n\n<p>Wenden wir uns zun\u00e4chst der Frage zu, warum Anschl\u00e4ge heute eine solche Bedrohung darstellen. Die Welt hat sich ver\u00e4ndert - auch im Bereich der Sicherheit. Im Zeitalter ohne Internet lief alles in einem geschlossenen lokalen System ab. Heute holen sich Programme Updates dynamisch aus dem Web oder werden komplett \u00fcber das Internet installiert - die Vision vom \u201eInternet aus der Steckdose\u201c ist Realit\u00e4t geworden. Web-Applikationen und Web-Services erh\u00f6hen das Sicherheitsrisiko zus\u00e4tzlich. Damit \u00e4ndern sich die Rahmenbedingungen grundlegend:<\/p>\n\n\n\n<ul><li>Sicherheitsbedrohungen sind st\u00e4ndig pr\u00e4sent, da man \u201ealways online\u201c ist. Dadurch sind v\u00f6llig neue Angriffsszenarien entstanden, deren Auswirkungen beim Design von Anwendungen (noch) nicht ber\u00fccksichtigt wurden. Prominentestes Beispiel ist der sogenannte Buffer Overrun, mit dem fremder Code in ein System eingeschleust und ausgef\u00fchrt werden kann. In einer geschlossenen Umgebung ein beherrschbares Problem, in einer offenen Umgebung nicht mehr beherrschbar.<\/li><li>Das Internet ist ein ideales Medium f\u00fcr die Verbreitung von Angriffswerkzeugen. Nur der allererste Angreifer muss technisch versiert sein, alle anderen k\u00f6nnen seine Software z. B. per Download nutzen. Sobald der erste Angreifer seine Werkzeuge zum Download freigegeben hat, sind diese praktisch nicht mehr kontrollierbar. Mit anderen Worten: Computerbasierte Angriffe bedeuten heute nichts anderes, als dass die T\u00e4ter keine technischen Kenntnisse mehr haben m\u00fcssen, um erfolgreich zu sein. Man denke nur an die rasante Verbreitung von Schadskripten.<\/li><li>Virenscanner helfen in absehbarer Zeit nicht mehr weiter, da die Abst\u00e4nde zwischen dem Auftreten einer Sicherheitsl\u00fccke und einem Angriff, der diese L\u00fccke ausnutzt, immer k\u00fcrzer werden.<\/li><li>Die Vernetzung hat zu immer komplexeren Systemen gef\u00fchrt. Eine einzelne Person ist nicht mehr in der Lage, alle Interna zu kennen. Das Wissen, wie Systeme miteinander interagieren, wird zum entscheidenden Faktor.<\/li><li>Man kann sich nur gegen Bedrohungen sch\u00fctzen, die man bereits kennt. Da es aber unm\u00f6glich ist, 100% sichere und fehlerfreie Software zu entwickeln, bleibt nur eine M\u00f6glichkeit: Sie m\u00fcssen die Anwendungsf\u00e4lle (Use Cases) kennen! Nur dann k\u00f6nnen Sie systematisch vorgehen und Ihre Anwendung auf Schwachstellen untersuchen.<\/li><\/ul>\n\n\n\n<p>Zusammenfassend kann gesagt werden, dass die Prozesssicht enorm an Bedeutung gewinnt. Nur wenn man die Use Cases kennt, kann man die Schwachstellen analysieren. Es ist nicht damit getan, Use-Cases zu erfassen. Ein Beispiel: Das Abh\u00f6ren der Kommunikation zweier Partner kann durch Verschl\u00fcsselung verhindert werden. Das Problem dabei: Ein Angreifer \u00fcberwacht die Kommunikation nicht passiv!<\/p>\n\n\n\n<p>Er bricht in eine Firewall ein, er manipuliert ein digitales Netzwerk, er stiehlt mit fremden Zugangsdaten Geld von irgendwelchen Konten. Aber es geht nicht um \u201ealles oder nichts\u201c. Wenn man eine Kommunikation sch\u00fctzen will, funktioniert das so: Entweder ich kann mith\u00f6ren oder nicht. Ein Angreifer hingegen bricht vielleicht in ein Netzwerk ein und stiehlt ein bisschen Geld, aber eben nicht alles. Oder er bricht in ein Netzwerk ein und schaut sich vielleicht f\u00fcnf Minuten um, bevor er entdeckt wird.<\/p>\n\n\n\n<p>Kurz: Angriffe funktionieren fast nie nach dem Prinzip \u201ealles oder nichts\u201c. Deshalb reicht es nicht aus, nur Anwendungsf\u00e4lle und Ma\u00dfnahmen zu kennen. Oder um auf das Beispiel zur\u00fcckzukommen: Die interessante Frage ist: Wenn es einem Angreifer gelungen ist, in ein Netzwerk einzudringen - wie lange darf er unentdeckt bleiben, bevor er Schaden anrichten kann? F\u00fcnf Minuten oder l\u00e4nger? Ist es vielleicht sogar egal, weil er keinen Zugriff auf wichtige Daten hat?<\/p>\n\n\n\n<p>Kurz: Sicherheit ist Risikomanagement! Nur wer die Risiken eines Angriffs f\u00fcr seinen speziellen Anwendungsfall kennt, hat eine Chance auf erfolgreiche Abwehr.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ID0EZC\">Ein Prozess muss her \u2013 STRIDE und DREAD!<\/h3>\n\n\n\n<p>Zu dieser Erkenntnis kam Microsoft bei der Entwicklung des Betriebssystems Windows 2000. Im Zuge dieses Projektes wurde festgestellt, dass gravierende Sicherheitsl\u00fccken in Bezug auf Internetszenarien bestehen. Als Hauptproblem hat sich herausgestellt, dass das Bewusstsein f\u00fcr Sicherheit erst noch geschaffen werden muss: Auch hier ein Beispiel: Das World Trade Center wurde unter h\u00f6chsten Sicherheitsvorkehrungen gebaut. Niemand hatte jedoch damit gerechnet, dass es mit vollgetankten Passagierflugzeugen angegriffen werden k\u00f6nnte. Dieses Bedrohungsszenario schien zu abwegig.<\/p>\n\n\n\n<p>Und genau deshalb wurde die Entwicklung von Windows f\u00fcr einen Monat gestoppt. Um die Entwickler zu schulen, um das Sicherheitsbewusstsein zu sch\u00e4rfen und um die Aufmerksamkeit f\u00fcr Sicherheitsprobleme zu erh\u00f6hen.<\/p>\n\n\n\n<p>Das erh\u00f6ht zwar langfristig die Qualit\u00e4t des produzierten Codes, geht aber zun\u00e4chst mit einer erh\u00f6hten Anzahl von Bugfixes einher. Die Folge: die eingangs erw\u00e4hnte \u201ePatch-Welle\u201c als Konsequenz der neuen Denkweise in der Praxis.<\/p>\n\n\n\n<p>Weit weniger \u00f6ffentlichkeitswirksam wurde parallel zu dieser Vorgehensweise ein Prozess zur Identifikation von Sicherheitsl\u00fccken und deren Schadensrisiko implementiert, der f\u00fcr jedes Produktteam innerhalb von Microsoft verbindlich ist. Er erm\u00f6glicht es allen Beteiligten, Sicherheitsl\u00fccken nicht nur zu dokumentieren, sondern auch darzustellen, ob und wie hoch ihr Gef\u00e4hrdungspotenzial ist und welche Gegenma\u00dfnahmen zu ergreifen sind. Die verwendeten Methoden tragen die Bezeichnungen STRIDE und DREAD.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">STRIDE<\/h2>\n\n\n\n<p>STRIDE ist eine Abk\u00fcrzung f\u00fcr folgende Begriffe:<\/p>\n\n\n\n<ul><li><strong>S<\/strong>poofing Identity<\/li><li><strong>T<\/strong>ampering with Data<\/li><li><strong>R<\/strong>epudiation<\/li><li><strong>I<\/strong>nformation Disclosure<\/li><li><strong>D<\/strong>enial of Service<\/li><li><strong>E<\/strong>levation of Privilege<\/li><\/ul>\n\n\n\n<p>Zum besseren Verst\u00e4ndnis sollen diese Begriffe nun etwas n\u00e4her erl\u00e4utert werden.<\/p>\n\n\n\n<p><strong>Spoofing Identity<\/strong><br>Ein Angreifer t\u00e4uscht eine falsche Identit\u00e4t vor. Es gibt zwei Varianten:<\/p>\n\n\n\n<ul><li><strong>Vort\u00e4uschen einer falschen Client Identit\u00e4t<\/strong><ul><li>Zugriff auf einen Server als legitimer Benutzer<\/li><li>Zugriff auf sensitive Daten<\/li><\/ul><\/li><li><strong>Vort\u00e4uschen einer falschen Server Identit\u00e4t<\/strong><ul><li>Einem Client einen legitimen Server vort\u00e4uschen<\/li><li>Vertrauliche Daten von einem Client erfragen<\/li><\/ul><\/li><\/ul>\n\n\n\n<p><strong>Gegenma\u00dfnahmen<\/strong>: Starke Authentisierung, z. B. durch Kryptographie und Multi-Faktor-Authentisierung<\/p>\n\n\n\n<p><strong>Tampering with Data<\/strong><br>Ein Angreifer manipuliert Daten. Auch hier gibt es im Wesentlichen zwei Formen:<\/p>\n\n\n\n<ul><li><strong>Manipulieren von persistenten Daten<\/strong><ul><li>Password-Datenbanken<\/li><li>Modifizieren von Preisen in einem Online-Shop<\/li><li>Modifizieren von Audit-Logs, um Spuren zu verwischen<\/li><\/ul><\/li><li><strong>Manipulieren von Netzwerk-Paketen<\/strong><\/li><\/ul>\n\n\n\n<p><strong>Gegenma\u00dfnahmen:<\/strong>&nbsp;Hash-Codes, digitale Signaturen, Verschl\u00fcsselung, Verwendung geeigneter Netzwerkprotokolle<\/p>\n\n\n\n<p><strong>Repudiation<\/strong><br>Ein Angreifer f\u00fchrt eine Handlung aus, die das Opfer nicht beweisen kann. Ein Angreifer k\u00f6nnte behaupten:<\/p>\n\n\n\n<ul><li>Eine Datei nicht gel\u00f6scht zu haben<\/li><li>Eine Bestellung nicht get\u00e4tigt zu haben<\/li><li>Ware nicht entgegengenommen zu haben<\/li><\/ul>\n\n\n\n<p><strong>Gegenma\u00dfnahmen:<\/strong>&nbsp;Pr\u00fcfprotokolle, Empfangsbest\u00e4tigungen, digitale Signaturen, Zeitstempel<\/p>\n\n\n\n<p><strong>Information Disclosure<\/strong><br>Ein Angreifer sieht Daten, die er nicht sehen sollte. Dazu geh\u00f6ren<\/p>\n\n\n\n<ul><li>Lokale Dateien<\/li><li>Daten, die zwischen Rechnern \u00fcbertragen werden<\/li><li>Unautorisierte Datenbank-Zugriffe<\/li><li>Informationen \u00fcber die Infrastruktur<\/li><li>Sogar Fehlermeldungen sind vertrauliche Informationen<\/li><\/ul>\n\n\n\n<p><strong>Gegenma\u00dfnahmen:<\/strong>&nbsp;Starke Authentifizierung, Zugangskontrolle, Verschl\u00fcsselung, sensibler Umgang mit Informationen<\/p>\n\n\n\n<p><strong>Denial of Service (DoS)<\/strong><br>Ein Angreifer st\u00f6rt die Verf\u00fcgbarkeit einer Anwendung. Dies kann zum Beispiel geschehen durch:<\/p>\n\n\n\n<ul><li>Distributed Denial of Service Attacks (DDoS)<\/li><li>Ausnutzen von Race conditions<\/li><\/ul>\n\n\n\n<p>Allgemeines Ziel ist der Verbrauch von Bandbreite, Speicher und CPU-Zyklen.<\/p>\n\n\n\n<p><strong>Gegenma\u00dfnahmen:<\/strong>&nbsp;Verf\u00fcgbarkeit und Zuverl\u00e4ssigkeit erh\u00f6hen<\/p>\n\n\n\n<p><strong>Elevation of Privileges<\/strong><br>Ein Angreifer findet einen Weg, seine Berechtigungen zu erh\u00f6hen.<\/p>\n\n\n\n<ul><li>Administrative Rechte sind das End-Ziel<\/li><li>\u201cBuffer Overflow\u201d ist das klassische Beispiel<\/li><li>SQL Injection ist insbesondere bei Webanwendungen ein bew\u00e4hrtes Mittel<\/li><\/ul>\n\n\n\n<p><strong>Gegenma\u00dfnahmen:<\/strong>&nbsp;Robuster Code, Least Privilege, Eingabevalidierung<\/p>\n\n\n\n<p>Anhand dieser Kriterien wird jede Anwendung auf Sicherheitsl\u00fccken untersucht und die entsprechenden Ma\u00dfnahmen dokumentiert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"> DREAD<\/h2>\n\n\n\n<p>In einem zweiten Schritt werden die m\u00f6glichen Gef\u00e4hrdungen mit Hilfe von DREAD bewertet und priorisiert. Konkret bedeutet dies, dass bei der Risikobewertung folgende Fragen ber\u00fccksichtigt werden<\/p>\n\n\n\n<ul><li><strong>D<\/strong>amage (Schadens-) potenzial:&nbsp;Wie hoch ist der Schaden, wenn die Sicherheitsl\u00fccke ausgenutzt wird?<\/li><li><strong>R<\/strong>eproducibility (Reproduzierbarkeit):&nbsp;Wie leicht l\u00e4sst sich der Angriff reproduzieren?<\/li><li><strong>E<\/strong>xploitability (Ausnutzbarkeit):&nbsp;Wie einfach ist ein Angriff?<\/li><li><strong>A<\/strong>ffected (betroffene) Benutzer:&nbsp;Wie viele Nutzer k\u00f6nnten ungef\u00e4hr betroffen sein (in Prozent)?<\/li><li><strong>D<\/strong>iscoverability (Auffindbarkeit):&nbsp;Wie leicht ist die Sicherheitsl\u00fccke zu finden?<\/li><\/ul>\n\n\n\n<p>Die Bewertung sollte einem einfachen System folgen. Ein einfaches Bewertungsschema wie hoch (1), mittel (2) und gering (3) ist in der Regel ausreichend. Nachdem Sie sich die oben genannten Fragen gestellt haben, addieren Sie die Werte (1 bis 3) f\u00fcr die Gef\u00e4hrdung. Das Ergebnis kann zwischen 5 und 15 liegen. Das Risiko von Bedrohungen mit einem Gesamtwert von 12 bis 15 ist als hoch einzustufen, 8 bis 11 steht f\u00fcr ein mittleres Risiko und ein Wert von 5 bis 7 f\u00fcr ein geringes Risiko. Tabelle 1 zeigt zwei Beispiele.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Bedrohung<\/th><th>D<\/th><th>R<\/th><th>E<\/th><th>A<\/th><th>D<\/th><th>Gesamt<\/th><th>Bewertung<\/th><\/tr><tr><td>Angreifer erh\u00e4lt Anmeldeinformationen durch \u00dcberwachung des Netzwerks.<\/td><td>3<\/td><td>3<\/td><td>2<\/td><td>2<\/td><td>2<\/td><td>12<\/td><td>Hoch<\/td><\/tr><tr><td>SQL-Befehle werden in die Anwendung eingeschleust.<\/td><td>3<\/td><td>3<\/td><td>3<\/td><td>3<\/td><td>2<\/td><td>14<\/td><td>Hoch<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Tabelle 1: DREAD-Bewertung<\/strong><\/p>\n\n\n\n<p>Die Anwendung dieser Verfahren f\u00fchrt zu einem klaren und f\u00fcr alle Beteiligten nachvollziehbaren Prozess der Identifizierung und Bewertung von Sicherheitsl\u00fccken hinsichtlich des Risikos im laufenden Projekt und erm\u00f6glicht so eine systematische Vorgehensweise bei der Reaktion auf Angriffe bereits im Vorfeld. Mit anderen Worten: Sicherheit muss bereits in der Entwurfsphase eines Softwaresystems integraler Bestandteil sein. Dies bedeutet, dass:<\/p>\n\n\n\n<ul><li>Assets und Sicherheits-Ziele formuliert werden<\/li><li>Eine Risiko\/Bedrohungs-Analyse durchgef\u00fchrt wird<\/li><li>Bedrohungen priorisiert werden<\/li><li>Gegenma\u00dfnahmen implementiert werden<\/li><li>\u00dcberwachungs- und Reaktionsma\u00dfnahmen entworfen, implementiert und getestet werden.<\/li><\/ul>\n\n\n\n<p>Dies ist jedoch keine statische Angelegenheit. Bei jeder \u00c4nderung der Software m\u00fcssen diese Strategien neu \u00fcberdacht werden..<\/p>\n\n\n\n<p>Die Umsetzung dieses Prozesses f\u00fchrte bei Microsoft zun\u00e4chst dazu, dass immer mehr Sicherheitsl\u00fccken entdeckt und behoben wurden. Die Folge war zun\u00e4chst eine erh\u00f6hte Anzahl von Patches.<\/p>","protected":false},"excerpt":{"rendered":"<p>Sicherheit ist keine Funktion, die nachtr\u00e4glich in ein Softwareprodukt eingebaut werden kann. Durch die enge Vernetzung sind Computer heute ein leichtes Angriffsziel und die Verbreitungsgeschwindigkeit von Sch\u00e4dlingen hat enorm zugenommen. Auf der anderen Seite ist es nahezu unm\u00f6glich, 100% sichere Software zu schreiben. Die Kunst besteht darin, Angriffsszenarien zu kennen und deren Bedrohungspotential in Bezug...<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/posts\/1345"}],"collection":[{"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/comments?post=1345"}],"version-history":[{"count":22,"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/posts\/1345\/revisions"}],"predecessor-version":[{"id":2220,"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/posts\/1345\/revisions\/2220"}],"wp:attachment":[{"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/media?parent=1345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/categories?post=1345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.felix-bauer-it.de\/blog\/wp-json\/wp\/v2\/tags?post=1345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}