Google hat die Ergebnisse seiner Initiative zur Umsetzung sicherer Entwicklungspraktiken (Safe Coding) in Android zusammengefasst. Dazu gehören die Verwendung von Programmiersprachen, die einen sicheren Umgang mit dem Speicher gewĂ€hrleisten, der Einsatz statischer Analysatoren und die Gestaltung von APIs mit Blick auf die Sicherheit. Diese Ănderungen haben es ermöglicht, den Anteil an speicherbezogenen SicherheitsanfĂ€lligkeiten in Android von 76 % im Jahr 2019 auf 24 % im Jahr 2024 zu senken, was deutlich unter dem Branchendurchschnitt von 70 % liegt.
Die Ingenieure von Google kamen auĂerdem zu dem Schluss, dass der Hauptursprung von Sicherheitsproblemen neuer Code ist. Daher sollte der Fokus auf der Modernisierung der Entwicklungspraktiken fĂŒr neuen Code liegen. Bereits vorhandener Code wird im Laufe der Zeit sicherer und zuverlĂ€ssiger (es zeigt sich eine exponentielle AbhĂ€ngigkeit der Sicherheit von der Zeit), was Investitionen in Projekte zur Umschreibung vorhandenen Codes weniger rentabel macht. Beispielsweise hat Code, der fĂŒnf Jahre alt ist, im Durchschnitt eine 3,4-mal geringere Dichte an SicherheitsanfĂ€lligkeiten als neuer Code. Bei Android- und Chromium-Projekten betrĂ€gt der Unterschied dank der EinfĂŒhrung sicherer Speicherpraktiken sogar 7,4-mal.

Wenn es also gelingt, Fehler im Umgang mit dem Speicher im neuen Code zu vermeiden, werden solche Fehler im alten Code mit der Zeit immer seltener auftreten. Im Allgemeinen empfiehlt Google, alten Code nicht neu zu schreiben, sondern sich auf die Entwicklung neuer Code in Speichersicheren Sprachen zu konzentrieren und die PortabilitÀt zwischen neuem und altem Code zu gewÀhrleisten.
Neben der Verringerung der Anzahl von SicherheitsanfĂ€lligkeiten steigert die Verwendung sicherer Programmiermethoden die ProduktivitĂ€t der Entwicklung, sorgt fĂŒr eine höhere CodequalitĂ€t und wirkt sich positiv auf die LeistungsfĂ€higkeit aus. Zum Beispiel fĂŒhrte die Umstellung des QR-Code-Generierungscodes in Chromium auf die Programmiersprache Rust zu einer Leistungssteigerung von 95 %, da die zusĂ€tzlichen Kosten durch die Notwendigkeit einer zusĂ€tzlichen Sandbox-Isolierung vermieden wurden.
Die Geschwindigkeit und QualitĂ€t der Entwicklung verbessern sich durch die Vereinfachung der Tests und die Verlagerung der Fehlererkennung auf frĂŒhere Entwicklungsphasen, in denen Fehler sichtbar werden, bevor der Entwickler mit der CodeĂŒberprĂŒfung beginnt. Ein Beispiel hierfĂŒr sind die RĂŒckgaberaten von Ănderungen â beim Rust-Code liegt die Zahl der RĂŒckgaben aufgrund unvorhergesehener Fehler doppelt so niedrig wie beim C++-Code.
Im Allgemeinen wird die Anwendung sicherer Programmiermethoden als die effektivste Entwicklungsparadigmen betrachtet, die die zuvor verwendeten drei AnsÀtze abgelöst hat:
- Behebung von Schwachstellen nach deren Entdeckung. Kostenintensiv, erfordert hÀufige Updates und deren schnelle Bereitstellung an die Benutzer.
- Proaktive Sicherheit, die sich auf den Einsatz von Techniken konzentriert, die die Ausnutzung von Schwachstellen erschweren. Der Preis fĂŒr diese Art des Schutzes war eine Verringerung der Leistung und ein stĂ€ndiges Katz-und-Maus-Spiel mit den Angreifern.
- FrĂŒherkennung von Schwachstellen durch die Verwendung von Fuzzing-Tests und Werkzeugen wie AddressSanitizer und MemorySanitizer. Die Methode behob nur Symptome, nicht die Ursache des Problems, und erforderte kontinuierliche Arbeit.


Quelle: opennet.ru
