Programming·8 min read

Por qué la memory safety se ha convertido en prioridad de seguridad nacional

Agencias federales empujan a la industria hacia lenguajes con garantías. Rust y los kernels modernos están en el centro.

Dax Reyes
··5,210 views

Cuando la CISA publica una hoja de ruta, las grandes plataformas escuchan. El último informe de la Cybersecurity and Infrastructure Security Agency dedica un capítulo entero a un problema que lleva décadas acumulándose en silencio: el coste real de la corrupción de memoria en software escrito en C y C++.

Memory safety Rust kernel

La cifra que más circula en el sector es que entre el 60 y el 70% de las vulnerabilidades críticas reportadas en los últimos años tienen su origen en errores de gestión de memoria. Buffer overflows, use-after-free, double frees. Bugs que un compilador moderno podría detectar antes de que el código llegara a producción.

Por qué ahora

La pregunta razonable es: si este problema existe desde hace décadas, ¿por qué es una prioridad nacional ahora? La respuesta tiene varias capas.

Primero, la superficie de ataque ha crecido exponencialmente. El software embebido en infraestructura crítica —redes eléctricas, sistemas de control industrial, dispositivos médicos— está escrito en gran medida en C. A medida que más de esa infraestructura se conecta a internet, los bugs de memoria que antes eran solo un problema de estabilidad se convierten en vectores de ataque reales.

Segundo, la computación cuántica presiona a los equipos de seguridad a renovar stacks completos en los próximos años de todas formas. Si ya tienes que tocar el código, tiene sentido hacerlo con el lenguaje correcto.

Rust como respuesta técnica

El informe de la CISA no menciona Rust por su nombre, pero la dirección es inequívoca: lenguajes con garantías de seguridad de memoria en tiempo de compilación. Rust es hoy el único candidato serio para sistemas de bajo nivel.

// En Rust, el compilador detecta use-after-free antes de ejecutar
let s = String::from("hello");
let r = &s;
drop(s); // Error: no puedes mover s mientras r tiene una referencia
println!("{}", r);

El kernel de Linux ya acepta drivers en Rust en mainline. Google lleva dos años reescribiendo partes de Android con Rust. Microsoft ha anunciado que nuevos componentes del sistema operativo se escribirán en Rust por defecto.

La realidad de la migración

Reescribir código existente en C no es realista en la mayoría de casos. La estrategia que está funcionando es incremental: los módulos nuevos se escriben en Rust, los módulos críticos existentes se van reemplazando cuando se reescriben por otras razones, y los bindings de interoperabilidad permiten que ambos mundos coexistan.

Para equipos que trabajan en infraestructura crítica, el mensaje del informe es claro: la pregunta no es si migrar, sino cuándo y con qué plan.

TAGS

#rust#security#kernel
Share

Dax Reyes

Sistemas y Kernel

// Related

Por qué la memory safety se ha convertido en prioridad de seguridad nacional — SYNTHNODE