Google teilte seine Erfahrungen mit dem Einsatz von Rust-Code in der Firmware des in Pixel-10-Smartphones integrierten Basisbandmodems. Der DNS-Protokollcode der Firmware wurde durch die Rust-Bibliothek hickory-proto ersetzt, die von den Entwicklern des Hickory-DNS-Servers entwickelt wurde, welcher Teil der Let's-Encrypt-Infrastruktur ist.
Die Integration des Hickory-Protokolls in die Firmware ist Teil einer Initiative zur Verbesserung der Sicherheit von Basisbandmodems. Die Firmware des Basisbandmodems enthĂ€lt einen DNS-Handler, da dieses Protokoll in modernen Mobilfunknetzen, unter anderem fĂŒr die Rufumleitung, verwendet wird. DNS ist ein komplexes Protokoll, das die Verarbeitung nicht vertrauenswĂŒrdiger externer Daten erfordert. Google hat bereits zuvor Schwachstellen in der Firmware des Basisbandmodems von Pixel-GerĂ€ten identifiziert. Beispielsweise wurde 2024 die Schwachstelle CVE-2024-27227 entdeckt, die bei der Verarbeitung speziell prĂ€parierter DNS-Antworten einen PufferĂŒberlauf verursacht.
Der Einsatz eines DNS-Protokollparsers in Rust soll die AngriffsflĂ€che verringern und das Risiko der DNS-basierten Ausnutzung einer ganzen Klasse von Schwachstellen mindern, die durch Fehler in der speichernahen Verarbeitung verursacht werden. Das Projekt dient zudem als Grundlage fĂŒr eine breitere Anwendung in anderen Codekomponenten, die in speichersicheren Sprachen geschrieben sind.
Ein problematischer Aspekt war die relativ groĂe GröĂe des resultierenden Codes, da die Hickory-Proto-Bibliothek ursprĂŒnglich nicht fĂŒr den Einsatz in eingebetteten Systemen konzipiert war. Die integrierten Komponenten umfassten insgesamt 371 KB, davon 350 KB Hickory-Proto-Code und AbhĂ€ngigkeiten, 17 KB Hilfsfunktionen aus der Standardbibliothek und 4 KB eine Schicht zur Verarbeitung von DNS-Serverantworten mithilfe der Bibliothek.
Es ist anzumerken, dass die zusĂ€tzlichen 300 KB fĂŒr das Pixel-GerĂ€temodem innerhalb der bestehenden Speichergrenzen liegen. FĂŒr anspruchsvollere eingebettete Systeme sind jedoch Optimierungen erforderlich, um die CodegröĂe zu reduzieren. Hickory-proto plant zukĂŒnftig die Implementierung von Flags, die wĂ€hrend der Kompilierung nur die benötigte FunktionalitĂ€t aktivieren.
Source: opennet.ru
