Die Ursachen von Speichersicherheitslücken beseitigen
Ein paradoxes Ergebnis
- Wenn die Codebasis, die in speicherunsicheren Sprachen geschrieben ist, wächst, führt die Umstellung neuer Funktionen auf speichersichere Sprachen dennoch zu einem deutlichen Rückgang von Speichersicherheitslücken
- Der Grund dafür ist, dass Schwachstellen im Lauf der Zeit exponentiell abnehmen
Mathematische Erklärung
- Die Lebensdauer von Schwachstellen folgt einer Exponentialverteilung
- Schwachstellen entstehen überwiegend in neuem Code, und mit der Zeit wird der Code sicherer
- Die Schwachstellendichte in 5 Jahre altem Code ist 3,4- bis 7,4-mal niedriger als in neuem Code
Praxisbeispiel bei Android
- Seit 2019 hat das Android-Team begonnen, neue Entwicklungen auf speichersichere Sprachen umzustellen
- Stand 2024 ist der Anteil der Speichersicherheitslücken von 76 % auf 24 % gesunken
- Mit dem Rückgang der Speichersicherheitslücken ist auch das gesamte Sicherheitsrisiko gesunken
Die Entwicklung der Strategie für Speichersicherheit
-
- Generation: Reaktives Patchen – Schwachstellen werden entdeckt und behoben
-
- Generation: Proaktive Abschwächung – Die Ausnutzung von Schwachstellen wird erschwert
-
- Generation: Proaktive Schwachstellenfindung – Schwachstellen werden im Voraus aufgespürt
-
- Generation: Hochzuverlässige Prävention – Durch die Umstellung auf speichersichere Sprachen wird die Entstehung von Schwachstellen selbst verhindert
Vorteile hochzuverlässiger Prävention
- Beendet den endlosen Wettlauf zwischen Verteidigern und Angreifern
- Erhöht die Sicherheit und senkt die Kosten durch speichersichere Sprachen
- Verbessert die Korrektheit des Codes und die Produktivität der Entwickler
Von der Erkenntnis zur Praxis
- Es ist nicht nötig, den gesamten bestehenden speicherunsicheren Code zu verwerfen oder neu zu schreiben
- Durch bessere Interoperabilität wird die Umstellung auf speichersichere Sprachen beschleunigt
- Entwicklung von Werkzeugen zur Verbesserung der Interoperabilität zwischen Rust und C++ sowie zwischen Rust und Kotlin
Die Rolle früherer Generationen
- Selektiver Einsatz von proaktiver Abschwächung und Erkennung
- Mit der Umstellung auf speichersicheren Code nimmt der Bedarf an Abschwächung und Erkennung ab
Fazit
- Der Einsatz speichersicherer Sprachen in neuem Code führt zu einem exponentiellen Rückgang von Schwachstellen
- Mehr als sechs Jahre konsistenter Ergebnisse bei Android belegen die Wirksamkeit dieses Ansatzes
Zusammenfassung von GN⁺
- Um Speichersicherheitslücken zu reduzieren, ist die Umstellung auf speichersichere Sprachen wichtig
- Am Beispiel des Android-Teams zeigt sich ein deutlicher Rückgang von Speichersicherheitslücken
- Statt einer vollständigen Neuschreibung des bestehenden Codes ist eine bessere Interoperabilität der praktikable Weg
- Der Einsatz speichersicherer Sprachen wie Rust kann Sicherheit und Produktivität gleichzeitig steigern
1 Kommentare
Hacker-News-Kommentare