Esto está lejos de ser una tarea simple gracias a las técnicas de protección de memoria .
En los viejos tiempos de MS-DOS, Windows 9x y sistemas de computación doméstica equivalentes, la memoria se compartía por igual entre todos los procesos en ejecución. En tales condiciones, su sensación es correcta: cualquier proceso de usuario puede acceder y modificar la memoria de otros procesos, Incluso el kernel del sistema operativo no tiene ningún medio para protegerse completamente.
Pero esta es una vieja historia ahora. Como herencia de las computadoras centrales (grandes unidades de aspecto de nevera voluminosas utilizadas para tareas altamente sensibles y paralelas), sistemas operativos para computadoras domésticas y Las arquitecturas de procesadores recibieron técnicas de protección de memoria reales.
En la base de esta técnica hay un mapa que permite hacer coincidir un segmento de memoria con su proceso de propiedad. Gracias a esto, ya no se permite que un proceso acceda a nada fuera de su propia memoria. Si un proceso intenta romper esta regla (la mayoría de las veces como resultado de un error), el sistema operativo lo mata sin piedad (esto se teme falla de segmentación , o "segfault" para los íntimos).
¿Esto significa que la amenaza que estás describiendo nunca podrá volver a ocurrir? En seguridad, nunca diga "nunca" : todo sistema tan seguro como pueda parecer tiene su defecto:
- Todo el sistema está controlado por el kernel del sistema operativo, por lo que una falla en el kernel puede llevar a pasar por alto esta seguridad y obtener acceso a la memoria completa como en los viejos tiempos. Un ejemplo en Linux podría ser la llamada al sistema ptrace , diseñada para permitir rastrear (depurar) un proceso. Se encuentran Vulnerabilidades permitiendo de vez en cuando que un proceso sin privilegios abusen de esta función para lograr tal habilidad.
- En el otro lado de la cadena, es posible que también desee omitir el sistema operativo por completo y atacar directamente el almacenamiento físico de RAM. El ataque más conocido en esta categoría es el Hammeril : se ha encontrado que en muchos módulos de RAM el hecho de cambiar rápida y repetidamente el valor almacenado en una ubicación puede, debido a alguna debilidad electrónica, afectar y posiblemente cambiar un valor almacenado en una ubicación cercana.
Donde su pesadilla puede hacerse realidad con respecto a su lenguaje de scripting "bastante simple" es que hay, por ejemplo, un Implementación de JavaScript del ataque Row Hammer . Así que definitivamente sí, es posible que un programa de JavaScript sin privilegios inyecte algo de código en un proceso raíz. Sin embargo, esto no es una cosa simple, y a medida que se descubren nuevas formas de hacer esto, se desarrollan nuevas técnicas de protección: la historia sin fin de la seguridad de TI;)!