Después de traer soporte para el lenguaje de programación de sistemas Rust a Android, Google ahora está buscando llevarlo al kernel de Linux para reducir fallas de seguridad.
Como explicó Google el mes pasado , Rust, un lenguaje que surgió de Mozilla, brinda garantías de seguridad de la memoria al sistema operativo Android, que históricamente se ha escrito en C y C ++.
Google está apuntando a Rust en el nuevo código de Android, en lugar de reescribir los millones de líneas de código existente en Rust.
Ahora es el momento de pasar al kernel de Linux que subyace a Android. Como informó el mes pasado la autoridad de código abierto, Steven J. Vaughan-Nichols , los desarrolladores del kernel de Linux creen que tiene sentido escribir nuevas partes del kernel en Rust en lugar de reescribir todo el kernel de Linux, que contiene más de 30 millones de líneas de código escrito en gran parte en C.
“Creemos que Rust ahora está listo para unirse a C como un lenguaje práctico para implementar el kernel. Puede ayudarnos a reducir la cantidad de errores potenciales y vulnerabilidades de seguridad en el código privilegiado mientras jugamos bien con el núcleo del kernel y preserva sus características de rendimiento”. explica Wedson Almeida Filho del equipo de Android de Google .
Filho señala que la densidad de errores de seguridad de la memoria en el kernel de Linux es bastante baja. Sin embargo, cuando ocurren, el equipo de seguridad de Android generalmente los considera fallas de alta gravedad.
Para mostrar dónde puede beneficiar Rust a los desarrolladores del kernel de Linux, Google ha desarrollado un controlador de ejemplo llamado ‘semáforo’.
“La forma en que Rust puede ayudar al desarrollador es el aspecto que nos gustaría enfatizar”, señala Filho. “Por ejemplo, en el momento de la compilación nos permite eliminar o reducir en gran medida las posibilidades de introducir clases de errores, mientras que al mismo tiempo permanecemos flexibles y con una sobrecarga mínima”.
El desarrollador del kernel de Linux, Miguel Ojeda, lanzó esta semana una solicitud de comentarios (RFC) a la lista de correo de Linux que describe una propuesta para un segundo idioma en el kernel junto con varios parches para el kernel de Linux escritos en Rust.
Ojeda también creó el grupo Rust para Linux , al que también se ha unido el equipo de Android de Google.
“Sabemos que existen enormes costos y riesgos al introducir un nuevo lenguaje principal en el kernel. Nos arriesgamos a dividir los esfuerzos y aumentamos el conocimiento necesario para contribuir con algunas partes del kernel”, escribe Ojeda.
“Lo más importante es que cualquier nuevo idioma introducido significa que cualquier módulo escrito en ese idioma será mucho más difícil de reemplazar más adelante si se elimina el soporte para el nuevo idioma. Sin embargo, creemos que, incluso hoy, las ventajas de usar Rust superan el costo “.
Como señaló Phoronix , el creador del kernel de Linux Linus Torvalds ya ha expresado algunas preocupaciones con Rust, aunque también dijo que “en general, no lo odio”. Sin embargo, Torvalds agregó que “el ‘pánico por fallas en tiempo de ejecución’ es un tema fundamental”.
Filho explicó que, dado que Rust es nuevo en el kernel, existe la oportunidad de mejorar los procesos y la documentación.
“Por ejemplo, tenemos requisitos específicos verificados por máquina en torno al uso de código inseguro: para cada función insegura, el desarrollador debe documentar los requisitos que deben satisfacer las personas que llaman para garantizar que su uso sea seguro; además, para cada llamada a funciones inseguras (o el uso de construcciones inseguras como desreferenciar un puntero en bruto), el desarrollador debe documentar la justificación de por qué es seguro hacerlo “, escribe Filho.
Rust, que solo alcanzó 1.0 en 2015, parece estar ganando terreno entre los desarrolladores. AWS, Huawei, Google, Microsoft y Mozilla respaldan la Fundación Rust, que se lanzó en febrero . Se cree que Shane Miller, gerente senior de ingeniería de AWS, ha sido elegido el primer presidente de la fundación .