Rust s'inclou entre els principals idiomes per al desenvolupament de la plataforma Android

Google ha anunciat la inclusió del llenguatge de programació Rust entre els llenguatges permesos per desenvolupar la plataforma Android. El compilador del llenguatge Rust es va incloure a l'arbre font d'Android el 2019, però el suport per a aquest llenguatge va continuar sent experimental. Alguns dels primers components Rust que s'han previst enviar a Android són noves implementacions del mecanisme de comunicació entre processos de Binder i la pila Bluetooth.

La introducció de Rust es va dur a terme com a part d'un projecte per reforçar la seguretat, promoure tècniques de programació segures i augmentar l'eficiència en la identificació de problemes quan es treballa amb memòria a Android. S'observa que al voltant del 70% de totes les vulnerabilitats perilloses identificades a Android són causades per errors en treballar amb la memòria. L'ús de Rust, que se centra en la seguretat de la memòria i la gestió automàtica de la memòria, reduirà el risc de vulnerabilitats causades per errors de memòria, com ara l'accés lliure posterior i l'excés de 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.

A Android, la seguretat de la memòria es proporciona en els idiomes ja compatibles Kotlin i Java, però no són adequats per desenvolupar components del sistema a causa de la sobrecàrrega elevada. Rust permet aconseguir un rendiment proper als llenguatges C i C++, la qual cosa permet utilitzar-lo per desenvolupar parts de baix nivell de la plataforma i components per interactuar amb el maquinari.

Per garantir la seguretat del codi C i C++, Android utilitza l'aïllament de la caixa de proves, l'anàlisi estàtica i les proves difuses. Les capacitats d'aïllament del sandbox són limitades i han arribat al límit de les seves capacitats (una major fragmentació en processos és poc pràctica des del punt de vista del consum de recursos). Les limitacions de l'ús de sandbox inclouen grans costos generals i un augment del consum de memòria causat per la necessitat de generar nous processos, així com retards addicionals associats 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 a Android, Google s'adhereix a la "regla de dos", segons la qual qualsevol codi afegit no ha de complir més de dues de les tres condicions: treballar amb dades d'entrada no validades, utilitzar un llenguatge de programació no segur (C/C++) i s'executa sense un estricte aïllament sandbox (tenint privilegis elevats). Aquesta regla implica que el codi per processar dades externes s'ha de reduir a privilegis mínims (aïllat) o escrit en un llenguatge de programació segur.

Google no pretén reescriure el codi C/C++ existent a Rust, però té previst utilitzar aquest llenguatge per desenvolupar codi nou. Té sentit utilitzar Rust per a codi nou perquè, estadísticament, la majoria d'errors apareixen en codi nou o canviat recentment. En particular, al voltant del 50% dels errors de memòria detectats a Android es detecten en codi escrit fa menys d'un any.

Rust s'inclou entre els principals idiomes per al desenvolupament de la plataforma Android


Font: opennet.ru

Afegeix comentari