• IT-Karriere:
  • Services:

Security: Android bekommt automatische Speicherinitialisierung

Das soll typische Lücken in C verhindern. Außerdem erhält Android 11 einen neuen Allocator und einen Address Sanitizer für den Kernel.

Artikel veröffentlicht am ,
Android bekommt neue Sicherheitsfunktionen.
Android bekommt neue Sicherheitsfunktionen. (Bild: Justin Sullivan/Getty Images)

Das Android-Team von Google hat in seinem Developers Blog eine Reihe von Sicherheitsverbesserungen für das kommende Android 11 angekündigt. Diese umfassen vor allem Techniken, die die Ausnutzung typischer Fehler der Programmiersprachen C und C++ erschweren oder verhindern sollen. Dazu gehört unter anderem, dass Android künftig eine automatische Speicherinitialisierung nutzen wird.

Stellenmarkt
  1. ALD AutoLeasing D GmbH, Hamburg
  2. August Storck KG, Halle (Westf.)

Das zugrundeliegende Problem ist, dass es die Programmiersprachen C und C++ nicht forcieren, Variablen bei der Deklaration zu initialisieren. Das heißt, ihnen werden unter Umständen keine Werte zugewiesen. Das ist jedoch nicht definiertes Verhalten und kann etwa dazu führen, dass geschützte Inhalte von Speicherbereichen versehentlich offengelegt oder dass die Speicherbereiche direkt genutzt werden. Beides kann zu Sicherheitslücken führen.

Erst vor wenigen Wochen hatte Microsoft angekündigt, die Speicherinitialisierung für Windows umsetzen zu wollen. Nun folgt also auch Google mit Android. Dafür wird eine Funktion des Clang-Compilers verwendet, der Variablen künftig entweder mit Nullen oder bestimmten Mustern initialisiert. Das Google-Team hat dies für den gesamten Android-Userspace umgesetzt.

Auch der von Android genutzte Linux-Kernel bekommt eine automatische Initialisierung für Stack und Heap. Diese Technik ist bereits Teil des Hauptzweigs von Linux und wurde vom Android-Team auf dessen noch gepflegte Versionen 4.14, 4.19 und 5.4 zurückportiert. Für die Heap-Initialisierung setzt Google auf ein Boot-Flag, das dafür sorgt, neue Speicherbereiche bei der Zuweisung mit Nullen zu überschreiben. Der Stack wird über die Kernel-Option CONFIG_INIT_STACK_ALL initialisiert.

Scudo als Allocator

Android nutzt künftig standardmäßig auch das aus dem LLVM-Projekt stammende Werkzeug Scudo als Allocator zur Speicherzuweisung. Damit sollen typische Fehler wie Double free, Arbitrary free, Heap-based buffer overflow und Use-after-free erkannt und verhindert werden. Zwar sei das Werkzeug nicht perfekt und verhindere die Ausnutzung von Lücken nicht komplett, Tests hätten das Team jedoch vom positiven Nutzen überzeugt.

Als Teil von Scudo arbeitet außerdem GWP-ASan, das eventuelle Heap-Speicherfehler finden soll und darüber informiert. Ebenso weiter ausgebaut hat das Android-Team auch die Nutzung seines Hardware-Assisted Address Sanitizer (HWASAN), was mit Android 10 eingeführt wurde und nun auf den Kernel erweitert wird. Genutzt wird dafür ARMs Memory Tagging Extension (MTE).

Die Nutzung von sogenannten Sanitizern in Android hat Google außerdem weiter ausgebaut, etwa zur Nutzung mit der Bibliothek für Fonts oder jener zum Rendern des UIs. Gehärtet hat das Team damit auch seine NFC-Implementierung. Die ebenfalls schon länger genutzte Control-Flow-Integrity (CFI) hat das Team auf den Netzwerk-Daemon und den DNS-Resolver erweitert.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Anzeige
Spiele-Angebote
  1. 3,50€
  2. (u. a. Yu-Gi-Oh! Legacy of the Duelist für 7,20€, Yu-Gi-Oh! ARC-V: ARC League Championship für...

M.P. 01. Jul 2020

Das meinte ich damit, dass es eh keinen Speicherschutz zwischen Threads gibt ...

Thargon 01. Jul 2020

Schlechter Code ist und bleibt schlechter Code. Man muss natürlich abwägen, ob es...


Folgen Sie uns
       


Mercedes EQA Probe gefahren

Wir sind mit dem EQA von Mercedes-Benz für ein paar Stunden unterwegs gewesen.

Mercedes EQA Probe gefahren Video aufrufen
    •  /