Google härdet Pixel-Modems mit Rust-basiertem DNS-Parser
**Google** integriert einen **Rust**-basierten Domain Name System (DNS)-Parser in die Modem-Firmware von **Pixel**-Geräten, was einen bedeutenden Schritt zur Stärkung der Gerätesicherheit darstellt. Ziel ist es, Schwachstellen in einem kritischen Bereich zu mindern und den Weg für eine breitere Einführung speichersicherer Codes im **Android**-Ökosystem zu ebnen.

### Rust-Integration für erhöhte Sicherheit
Als Teil seiner fortlaufenden Bemühungen zur Verbesserung der Sicherheit von **Pixel**-Geräten hat **Google** die Integration eines **Rust**-basierten DNS-Parsers in die Modem-Firmware angekündigt. Diese Initiative zielt darauf ab, speicherbezogene Schwachstellen auf einer grundlegenden Ebene zu beheben.
Laut **Jiacheng Lu**, einem Software-Ingenieur im **Google Pixel Team**, "reduziert der neue Rust-basierte DNS-Parser unser Sicherheitsrisiko erheblich, indem er eine ganze Klasse von Schwachstellen in einem risikoreichen Bereich mindert und gleichzeitig die Grundlage für eine breitere Einführung speichersicherer Codes in anderen Bereichen legt."
Diese Sicherheitsverbesserung ist derzeit für **Pixel 10**-Geräte verfügbar und macht es zum ersten **Pixel**-Gerät, das eine speichersichere Sprache in sein Modem integriert.
### Hintergrund: Stärkung der Baseband-Sicherheit
Dieser Schritt baut auf früheren Bemühungen auf, das zellulare Baseband-Modem gegen potenzielle Exploits zu stärken. Ende 2023 betonte **Google** die Wirksamkeit von **Clang**-Sanitizern wie Overflow Sanitizer (IntSan) und BoundsSanitizer (BoundSan) bei der Erkennung von undefiniertem Verhalten während der Programmausführung.
Darüber hinaus legte **Google** im Jahr 2024 verschiedene Sicherheitsmaßnahmen dar, die in die Modem-Firmware integriert sind, um sich gegen 2G-Exploits und Baseband-Angriffe zu verteidigen, die speichersicherheitsbezogene Schwachstellen wie Pufferüberläufe ausnutzen, um Remote Code Execution zu erreichen.
Diese Sicherheitsfortschritte werden durch die fortlaufende Übernahme von **Rust** durch **Google** in **Android** und Low-Level-Firmware ergänzt. Im November 2025 meldete das Unternehmen eine signifikante Reduzierung von Speichersicherheitslücken, die im letzten Jahr unter 20 % der gesamten im mobilen Betriebssystem entdeckten Schwachstellen lagen.
### Adressierung von DNS-Schwachstellen
**Google** wählte das DNS-Protokoll für seine **Rust**-Implementierung aufgrund seiner grundlegenden Rolle in der modernen zellularen Kommunikation. Schwachstellen in DNS, insbesondere wenn sie in speicherunsicheren Sprachen implementiert sind, können Benutzer bösartigen Angriffen aussetzen, wie **CVE-2024-27227** hervorhebt.
"Mit der Entwicklung der Mobilfunktechnologie haben sich moderne Mobilfunkkommunikationen zu digitalen Datennetzen verlagert; folglich basieren selbst grundlegende Operationen wie Rufweiterleitung auf DNS-Diensten", erklärte **Google**. "Die Implementierung des DNS-Parsers in Rust bietet einen Mehrwert, indem sie die Angriffsflächen im Zusammenhang mit Speichersicherheitslücken reduziert."
### Implementierungsdetails
Für diese Implementierung wählte **Google** das "hickory-proto"-Crate, einen **Rust**-basierten DNS-Client, -Server und -Resolver, und modifizierte es zur Unterstützung von Bare-Metal- und Embedded-Umgebungen. Sie nutzten auch ein benutzerdefiniertes Tool namens "cargo-gnaw", um die Abhängigkeiten des Crates zu verwalten.
**Google** stellte fest, dass das DNS **Rust**-Crate nicht für speicherbeschränkte Systeme optimiert ist, und schlug vor, dass die Code-Größenoptimierung durch Feature-Flags erreicht werden könnte, um nur die erforderliche Funktionalität selektiv zu kompilieren.
"Für den DNS-Parser haben wir die DNS-Antwort-Parsing-API in C deklariert und dann dieselbe API in Rust implementiert", erklärte **Google**. "Die Rust-Funktion gibt eine Ganzzahl zurück, die den Fehlercode darstellt. Die empfangenen DNS-Antworten in der DNS-Antwort müssen in In-Memory-Datenstrukturen aktualisiert werden, die mit der ursprünglichen C-Implementierung gekoppelt sind; daher verwenden wir vorhandene C-Funktionen, um dies zu tun. Die vorhandenen C-Funktionen werden aus der Rust-Implementierung aufgerufen."