Google ha anunciat que afegirà el llenguatge de programació Rust a la seva plataforma. AndroidEl compilador del llenguatge Rust s'ha inclòs a l'arbre de codi font. Android el 2019, però el suport per a aquest llenguatge continuava sent experimental. Alguns dels primers components de Rust estaven previstos per al llançament el Android, són noves implementacions del mecanisme de comunicació entre processos de Binder i la pila Bluetooth.
La implementació de Rust forma part d'un projecte per reforçar la seguretat, promoure pràctiques de programació segures i millorar l'eficiència en la identificació de problemes de memòria. AndroidEs constata que aproximadament el 70% de totes les vulnerabilitats perilloses identificades a Android, causat per errors de memòria. L'ús del llenguatge Rust, que se centra en la seguretat de la memòria i proporciona una gestió automàtica de la memòria, reduirà el risc de vulnerabilitats causades per errors de memòria, com ara l'accés a la memòria després que s'hagi alliberat i les sobrecàrregues de la memòria intermèdia.
Rust imposa la seguretat de la memòria en temps de compilació mitjançant la comprovació de referències, la propietat d'objectes i el seguiment de la vida útil de l'objecte (àmbits) i avaluant la correcció dels accessos a la memòria en temps d'execució. Rust també proporciona protecció contra desbordaments d'enters, requereix que els valors variables s'inicialitzin abans d'utilitzar-los, té un millor maneig d'errors a la biblioteca estàndard, utilitza el concepte de referències i variables immutables per defecte i ofereix una escriptura estàtica forta per minimitzar els errors lògics.
В Android La seguretat de la memòria és compatible amb els llenguatges ja compatibles Kotlin i Java, però no són adequats per desenvolupar components de sistema a causa de la seva elevada sobrecàrrega. Rust ofereix un rendiment proper al de C i C++, cosa que el fa adequat per desenvolupar components de plataforma de baix nivell i components d'interacció de maquinari.
Per garantir la seguretat del codi C i C++ en Android S'utilitza l'aïllament de sandbox, l'anàlisi estàtica i les proves de fuzzing. Les capacitats d'aïllament de sandbox són limitades i han arribat als seus límits (una major fragmentació en processos no és pràctica des del punt de vista del consum de recursos). Les limitacions de la sandbox inclouen una sobrecàrrega elevada i un major consum de memòria causat per la necessitat de generar nous processos, així com una latència addicional associada a l'ús d'IPC.
Al mateix temps, el sandbox no elimina les vulnerabilitats del codi, sinó que només redueix els riscos i complica l'atac, ja que l'explotació requereix la identificació no d'una, sinó de diverses vulnerabilitats. Els mètodes basats en proves de codi estan limitats perquè, per identificar errors, cal crear condicions perquè el problema es manifesti. No és possible cobrir totes les opcions possibles, de manera que molts errors passen desapercebuts.
Per als processos del sistema en Android Google s'adhereix a la "regla de dos", que estableix que qualsevol codi afegit no ha de complir més de dues de les tres condicions següents: gestionar entrades no fiables, utilitzar un llenguatge de programació no segur (C/C++) i executar-se sense un sandboxing estricte (amb privilegis elevats). Aquesta regla implica que el codi que processa dades externes s'ha de reduir als privilegis mínims (aïllar-lo) o escriure'l en un llenguatge de programació segur.
Google no pretén reescriure el codi C/C++ existent en Rust, però té previst utilitzar el llenguatge per desenvolupar codi nou. Utilitzar Rust per a codi nou té sentit, ja que estadísticament, la majoria dels errors apareixen en codi nou o recentment modificat. En particular, aproximadament el 50% dels errors de memòria detectats en Android es troben en codi escrit fa menys d'un any.

Font: opennet.ru
