Rust inclúese entre os principais idiomas para o desenvolvemento da plataforma Android

Google anunciou a inclusión da linguaxe de programación Rust entre as linguaxes permitidas para desenvolver a plataforma Android. O compilador da linguaxe Rust incluíuse na árbore de fontes de Android en 2019, pero o soporte para esta linguaxe seguía sendo experimental. Algúns dos primeiros compoñentes de Rust previstos para Android inclúen novas implementacións do mecanismo de comunicación entre procesos de Binder e da pila Bluetooth.

A introdución de Rust levouse a cabo como parte dun proxecto para reforzar a seguridade, promover técnicas de programación seguras e aumentar a eficiencia na identificación de problemas cando se traballa coa memoria en Android. Nótase que preto do 70% de todas as vulnerabilidades perigosas identificadas en Android son causadas por erros ao traballar coa memoria. O uso de Rust, que se centra na seguridade da memoria e na xestión automática da memoria, reducirá o risco de vulnerabilidades causadas por erros de memoria, como o acceso libre e as superacións do búfer.

Rust aplica a seguridade da memoria no momento da compilación mediante a comprobación de referencias, a propiedade do obxecto e o seguimento da vida útil do obxecto (ámbitos) e avaliando a corrección dos accesos á memoria no tempo de execución. Rust tamén ofrece protección contra desbordamentos de números enteiros, require que os valores das variables se inicialicen antes do seu uso, ten un mellor manexo de erros na biblioteca estándar, usa o concepto de referencias e variables inmutables por defecto e ofrece unha forte escritura estática para minimizar os erros lóxicos.

En Android, a seguridade da memoria ofrécese nos idiomas xa compatibles Kotlin e Java, pero non son axeitados para desenvolver compoñentes do sistema debido á alta sobrecarga. Rust permite acadar un rendemento próximo ás linguaxes C e C++, o que permite que se use para desenvolver partes de baixo nivel da plataforma e compoñentes para interactuar co hardware.

Para garantir a seguranza do código C e C++, Android usa o illamento da caixa de probas, a análise estática e as probas confusas. As capacidades de illamento de sandbox son limitadas e alcanzaron o límite das súas capacidades (a fragmentación adicional en procesos non é práctica desde o punto de vista do consumo de recursos). As limitacións do uso de sandbox inclúen grandes custos xerais e aumento do consumo de memoria causado pola necesidade de xerar novos procesos, así como atrasos adicionais asociados ao uso de IPC.

Ao mesmo tempo, o sandbox non elimina as vulnerabilidades do código, senón que só reduce os riscos e complica o ataque, xa que a explotación require identificar non unha, senón varias vulnerabilidades. Os métodos baseados na proba de código están limitados porque, para identificar erros, é necesario crear condicións para que o problema se manifeste. Non é posible cubrir todas as opcións posibles, polo que moitos erros pasan desapercibidos.

Para os procesos do sistema en Android, Google adhírese á "regra de dous", segundo a cal calquera código engadido non debe cumprir máis de dúas das tres condicións: traballar con datos de entrada non validados, usar unha linguaxe de programación non segura (C/C++) e funcionando sen un estrito illamento sandbox (con privilexios elevados). Esta regra implica que o código para procesar datos externos debe ser reducido a privilexios mínimos (illado) ou escrito nunha linguaxe de programación segura.

Google non pretende reescribir o código C/C++ existente en Rust, pero planea usar esta linguaxe para desenvolver código novo. Ten sentido usar Rust para o código novo porque, estatísticamente, a maioría dos erros aparecen no código novo ou modificado recentemente. En particular, preto do 50% dos erros de memoria detectados en Android detéctanse en código escrito hai menos dun ano.

Rust inclúese entre os principais idiomas para o desenvolvemento da plataforma Android


Fonte: opennet.ru

Engadir un comentario