Freitag, 19. April 2024

Archiv

IT-Sicherheit
So kommen die Bugs in die Software

Auch bei Software, die schon Jahre lang auf dem Markt ist, werden regelmäßig Sicherheitslücken entdeckt. Eigentlich müsste das in Zeiten von Regeln für sicheres Programmieren nicht mehr vorkommen. Doch es gibt zu wenig Anreize für Programmierer, einen zuverlässigen Code zu schreiben.

Von Achim Killer | 26.07.2014
    "In 2001 we experiended in the Internet the Code Red Worm",
    erinnert sich Steve Lipner. Er ist bei Microsoft dafür zuständig, dass Sicherheitslücken möglichst gar nicht entstehen. Das Bewusstsein dafür geweckt hat vor über einem Jahrzehnt Code Red. Der Wurm verbreitete sich über Microsoft's Internet Information Server, einem in der Sprache C++ geschriebenen Web-Server.
    "C und C++ stellen Befehle zum Beispiel zum Kopieren von Zeichenketten zu Verfügung, ohne dass dabei geprüft wird, ob die vorgegebenen Längen eingehalten werden",
    erläutert Professor Claudia Eckert vom Lehrstuhl für Sicherheit in der Informatik der TU München. Dieses Defizit der beiden beliebten Programmiersprachen ist ein Grund für die am weitesten verbreitete Software-Schwachstelle, den Puffer-Überlauf, den Buffer-Overflow. Die Software liest mehr Zeichen ein, als der Puffer, der dafür reservierte Bereich des Arbeitsspeichers, fasst, wirft die überzähligen Zeichen nicht einfach weg, sondern überschreibt damit andere Teile des Speichers. Von dort aus können sie dann, wenn sie mit krimineller Intelligenz ausgesucht worden sind, als Schadcode ausgeführt werden.
    Microsoft hat nach Code Red die Software-Produktion angehalten und neu organisiert. In allen Phasen des Entwicklungsprozesses spielt jetzt der Sicherheitsaspekt eine zentrale Rolle, sagt Steve Lipner:
    "Wir nennen diese Vorgehensweise den Security Development Lifecycle. Sie schließt ein, das Software-Design mithilfe von Bedrohungsszenarien zu analysieren, Regeln, welche Programmstrukturen Entwickler verwenden dürfen. Werkzeuge, um den Quellcode und den Maschinencode zu analysieren kommen zum Einsatz, um Schwachstellen zu entdecken und zu beseitigen."
    Microsoft empfiehlt sein Sicherheitskonzept auch anderen Herstellern
    Microsoft's Security Development Lifecycle ist das bekannteste Konzept zur Vermeidung von Software-Schwachstellen. Es verbietet etwa problematische C- und C++-Konstruktionen und verhindert so Buffer-Overflows. Der Konzern hat es im Netz veröffentlicht und empfiehlt es auch anderen Software-Häusern, nicht, um der Konkurrenz etwas Gutes zu tun, versteht sich, sondern weil auch Sicherheitslücken in Windows-Anwendungsprogrammen ein schlechtes Licht auf Microsoft werfen.
    Trotzdem haben sich sichere Programmiertechniken nicht durchgesetzt - aus sehr trivialen Gründen, findet Tyler Shields vom Beratungsunternehmen Forrester Research:
    "Es gibt wenige Anreize für Programmierer, sicheren Code zu schreiben. Es kostet Zeit und Energie, verlangt Wissen, das sie vielleicht nicht haben. Das macht es sehr schwierig für sie, sich auf sicheres Programmieren zu konzentrieren, anstatt – na ja – Code einfach rauszuhauen."
    Zwar werden in jüngster Zeit - relativ gesehen - weniger Programmierfehler gemacht als früher, räumt Tyler Shields ein. Aber absolut sind's halt doch mehr:
    "Die Fehlerrate ist reduziert worden. Statt zehn Fehler pro 1000 Zeilen Quellcode sind es heute vielleicht zwei Fehler pro 1000 Zeilen. Das Problem besteht darin, dass, während die Fehlerrate sinkt, die Menge des geschriebenen Codes sprunghaft ansteigt."