Si la popularidad del lenguaje de la óxido está ganando impulso, muchas bases de código básicas que se encuentran tanto en sistemas críticos, aplicaciones como en aplicaciones como en aplicaciones como en bibliotecassiempre se escriben en C. una situación propicia para un floración de herramientas (como C2Rust que traduce el código C99 en Rust Insegurt) capaz de transcribir automáticamente el código C al óxido, pero que no dibuja parte de su función segura para evitar errores de memoria. A pesar de las décadas de investigación, estos problemas siguen siendo frecuentes en muchas aplicaciones y estudios recientes de Google y Microsoft estiman que el 70% de las vulnerabilidades de seguridad están vinculadas a la gestión de memoria incorrecta.

Dos investigadores de seguridad, Aymérico de Shherz, del equipo de Prosecco a Inria París y Jonathan Protzenko, del grupo de investigación de Microsoft, pueden haber encontrado una solución. En periódicoAnuncian que han desarrollado un componente de C, Mini-C, que evita los diagramas y características comunes al lenguaje C que no se puede traducir directamente al lenguaje seguro de óxido. "Prefamos explorar una ruta diferente y estudiar qué hacer para traducir la C en el óxido seguro, es decir, para producir un código que sea trivialmente seguro en la memoria, ya que respeta el sistema de tipos de óxido sin bodega", explique los investigadores. "Nuestro trabajo presenta varias contribuciones originales: una traducción orientada a los tipos de un subconjunto de c a la caja fuerte de óxido; un nuevo análisis estático basado en" árboles divididos "que hace posible expresar la aritmética de los políticos de c c. [possibilité d'effectuer des calculs sur des adresses mémoire, ndlr] Utilizando las rodajas de Rust y las operaciones de división; Un análisis que deduce exactamente qué préstamos debería ser mutable; y una estrategia de compilación para las estructuras de C compatibles con la distinción de óxido entre asignaciones no publicadas y poseídas. "

Conversiones de código c a oxidación a salvo de HACL y Everparse

Se realizó una primera prueba de conversión basada en la biblioteca de cifrado HACL (80,000 líneas de código C) y en Everparse, se llevó a cabo una biblioteca de entrenadores y serializadores verificados compuestos por 1.400 líneas del Código C. Según los investigadores, este galope de prueba fue concluyente: "La conversión de ACCL requirió cambios de código mínimo, mientras que la conversión de Everparse funcionó sin modificar el código fuente". Por lo tanto, el código de óxido presentó el mismo perfil de rendimiento que el código C original, a pesar de la adición de punteros de grasa y verificaciones de límites de tiempo de ejecución.

Los autores también indican que su ACCL compilado en Rust se ha integrado en la Biblioteca Criptográfica Libcrux, algunos de los cuales se agregaron al NSS de Mozilla y OpenSSH. "Nuestra evaluación muestra que para los pocos elementos que violan la disciplina de alias de Rust [lorsque deux variables ou plus font référence au même objet, ndlr]Las reescrituras automatizadas y precisas son suficientes, y las pocas copias estratégicas insertadas tienen un impacto insignificante en el rendimiento ", dijeron Aymeric Fromherz y Jonathan Protzenko.