El lenguaje de programación seguro ‘viral’ que se está apoderando de la tecnología


Estos tipos de vulnerabilidades no son solo errores de software esotéricos. La investigación y la auditoría han encontrado repetidamente que constituyen la mayoría de todas las vulnerabilidades de software. Entonces, si bien aún puede cometer errores y crear fallas de seguridad mientras programa en Rust, la oportunidad de eliminar las vulnerabilidades de seguridad de la memoria es significativa.

“Los problemas de seguridad de la memoria son responsables de un enorme, enorme porcentaje de todas las vulnerabilidades informadas, y esto ocurre en aplicaciones críticas como sistemas operativos, teléfonos móviles e infraestructura”, dice Dan Lorenc, director ejecutivo de la empresa de seguridad de la cadena de suministro de software Chainguard. “Durante las décadas en que la gente ha estado escribiendo código en lenguajes inseguros para la memoria, hemos tratado de mejorar y construir mejores herramientas y enseñar a la gente cómo no cometer estos errores, pero hay límites en cuanto a lo que puede decirle a la gente que se esfuerce más. en realidad funciona Por lo tanto, necesita una nueva tecnología que haga que toda esa clase de vulnerabilidades sea imposible, y eso es lo que Rust finalmente está poniendo sobre la mesa».

Rust no está exento de escépticos y detractores. El esfuerzo de los últimos dos años para implementar Rust en Linux ha sido controvertido, en parte porque agregar soporte para cualquier otro lenguaje aumenta inherentemente la complejidad, y en parte debido a los debates sobre cómo, específicamente, hacer que todo funcione. Pero los defensores enfatizan que Rust tiene los elementos necesarios, no causa pérdida de rendimiento e interactúa bien con el software escrito en otros lenguajes, y que es crucial simplemente porque satisface una necesidad extrema.

“Es menos que sea la elección correcta y más que esté listo”, dice Lorenc, colaborador e investigador de código abierto desde hace mucho tiempo. “No hay alternativas reales en este momento, además de no hacer nada, y eso ya no es una opción. Continuar usando código inseguro para la memoria durante otra década sería un gran problema para la industria tecnológica, para la seguridad nacional, para todo”.

Sin embargo, uno de los mayores desafíos de la transición a Rust son precisamente todas las décadas que los desarrolladores ya han pasado escribiendo código vital en lenguajes que no son seguros para la memoria. Escribir nuevo software en Rust no aborda esa acumulación masiva. La implementación del kernel de Linux, por ejemplo, comienza en la periferia al admitir controladores basados ​​en Rust, los programas que coordinan entre un sistema operativo y hardware como una impresora.

“Cuando trabajas con sistemas operativos, la velocidad y el rendimiento siempre son lo más importante, y las partes que ejecutas en C++ o C suelen ser las partes que simplemente no puedes ejecutar en Java u otros sistemas seguros para la memoria. idiomas, debido al rendimiento”, dice Kleidermacher de Google. “Entonces, poder ejecutar Rust y tener el mismo rendimiento pero obtener la seguridad de la memoria es realmente genial. Pero es un viaje. No se puede ir y reescribir 50 millones de líneas de código de la noche a la mañana, por lo que estamos eligiendo cuidadosamente los componentes críticos para la seguridad y, con el tiempo, actualizaremos otras cosas”.

En Android, Kleidermacher dice que muchas funciones de administración de claves de cifrado ahora están escritas en Rust, al igual que la función de comunicación privada de Internet DNS sobre HTTPS, una nueva versión de la pila de chips de banda ultraancha y el nuevo marco de virtualización de Android utilizado en Chips Tensor G2 personalizados de Google. Agrega que el equipo de Android está convirtiendo cada vez más las pilas de conectividad como las de Bluetooth y Wi-Fi a Rust porque se basan en estándares industriales complejos y tienden a contener muchas vulnerabilidades. En resumen, la estrategia es comenzar a obtener beneficios de seguridad incrementales al convertir los componentes de software más expuestos o vitales a Rust primero y luego trabajar hacia adentro desde allí.



Source link-46