Rust non è un lento raccoglitore di rifiuti. Utilizza invece un meccanismo chiamato controllo del prestito che garantisce la sicurezza della memoria in fase di compilazione. Questo rigido insieme di regole ti assicura di non “dimenticare” di liberare memoria: il codice semplicemente non verrà compilato se le regole di memoria vengono violate. Questo è ciò che rende Rust un linguaggio sicuro per la memoria.
Tuttavia, nemmeno Google può agitare la proverbiale mano e cambiare il modo in cui viene scritto il firmware del modem: stiamo parlando di decine di megabyte di codice macchina eseguibile, il che è molto. Aggiornare decenni di lavoro non solo è un compito arduo, ma molte delle aziende coinvolte trattano il funzionamento interno del modem come segreti commerciali.
Per proteggere Pixel Modem dagli attacchi zero-day, Google si è concentrato sui parser DNS. Con la migrazione delle funzionalità cellulari alle reti dati, il DNS è diventato una parte fondamentale del funzionamento dei telefoni. Google spiega che il DNS richiede l’analisi di dati non attendibili e questo lo rende un grave problema di sicurezza, ma è possibile risolverlo con Rust.
Google ha scelto Hickory-Proto Libreria DNS Rust open source, che non è particolarmente ottimizzata ma ha un’ampia adozione e supporto. Il modem del telefono Pixel è un ambiente privo di memoria, consentendo al team di aggiungere un componente arrugginito per proteggere il DNS nel codice esistente. Il team ha eliminato le dipendenze della libreria standard, consentendone la compilazione in codice macchina per un funzionamento più rapido, che è stato poi innestato nel codice modem C/C++ esistente. In totale, il componente Rust ha aggiunto 371KB, utili sui modem Pixel.
Con questo sistema ogni tentativo di attivare una vulnerabilità manipolando la memoria attraversa un muro di ruggine e non può essere colpito da pacchetti DNS dannosi. I telefoni Pixel 10 sono i primi a essere forniti con questa implementazione modem sicura. Google spera che questo lavoro consenta ad altre piattaforme di apportare miglioramenti simili, ma la società sottolinea che la dimensione della libreria Rust selezionata potrebbe rappresentare un problema per i sistemi embedded semplici. Potrebbe essere possibile risolvere questo problema in futuro rendendo la biblioteca più modulare. Google vede questo lavoro anche come base per integrare nel tempo componenti più sicuri per la memoria nella banda base cellulare.