Windows Software Updates

Sichere Software-Updates

Als IT-Forensiker werden wir gerufen, wenn bereits in IT-Systeme eingebrochen wurde. Die Angreifer folgen dabei meistens dem gleichen Schema: Sie nutzen bekannte Schwachstellen in nicht aktualisierten Anwendungen aus. Dieses Problem kann von zwei Seiten aus be­kĂ€mpft werden. IT-Verantwortliche mĂŒssen einerseits dafĂŒr sorgen ihre Anwendungen aktuell zu halten. Andererseits sollten Softwarehersteller ihren Nutzern auto­matische Up­dates anbieten. Doch Vorsicht! Auto­matische Update­mechanis­men werden sowohl durch bös­artige Hacker als auch durch uns Penetrations­tester besonders genau untersucht. Denn sind sie unzu­reichend umge­setzt, eröffnen sie eine Vielzahl an potentiellen Angriffs­punkten. Deshalb wollen wir in diesem Artikel darauf eingehen, worauf man bei der Implemen­tierung von sicheren, auto­matischen Software-Update-Mechanismen achten muss.

Wer ist betroffen?

Software wird heutzutage vielfĂ€ltig eingesetzt. Zum einen sprechen wir von klassischer Desktop-Software, die zum Beispiel als exe-Datei auf einem Windows-PC installiert wird. Der PC selbst wird vom Betriebssystem gesteuert. Unter­halb des Betriebs­systems steht die Firmware als Binde­glied zur spezifischen Hard­ware. Sie kommt bei diversen elektro­nischen GerĂ€ten wie WLAN-Routern, Druckern und Haushalts­gerĂ€ten zum Einsatz. Bei mobilen GerĂ€ten wie Tablets und Smartphones kommt die Anwendungssoftware in Form von Apps daher. Diese werden in der Regel ĂŒber App-Stores unterschiedlicher Anbieter installiert. Eine besonders wichtige und kritische Software ist der Web­browser. Über ihn rufen wir Web­anwen­dungen auf. Hierbei handelt es sich beispiels­weise um Content-Management-Systeme (CMS) oder Customer-Relationship-Management-Systeme (CRM). Man spricht bei diesen Web­an­wendungen auch hĂ€ufig von Software-as-a-Service-Angeboten. Sie laufen zusammen mit anderen Diensten wie E-Mail-Diensten auf Servern.

Es gibt keine fehlerfreie Software

Nachdem wir gezeigt haben, wie vielfĂ€ltig der Einsatz von Software ist, stellt sich als nĂ€chstes die Frage, warum Soft­ware ĂŒberhaupt aktualisiert werden muss. Jeder Software-Entwickler kommt frĂŒher oder spĂ€ter zu der Einsicht, dass es aufgrund der Kom­plexitĂ€t von Soft­ware kaum möglich ist fehler­freie Soft­ware zu entwickeln. Manche Fehler be­ein­trĂ€chtigen nur die Funktio­nalitĂ€t der Soft­ware, andere fĂŒhren zu schweren Sicherheits­lĂŒcken. Werden diese Fehler bekannt, muss die Soft­ware aktu­alisiert werden und das Up­date zum Kunden gebracht werden. Im Fall von Software-as-a-Service-Lösungen (SaaS) muss sich zwar der End­kunde nicht um das Update kĂŒmmern, der SaaS-Anbieter ist dann aber in der Pflicht die Web­anwen­dungen auf seinen Servern zu aktuali­sieren.

Vom 0-Day zum Update

 Der Lebenszyklus einer Software-SicherheitslĂŒcke
Der Lebens­zyklus einer Software-SicherheitslĂŒcke

Die obige Grafik zeigt den Weg, den eine Sicherheits­lĂŒcke von ihrer Entstehung bis zur Behe­bung nimmt. Zum Zeitpunkt A wird der Fehler im Code der Soft­ware eingefĂŒgt, was in der Regel unbe­absich­tigt statt­findet. Der Fehler wird zum Zeit­punkt B mit der Installation der Soft­ware fĂŒr den Anwen­der relevant. Zum Zeitpunkt C wird der Fehler zum ersten Mal durch irgend­jemanden entdeckt. Dies kann der Hersteller selbst oder ein externer Dritter sein. Der Externe kann die SicherheitslĂŒcke fĂŒr sich behalten, sie dem Unternehmen melden, gewinnbringend auf dem Schwarzmarkt verkaufen oder direkt an die Öffentlich­keit damit gehen. Sobald der Hersteller von der Sicherheits­lĂŒcke erfĂ€hrt, hat er die Möglich­keit mit einem Patch den Fehler zu beheben. Dieser wurde zum Zeitpunkt D entwickelt und zum Zeitpunkt E veröffent­licht. Zum Zeitpunkt F wurde das Softwareupdate mit dem Bugfix schließlich vom Betreiber der Software eingespielt. Sein System ist jetzt nicht mehr fĂŒr die Sicher­heitslĂŒcke anfĂ€llig. Bevor diese veröffent­licht wurde (irgendwann zwischen Zeitpunkt C und E) spricht man von einem 0-Day. Dies ist eine Sicherheits­lĂŒcke, die nur dem Entdecker oder einem kleinen Personen­kreis bekannt ist. Nach Veröffent­lichung der Sicherheits­lĂŒcke gilt sie als allgemein bekannt. Sicherheits­forscher verzeichnen dann vermehrt Angriffe, die versuchen diese Sicherheits­lĂŒcke bei verwund­baren Systemen auszunutzen.

Prinzipien fĂŒr sichere Software-Updates

Als Software-Entwickler will man vermeiden Sicherheits­lĂŒcken ĂŒberhaupt in seinen Code einzubauen. Sind sie aber entstanden, soll der Zeit­raum zwischen Fund und Update möglichst kurz sein.

Sichere Software durch Secure Coding. Hochwertige Trainings fĂŒr Entwickler.

Um die Zeitspanne von der Veröffentlichung eines Software­updates bis zur Anwendung durch alle Benutzer möglichst klein zu halten, haben sich auto­matische Updates als Best Practice durchgesetzt. Bei der Umsetzung von auto­matischen Updates sollten allerdings die folgenden Punkte beachtet werden.

1. Automatische Updates per Default

Die Installation von Updates birgt stets das Risiko, dass Systeme gestört werden. Nicht umsonst galt unter System-Adminis­tratoren lange Zeit die Maxime „Never change a running system“. Dies zum Vorwand zu nehmen gar keine Sicherheitsupdates einzuspielen ist sehr gefĂ€hrlich – besonders dann, wenn die Systeme mit dem Internet verbun­den sind. Da es aber durchaus Szenarien gibt, in denen der Adminis­trator selbst den Zeitpunkt zum Ein­spielen eines Updates bestimmen können muss, sollte die Anwendung diese Option anbieten. In diesem Fall wird der Adminis­trator benachrichtigt, worauf er das Update zu einem Zeitpunkt seiner Wahl einspielen kann. Die Standard­variante sollte aber nach dem Security-By-Default-Prinzip das automatische Update fĂŒr sicherheits­kritische Patches sein.

2. Updates ĂŒber sichere KanĂ€le

Eine hĂ€ufig beobachtete Schwachstelle von Software­downloads und -updates ist der Down­load ĂŒber unver­schlĂŒsselte Verbindungen wie ĂŒber http. Hier kann durch einen Man-in-the-Middle-Angriff das Update durch eine Malware ausgetauscht werden. Gerade bei automatischen Updates, die möglicherweise ĂŒber ein unsicheres Netzwerk herunter­geladen werden, ist es wichtig auf sichere Transport­kanĂ€le wie https-Verbindungen zu setzen.

Neben der IntegritĂ€t der Software ist die VerfĂŒg­barkeit der Software­updates eine weitere Dimension von Software-Sicherheit. Damit Angreifer nicht per DDoS den Zugriff auf Updates unterbinden können, sollten die Updates ĂŒber ein breites Netzwerk (zum Beispiel ĂŒber Mirror-Server oder Bit­Torrent) zur VerfĂŒgung gestellt werden. Ebenso mĂŒssen Updates verifiziert werden, sodass sicher­gestellt werden kann, dass diese auch tatsĂ€chlich vom Hersteller stammen.

3. Verifizierte Updates

Updates werden von den Nutzern nicht immer von der Original-Quelle heruntergeladen und selbst diese könnte kompromittiert werden. Daher sollten Updates immer durch eine digitale Signatur verifiziert werden, die vor der Installation anhand des mit der Software ausgelieferten öffentlichen SchlĂŒssels ĂŒberprĂŒft wird. Zur Signierung von Software sind GnuPG oder andere moderne, auf elliptischen Kurven basierte krypto­graphische Verfahren geeignet. Bei besonders kritischer Open Source-Software hat sich zudem der Weg des nachvollziehbaren Build-Prozesses etabliert, um Mani­pulationen zwischen offenem Quellcode und gepackter Software zu erkennen. Um gezielte Angriffe auf einzelne Benutzer zu unterbinden, existiert außerdem noch die Möglich­keit ĂŒber ein öffentliches, nur beschreib­bares Log die Konsistenz der Updates zwischen allen Benutzern sicher­zu­stellen. Weiter­gehende Infor­mationen zur Umsetzung beschreibt das Dreieck der sicheren Code-Auslieferung.

Fazit: Sichere Software-Updates als Teil des Secure Development Lifecycles

Das Ausspielen von sicheren, automatischen Software-Updates ist kein triviales Problem. Es ist Teil eines sicheren Software-Entwicklungs­prozesses. Die aramido GmbH hilft Ihnen Sicherheit nach dem Prinzip von Security-by-Design entlang des gesamten Software-Lebenszykluses umzusetzen. Die Sicherheits­experten von aramido freuen sich darauf Sie bei Ihrem Software­entwicklungs­projekt zu beraten.

FĂŒgen Sie den ersten Kommentar hinzu