Rust zĂ€hlt zu den primĂ€ren Programmiersprachen fĂŒr die Entwicklung der Android-Plattform.

Google hat angekĂŒndigt, die Programmiersprache Rust in die Liste der Sprachen aufzunehmen, die fĂŒr die Entwicklung der Android-Plattform zulĂ€ssig sind. Der Rust-Compiler wurde bereits 2019 in den Android-Quellcode integriert, jedoch blieb die UnterstĂŒtzung fĂŒr diese Sprache zunĂ€chst experimentell. Zu den ersten Komponenten in Rust, die in Android bereitgestellt werden sollen, gehören neue Implementierungen des Mechanismus fĂŒr die interprozessliche Kommunikation Binder sowie des Bluetooth-Stacks.

Die EinfĂŒhrung von Rust erfolgt im Rahmen eines Projekts zur Verbesserung der Sicherheit, der Förderung sicherer Programmiertechniken und zur Effizienzsteigerung bei der Identifizierung von Speicherproblemen in Android. Es wird festgestellt, dass etwa 70 % der gefĂ€hrlichen Schwachstellen in Android durch Speicherfehler verursacht werden. Der Einsatz von Rust, das auf sichere Speicherverwaltung fokussiert ist und automatisches Speichermanagement bietet, wird das Risiko von Schwachstellen verringern, die durch Speicherfehler wie den Zugriff auf freigegebene Speicherbereiche oder Buffer Overflows verursacht werden.

Die sichere Handhabung von Speicher erfolgt in Rust bereits zur Compile-Zeit durch die ÜberprĂŒfung von Referenzen, das Verfolgen von Objektbesitz und das Management der Lebensdauer von Objekten (Sichtbarkeiten) sowie durch die Evaluierung der Speicherzugriffskorrektheit zur Laufzeit des Codes. Rust bietet zudem Mechanismen zum Schutz vor ganzzahligen ÜberlĂ€ufen, erfordert die obligatorische Initialisierung von Variablenwerten vor der Verwendung, behandelt Fehler in der Standardbibliothek besser, verwendet standardmĂ€ĂŸig die Konzept der UnverĂ€nderlichkeit (immutable) fĂŒr Referenzen und Variablen und bietet eine starke statische Typisierung zur Minimierung logischer Fehler.

In Android gewĂ€hrleistet die sichere Handhabung von Speicher in den bereits unterstĂŒtzten Sprachen Kotlin und Java, jedoch sind diese aufgrund hoher Overhead-Kosten nicht fĂŒr die Entwicklung von Systemkomponenten geeignet. Rust ermöglicht eine Leistung, die nahezu der von C und C++ entspricht, was es ermöglicht, es fĂŒr die Entwicklung von niedrig-leveligen Plattformteilen und Komponenten fĂŒr die Interaktion mit Hardware zu verwenden.

Um die Sicherheit von C- und C++-Code in Android zu gewÀhrleisten, werden Sandbox-Isolation, statische Analyse und Fuzzing-Tests eingesetzt. Die Möglichkeiten der Sandbox-Isolation sind begrenzt und haben ihre KapazitÀtsgrenzen erreicht (eine weitere Aufspaltung in Prozesse ist aus Sicht des Ressourcenverbrauchs nicht sinnvoll). Zu den EinschrÀnkungen der Sandbox-Anwendung zÀhlen hohe Overhead-Kosten und ein Anstieg des Speicherverbrauchs, die durch die Notwendigkeit, neue Prozesse zu erzeugen, verursacht werden, sowie zusÀtzliche Latenzen, die mit der Verwendung von IPC verbunden sind.

Die Sandbox beseitigt jedoch keine Schwachstellen im Code, sondern reduziert lediglich die Risiken und erschwert die DurchfĂŒhrung eines Angriffs, da zur Ausnutzung mehrere Schwachstellen identifiziert werden mĂŒssen. Methoden, die auf Code-Tests basieren, sind dadurch eingeschrĂ€nkt, dass zur Erkennung von Fehlern Bedingungen geschaffen werden mĂŒssen, unter denen das Problem auftritt. Es ist unmöglich, alle möglichen Varianten abzudecken, weshalb viele Fehler unentdeckt bleiben.

FĂŒr Systemprozesse in Android hĂ€lt sich Google an die "Zwei-Regel", gemĂ€ĂŸ derer jeder hinzuzufĂŒgende Code nicht mehr als zwei von drei Bedingungen erfĂŒllen darf: der Umgang mit nicht ĂŒberprĂŒften Eingabewerten, die Verwendung einer unsicheren Programmiersprache (C/C++) und die AusfĂŒhrung ohne strikte Sandbox-Isolierung (Vorhandensein von erhöhten Rechten). Aus dieser Regel folgt, dass Code zur Verarbeitung externer Daten entweder auf minimale Berechtigungen (isoliert) reduziert oder in einer sicheren Programmiersprache geschrieben sein muss.

Google hat nicht das Ziel, den bereits vorhandenen C/C++-Code auf Rust umzustellen, sondern plant, diese Sprache fĂŒr die Entwicklung neuen Codes zu verwenden. Die Verwendung von Rust fĂŒr neuen Code ist sinnvoll, da statistisch gesehen die meisten Fehler im neuen oder kĂŒrzlich geĂ€nderten Code auftreten. Insbesondere etwa 50% der festgestellten Speicherprobleme in Android treten in Code auf, der weniger als ein Jahr alt ist.

Rust zĂ€hlt zu den primĂ€ren Programmiersprachen fĂŒr die Entwicklung der Android-Plattform.


Quelle: opennet.ru
Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster