Lenguajes con seguridad de memoria
¿Qué es Lenguajes con seguridad de memoria?
Lenguajes con seguridad de memoriaLos lenguajes con seguridad de memoria como Rust, Go, Swift, Java y C# evitan los errores espaciales y temporales de memoria que originan la mayoria de vulnerabilidades explotables en C y C++.
Estos lenguajes imponen limites, gestion de propiedad o tiempos de vida con recoleccion de basura, y consistencia de tipos en tiempo de compilacion o de ejecucion. Rust usa un sistema de ownership y borrow checker para conseguir seguridad sin recolector; Go y Swift dependen de asignacion gestionada y slices con comprobacion de limites; Java y C# se basan en un runtime gestionado. El informe Back to the Building Blocks de la Oficina del Director Nacional de Ciberseguridad de EE. UU. (ONCD, 2024) recomienda adoptar lenguajes memory safe para codigo nuevo y componentes criticos, con el fin de eliminar el 60-70 por ciento de vulnerabilidades graves originadas en errores de memoria. Las estrategias de adopcion incluyen reescribir hotspots, patrones strangler y limites FFI.
● Ejemplos
- 01
Android escribe partes del stack Bluetooth en Rust para reducir riesgo de UAF.
- 02
AWS reescribe partes de Firecracker y s2n-tls en Rust por seguridad de memoria.
● Preguntas frecuentes
¿Qué es Lenguajes con seguridad de memoria?
Los lenguajes con seguridad de memoria como Rust, Go, Swift, Java y C# evitan los errores espaciales y temporales de memoria que originan la mayoria de vulnerabilidades explotables en C y C++. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa Lenguajes con seguridad de memoria?
Los lenguajes con seguridad de memoria como Rust, Go, Swift, Java y C# evitan los errores espaciales y temporales de memoria que originan la mayoria de vulnerabilidades explotables en C y C++.
¿Cómo funciona Lenguajes con seguridad de memoria?
Estos lenguajes imponen limites, gestion de propiedad o tiempos de vida con recoleccion de basura, y consistencia de tipos en tiempo de compilacion o de ejecucion. Rust usa un sistema de ownership y borrow checker para conseguir seguridad sin recolector; Go y Swift dependen de asignacion gestionada y slices con comprobacion de limites; Java y C# se basan en un runtime gestionado. El informe Back to the Building Blocks de la Oficina del Director Nacional de Ciberseguridad de EE. UU. (ONCD, 2024) recomienda adoptar lenguajes memory safe para codigo nuevo y componentes criticos, con el fin de eliminar el 60-70 por ciento de vulnerabilidades graves originadas en errores de memoria. Las estrategias de adopcion incluyen reescribir hotspots, patrones strangler y limites FFI.
¿Cómo defenderse de Lenguajes con seguridad de memoria?
Las defensas contra Lenguajes con seguridad de memoria combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Lenguajes con seguridad de memoria?
Nombres alternativos comunes: MSL, Lenguajes memory safe.
● Términos relacionados
- appsec№ 670
Seguridad de memoria
La seguridad de memoria es la propiedad de que un programa nunca lee, escribe ni ejecuta memoria que no haya asignado legitimamente, evitando clases enteras de vulnerabilidades.
- appsec№ 953
Propiedades de seguridad de Rust
Rust impone seguridad de memoria y de hilos en tiempo de compilacion mediante ownership, borrowing y lifetimes, eliminando UAF y carreras de datos sin recolector de basura.
- appsec№ 217
Integridad del flujo de control
La integridad de flujo de control (CFI) restringe las llamadas indirectas y los retornos del programa a un conjunto precomputado de destinos legitimos, bloqueando ROP y JOP.
- appsec№ 064
ASLR
La aleatorización del espacio de direcciones distribuye al azar la ubicación en memoria de código, pilas, montones y librerías para impedir que un atacante prediga direcciones.
- appsec№ 925
Return-Oriented Programming
ROP es una tecnica de explotacion por reutilizacion de codigo que encadena secuencias cortas terminadas en RET para ejecutar computacion arbitraria sin inyectar codigo nuevo.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) es una caracteristica de CPU que combina shadow stack hardware e Indirect Branch Tracking (IBT) para bloquear ROP, JOP y COP.
● Véase también
- № 581KASLR