Ingenieure von Google haben die ersten Ergebnisse der Umsetzung der UnterstĂŒtzung fĂŒr die Entwicklung in der Programmiersprache Rust auf der Android-Plattform vorgelegt. In Android 13 sind etwa 21 % des hinzugefĂŒgten neuen kompilierbaren Codes in Rust geschrieben, wĂ€hrend 79 % in C/C++. Im AOSP-Repository (Android Open Source Project), wo die Quelltexte der Android-Plattform entwickelt werden, gibt es etwa 1,5 Millionen Zeilen Code in Rust, die mit neuen Komponenten wie dem Keystore2 fĂŒr kryptografische SchlĂŒssel, dem Stack fĂŒr UWB-Chips (Ultra-Wideband), der Implementierung des DNS-over-HTTP3-Protokolls, dem AVF (Android Virtualization Framework) und experimentellen Stacks fĂŒr Bluetooth und Wi-Fi verbunden sind.

GemÀà der zuvor angenommenen Strategie zur Verringerung des Risikos von Schwachstellen, die durch Fehler im Umgang mit Speicher entstehen, wird die Programmiersprache Rust derzeit hauptsĂ€chlich bei der Entwicklung neuer Codes und zur schrittweisen Erhöhung der Sicherheit der am wenigsten geschĂŒtzten und kritischen Softwarekomponenten verwendet. Es wird kein allgemeines Ziel verfolgt, die gesamte Plattform auf Rust umzustellen, und der alte Code bleibt in C/C++, wobei der Umgang mit Fehlern darin durch Fuzzing-Tests, statische Analyse und Techniken wie die Verwendung des MiraclePtr (eine Wrapper ĂŒber raw-Pointern, die zusĂ€tzliche ĂberprĂŒfungen des Zugriffs auf freigegebene Speicherbereiche durchfĂŒhrt), das Scudo-Speichersystem (sichere Alternative zu malloc/free) und Mechanismen zur Fehlererkennung im Umgang mit Speicher HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN und KFENCE erfolgt.
Was die Statistik ĂŒber die Art der Schwachstellen auf der Android-Plattform betrifft, so wird festgestellt, dass mit der Verringerung des neuen Codes, der unsicher mit Speicher umgeht, auch eine Abnahme der Anzahl von Schwachstellen, die durch Fehler im Umgang mit Speicher verursacht werden, zu beobachten ist. Beispielsweise sank der Anteil der durch Speicherprobleme verursachten Schwachstellen von 76 % im Jahr 2019 auf 35 % im Jahr 2022. In absoluten Zahlen wurden im Jahr 2019 223 Schwachstellen im Zusammenhang mit dem Umgang mit Speicher identifiziert, 2020 waren es 150, 2021 100 und 2022 85 (alle identifizierten Schwachstellen im Code sind in C/C++, im Rust-Code wurden bisher Ă€hnliche Probleme nicht gefunden). Das Jahr 2022 war das erste Jahr, in dem schwachstellenbedingte Probleme im Zusammenhang mit Speicher nicht mehr dominierend waren.

Da die mit der Speicherverarbeitung verbundenen Schwachstellen typischerweise die gefĂ€hrlichsten sind, ist in der allgemeinen Statistik auch ein RĂŒckgang der Anzahl kritischer Probleme und solcher, die aus der Ferne ausgenutzt werden können, festzustellen. Gleichzeitig bleibt die Dynamik bei der Entdeckung von Schwachstellen, die nicht mit der Speicherverarbeitung zusammenhĂ€ngen, in den letzten 4 Jahren auf etwa demselben Niveau â 20 Schwachstellen pro Monat. Auch der Anteil gefĂ€hrlicher Probleme unter den durch Speicherfehler verursachten Schwachstellen bleibt bestehen (doch da die Anzahl solcher Schwachstellen abnimmt, sinkt auch die Anzahl gefĂ€hrlicher Probleme).

In der Statistik wird auch die Korrelation zwischen dem Volumen neuen Codes, der unsicher mit dem Speicher umgeht, und der Anzahl speicherbezogener Schwachstellen (PufferĂŒberlĂ€ufe, Zugriff auf bereits freigegebenen Speicher usw.) verfolgt. Diese Beobachtung bestĂ€tigt die Annahme, dass bei der Implementierung sicherer Programmiertechniken der Schwerpunkt auf neuem Code liegen sollte, nicht auf dem Umschreiben bestehenden Codes, da die meisten entdeckten Schwachstellen auf neuen Code entfallen.

Quelle: opennet.ru
