Das Office of the National Cyber Director (ONCD) hat kürzlich einen neuen Bericht mit dem Titel „Back to the Building Blocks: A Path Toward Secure and Measurable Software” (Zurück zu den Bausteinen: Ein Weg zu sicherer und messbarer Software) veröffentlicht. Der Bericht ist eine der ersten wichtigen Ankündigungen des neuen ONCD-Direktors Harry Coker und liefert ein starkes Plädoyer für die Einführung speichersicherer Programmiersprachen.
Dieser neue Fokus resultiert aus dem Ziel, die Verantwortung für Cybersicherheit neu zu verteilen und Anreize zugunsten langfristiger Investitionen in Cybersicherheit umzugestalten. Speichersichere Programmiersprachen wurden auch als Ziel der Open-Source Software Security Initiative (OS3I) aufgenommen, die kürzlich einen neuen Bericht veröffentlicht hat.
Speicherfehler entstehen, wenn ein Programmierer Code schreibt, der ein Problem im Zusammenhang mit dem Speicherzugriff verursacht. Häufige Fehler treten bei Pufferüberläufen und hängenden Zeigern auf. Durch die Verwendung einer speichersicheren Programmiersprache wie Rust, Go, Java, Swift und Python können Entwickler keinen Code erstellen, der einen Speicherfehler verursacht, da die Sprache spezifische Eigenschaften wie Speicher- oder Typsicherheit beinhaltet. Wenn Entwickler Code in nicht speichersicheren Sprachen wie C und C++ schreiben, können sie unbeabsichtigt Code schreiben, der zu Speicherzugriffsfehlern führen kann. Anstatt die Fehler während der Kompilierungs- und Laufzeit zu erkennen, wie es bei speichersicheren Sprachen der Fall ist, gelangen die Fehler in die endgültige Version und verursachen Sicherheitsprobleme.
Während sich Cybersicherheit oft auf die Reaktion auf Bedrohungen konzentriert, beginnt die Risikominderung mit der Entwicklung von Praktiken, die Codefehler reduzieren, welche Sicherheitsprobleme verursachen können. Google berichtete, dass 70 % der schwerwiegenden Sicherheitslücken tatsächlich Speichersicherheitsprobleme sind. Weit verbreitete Programmiersprachen wie C und C++ sind oft die Ursache für viele der Probleme, insbesondere aufgrund von Zeigerfehlern.
Die Verwendung einer speichersicheren Sprache reduziert speichersichere Sicherheitslücken erheblich oder beseitigt sie vollständig. Dies wiederum verringert das Cybersicherheitsrisiko des endgültigen Codes. Neben der verbesserten Sicherheit verringern speichersichere Sprachen auch die Zahl der Abstürze und ermöglichen es den Entwicklern, ihre Produktivität zu steigern, da sie sich nicht mit Fragen der Speicherverwaltung befassen müssen.
Branchen-Newsletter
Bleiben Sie mit dem Think-Newsletter über die wichtigsten – und faszinierendsten – Branchentrends in den Bereichen KI, Automatisierung, Daten und mehr auf dem Laufenden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.
Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.
Die Reduzierung von Speicherfehlern ist ein komplexes Problem, das einen vielschichtigen Ansatz erfordert. Der Bericht zielt darauf ab, Unternehmen dazu zu bewegen, sich auf zwei spezifische Bereiche im Zusammenhang mit speichersicheren Programmiersprachen zu konzentrieren. Darüber hinaus möchte die Regierung Partnerschaften mit der technischen Community, insbesondere mit Ingenieuren und Entwicklern, aufbauen, um gemeinsam an diesem wichtigen Wandel zu arbeiten.
Die beiden Hauptziele sind in dem mit dem Bericht veröffentlichten Datenblatt dargelegt:
Ein kleinerer Angriffsbereich bedeutet ein geringeres Risiko. Jede Codezeile, die Sicherheitslücken schafft, erweitert die Angriffsfläche erheblich. Ein einziger Fehler, der einen speichersicheren Fehler verursacht, kann eine große Anzahl von Sicherheitslücken schaffen. Der Bericht empfiehlt die Verwendung einer speichersicheren Programmiersprache als eine der effektivsten Methoden zur Verringerung der Angriffsfläche. Mit diesen Sprachen können Programmierer keine Fehler machen, die durch Speicherfehler die Angriffsfläche vergrößern.
Viele Unternehmen sind nicht in der Lage, das Risiko ihrer Software genau einzuschätzen, da die Anwendung von Metriken auf sich ständig verändernde Software eine außerordentliche Herausforderung darstellt. Die Messbarkeit von Software ist zwar eine komplexe Herausforderung, doch der Wandel beginnt damit, von einer reaktiven zu einer proaktiven Vorgehensweise überzugehen. Durch die Entwicklung besserer Diagnoseverfahren für die Cybersicherheitsqualität kann das Unternehmen Risiken genauer identifizieren und proaktiv beheben.
Es ist zwar leicht zu sagen, dass Unternehmen speichersichere Sprachen verwenden sollten, doch in Wirklichkeit ist dieser Übergang kompliziert. Viele Softwareprogramme und Bibliotheken basieren auf nicht speichersicheren Sprachen, und eine vollständige Neuschreibung der gesamten Codebasis ist oft einfach nicht machbar.
Ein neues Projekt mit einer speichersicheren Programmiersprache zu beginnen, ist, wann immer möglich, der einfachste Weg, um mit der Umstellung zu beginnen. Unternehmen können die Angriffsfläche auch ohne vollständige Neuprogrammierung reduzieren, indem sie nur kritische Funktionen und Bibliotheken umschreiben, die am stärksten von Fehlern in der Speichersicherheit betroffen sind. Dazu gehören häufig Bereiche mit Pufferüberläufen und hängenden Zeigern. Einige speichersichere Sprachen, wie Rust und Swift, sind mit C und C++ kompatibel, was diesen Ansatz machbar macht. Bei diesem Ansatz müssen Unternehmen die Build-Systeme und Build-Abstraktionen in die neue Sprache für gemeinsam genutzte Objekte und Daten integrieren.
Für diesen Übergang werden jedoch die richtigen Entwicklerressourcen benötigt. Unternehmen sollten damit beginnen, ihr aktuelles Entwicklerteam zu bewerten, um festzustellen, welche Kenntnisse das Team derzeit in Bezug auf speichersichere Sprachen besitzt. Der nächste Schritt besteht darin, aktuelle Entwickler zu schulen und sicherzustellen, dass neue Entwickler sich mit speichersicheren Sprachen auskennen.
Angesichts des verstärkten Fokus auf Cybersicherheit erkennen viele Unternehmen, dass der wichtigste Schritt der Übergang von einem reaktiven zu einem proaktiven Ansatz ist. Indem sie zu den Anfängen zurückkehren und sich auf die Erstellung sicheren Codes konzentrieren, können Unternehmen ihr Risiko deutlich reduzieren. Auch wenn es kein einfacher oder schneller Prozess ist, sind die Vorteile dieser Umstellung bedeutend und langfristig.