Sicherheitslücke

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

EineSicherheitslückeoderSchwachstelleist im Gebiet derInformationssicherheiteinFehler in einer Softwareodereiner Hardware,durch den ein Programm mit Schadwirkung (Exploit) oder ein Angreifer in einComputersystemeindringen kann.

Eine Sicherheitslücke stellt eine Bedrohung für die Sicherheit eines Computersystems dar. Es besteht dasRisiko,dass die Sicherheitslücke ausgenutzt und das betroffene Computersystem kompromittiert werden kann. Sicherheitslücken entstehen unter anderem durch den unzureichendenSchutzeinesComputersvor Angriffen aus demNetz(beispielsweise mangelsFirewalloder andererSicherheitssoftware) sowie durchProgrammierfehlerimBetriebssystem,Webbrowseroder anderenSoftwareanwendungen,die auf dem System betrieben werden.

Sicherheitslücken können im Entwicklungsprozess entstehen, wenn Sicherheitsaspekte in der Planung, Konzeption und Entwicklung vernachlässigt werden und Sicherheitsvorgaben nicht ausreichend berücksichtigt werden, z. B. als Qualitätsziele. Des Weiteren ergeben sich Sicherheitslücken aus Fehlern, die auf Grund der Komplexität von Softwaresystemen im Entwicklungsprozess entstehen können. Grobe Schätzungen zeigen, dass ein Programmierer pro 1000 Programmzeilen einen Fehler erzeugt, das entspricht einemPromilleFehlerhäufigkeit;bei 1.000.000 Zeilen sind also etwa 1000 Fehler zu erwarten. Falls beimAlpha- und Beta-Prozessnicht alle Fehler gefunden werden, entsteht ein fehlerhaftes Produkt.

Viele Fehler werden nie entdeckt, da der Fehlergehalt gering ist oder die Auswirkung erst bei längerer Laufzeit des Programms Schaden erzeugen würde. In hochkomplexen Programmen werden solche einfachen Fehler bei Entdeckung zunächst nur dokumentiert und erst später behoben. Dies nicht nur aus Kostengründen, sondern auch deshalb, da jede zur Behebung notwendige Änderung am Programmcode wiederum Quelle neuer Fehler sein kann. Manche Fehler erzeugen jedoch schwerwiegende Sicherheitslücken, ohne dass dies sofort zu einem kompletten Absturz führt.

Derartige Sicherheitslücken sind symptomatisch für Programme, welche mitProgrammiersprachengeschrieben wurden, die in Hinblick auf Performance optimiert sind (beispielsweiseCoderAssembler) und aufgrund ihres Programmiermodells anfällig für Fehler sind (Stichwort:Zeigerarithmetik). Durch die weite Verbreitung von derartigen Programmiersprachen, dem hohen Zeitdruck in der Softwareerzeugung, verbunden mit dem ausgeprägten Kostendruck der Softwareerzeugerfirmen und dem wenig sensiblen Umgang mit dem Thema sichere Software sind Sicherheitslücken eher die Regel als die Ausnahme.

Ein häufig genanntes Problem sind vor allem Softwareangebote vonHardwareherstellernzu ihren Produkten, welche oftmals nur aus Marketinggründen bei bestimmten Produkten beiliegen (vergleicheVideoschnittsoftwarebeiCamcordern). Durch kostengünstige Entwicklung und dadurch schlechte Programmierung werden eine Vielzahl vonProgrammfehlernund Sicherheitslücken geschaffen, die vor allem den Heimanwenderbereich betreffen. Erschwerend kommt hinzu, dass Hardwarefirmen oft nicht auf die Entwicklung von Anwendungssoftware spezialisiert sind, daher Entwicklungsaufträge an Fremdfirmen und somit dieProduktqualitätauch nicht mehr ohne weiteres selbst überprüfen können. Zum andern sind die Fremdfirmen unter Umständen noch nicht einmal auf die Entwicklung der speziellen Software spezialisiert. Diese Faktoren führen dazu, dass immer wieder neue, fehlerbelastete Software auf den Markt kommt, anstatt dass alte Software weiterentwickelt und verbessert wird.[1]

Einige Fehler könnten heute einfach vermieden werden, wenn statt der sehr systemnahen Sprachen, die eine direkte Adressierung von Speicherbereichen zulassen, Programmiersprachen wie zum BeispielRustverwendet werden. Einige Entwickler des sehr viel im Serverbereich verwendete BetriebssystemLinuxüberlegen Rust für einzelne Kernel-Module zu verwenden.[2]Microsoft hat ebenfalls Projekte zum Umschreiben von Low-Level-Komponenten von Windows, die ursprünglich in C und C++ geschrieben waren.[3]Das Unternehmen AMD suchte in Stellenanzeigen nach Mitarbeitern, welche neueRadeon-Treiber in Rust schreiben sollen.[4]

AlsZero-Day(auch0day) wird eine Sicherheitslücke bezeichnet, für die noch kein Patch des Herstellers der Komponente verfügbar ist.[5][6]

Diese Programmfehler ermöglichen es unter Umständen einem Angreifer zum Beispiel mit einemExploitin ein Computersystem einzudringen und dort Programme auszuführen, die schaden können. Einer der häufigsten Fehler, der zum Eindringen in Computersysteme benutzt wird, ist derPufferüberlauf.Mangelnde oder überhaupt fehlende Überprüfung der kopierten Datenmenge führt zum Überschreiben anderer Programmteile, was von Angreifern gezielt zum Verändern des Programms oder Einbringen fremder Programmteile benutzt wird.

Bei vorhandenenHardwarefehlernkann durch Anpassung der darauf laufenden Software die Ausnutzung verhindert oder erschwert werden. So werden bei Hardware-Designfehlern entwederPatchesamMikrocodeder Prozessoren selbst oderWorkaroundsin der auf den Systemen laufenden Software, oder beides in Kombination realisiert. Nach der 2018 veröffentlichten Entdeckung der SicherheitslückenMeltdownundSpectremussten auch in großem Umfang dieBetriebssystemeund diverseAnwendungsprogrammeangepasst werden, allerdings konnte der Fehler ohne eine veränderte Funktionsweise des Prozessors selbst (u. a. durch angepassten Mikrocode) nicht vollständig beseitigt werden. Besonders auf älteren Prozessoren, die keineFirmware-Aktualisierungenmehr erhielten, kann eine Ausnutzung der Sicherheitslücke daher nicht verhindert werden.

In so genanntenClosed-Source-Anwendungen ist es die Aufgabe des Herstellers des Programms, die Sicherheitslücke durch einenPatchoder die Bereitstellung einer neuen, fehlerbereinigten Version zu beheben. Die Bereinigung ist nicht zwingend und kann unterbleiben, wenn z. B. der Supportzyklus für das Produkt abgelaufen ist oder der Hersteller die Sicherheitslücke nicht als solche anerkennt und keinen Handlungsbedarf sieht.

BeiOpen Sourceund freier Software sind es oftmals mehrere Entwickler (meist diejenigen, die schon länger an dieser Software beteiligt sind), verstreut auf der ganzen Welt, die einen Patch dafür schreiben, sobald der Fehler entdeckt und veröffentlicht wurde. Gerade bei großen Open-Source-Projekten, wie z. B.Linuxgibt es meist kurz nach der Entdeckung der Lücke Patches, um diese zu beheben.

Zu den Sicherheitslücken mit großem Bekanntheitsgrad gehören:

Wiktionary: Sicherheitslücke– Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Sicherheitslücken werden unter anderem publiziert auf:

  1. ACM SIGSOFT SEN: ACM Fellow David Lorge Parnas.28. Februar 2019, archiviert vomOriginal(nicht mehr online verfügbar) am28. Februar 2019;abgerufen am 2. Dezember 2019.
  2. Silke Hahn:Linux-Entwicklung: Pläne zu Rust-Code für den Linux-Kernel werden konkreter.In:heise online.14. Juli 2020,abgerufen am 15. April 2021.
  3. Silke Hahn:Experimente mit Rust: Microsoft präsentiert Public Preview von Rust/WinRT.In:heise online.4. Mai 2020,abgerufen am 15. April 2021.
  4. Michael Larabel:AMD Is Hiring To Work On New Radeon Driver Tooling Written In Rust - Phoronix.In:phoronix.com.24. September 2020,abgerufen am 15. April 2021(englisch).
  5. Was ist ein Zero-Day-Exploit?In:www.proofpoint.com.2024,abgerufen am 21. Juni 2024.
  6. Annabell Brockhues, Felicitas Boeselager:Zero Day in Südwestfalen (1/5).Hackeralarm bei Nacht.DLF,17. Juni 2024,abgerufen am 21. Juni 2024.
  7. https://portal.msrc.microsoft.com/de-de/security-guidance/advisory/CVE-2019-0708.Abgerufen am 2. Dezember 2019(englisch).