Was ist ein Sicherheitsfehler?
Eine Sicherheitslücke in der Computersoftware ist ein Fehler im programmierten Betrieb, durch den ein Benutzer unbeabsichtigt auf Funktionen, Ressourcen oder Daten zugreifen kann, die ansonsten vom Programm geschützt würden. Die Ursache für einen Sicherheitsfehler können Programmierfehler, ein falsches Verständnis externer Bibliotheken oder Versehen beim Übergang von einer Testversion eines Programms zu einer Release-Version sein. Es kann schwierig sein, einen Sicherheitsfehler zu diagnostizieren und zu reparieren, da es sich möglicherweise um eine Kombination mehrerer Aspekte des Programms handelt, von denen einige vorkompiliert werden könnten, ohne dass Programmierer den ursprünglichen Quellcode untersuchen können.
Eine der Hauptursachen für einen Sicherheitsfehler kann die Interaktion zwischen zwei verschiedenen Teilen des Computercodes sein, die möglicherweise nicht von derselben Person geschrieben wurden. Probleme können auftreten, wenn eine Funktion oder Klasse unbekannte oder unerwartete Aktionen ausführt, z. B. das Ändern einer Variablen, die einen Teil des Programmstatus enthält, oder das Ändern interner Eigenschaften, ohne die zugehörigen Elemente zu benachrichtigen. Dies kann dazu führen, dass andere Teile des Programms von Annahmen ausgehen oder vollständig umgangen werden, was zu einer Sicherheitslücke führt, die ausgenutzt werden kann. Von kommerziellen Softwareunternehmen entwickelte externe Bibliotheken können manchmal ein Sicherheitsproblem verursachen, insbesondere in Fällen wie grafischen Benutzeroberflächen (GUIs) und Netzwerkprotokoll-Wrappern, die eine große Menge an verborgenem Verarbeitungscode enthalten.
Andere Gründe, warum ein Sicherheitsfehler vorliegen könnte, sind einfache Programmierfehler und Probleme mit der Speicherzuordnung, die Codesegmente überschreiben oder Informationen aus dem Speicher in Bereiche verschütten können, in denen sie ausgenutzt werden können. Nicht entwickelte Funktionen in einem Programm können auch einen Sicherheitsfehler verursachen, indem sie eine Bedingung innerhalb des Programms zulassen, die die Ausführung an einen nicht abgeschlossenen Teil des Codes ohne die ordnungsgemäßen Sicherheitsüberprüfungen für die Eingabe und Ausgabe weitergibt. Je größer und komplexer ein Programm ist, desto höher ist die Wahrscheinlichkeit, dass ein Sicherheitsfehler im Code vorliegt.
Es gibt mehrere Möglichkeiten, um zu verhindern, dass ein Sicherheitsfehler in endgültige Softwareversionen übergeht. Einer der wichtigsten ist das Testen der Benutzer, bei dem viele Leute versuchen, mit dem Programm zu überprüfen, ob es richtig funktioniert. Die Verwendung von Software-Profilern - Programmen, die die Speichernutzung und andere Statistiken während der Ausführung der Software untersuchen und aufzeichnen - kann dabei helfen, einige interne Fehler zu finden, die zu Sicherheitsproblemen führen können. Sobald die Fehler erkannt und behoben wurden, veröffentlichen die meisten Unternehmen Updates oder Patches, mit denen die entdeckten Fehler in der bereits im Vertrieb befindlichen Software beseitigt werden.