En seguridad informática , la ejecución de código arbitrario ( ACE ) es la capacidad de un atacante de ejecutar cualquier comando o código de su elección en una máquina objetivo o en un proceso objetivo . [1] Una vulnerabilidad de ejecución de código arbitrario es un fallo de seguridad en el software o hardware que permite la ejecución de código arbitrario. Un programa que está diseñado para explotar dicha vulnerabilidad se denomina exploit de ejecución de código arbitrario . La capacidad de activar la ejecución de código arbitrario a través de una red (especialmente a través de una red de área amplia como Internet) a menudo se conoce como ejecución remota de código ( RCE o RCX ).
La ejecución arbitraria de código significa que si alguien envía un conjunto de datos especialmente diseñado a una computadora, puede hacer que ésta haga lo que quiera. Aunque esta debilidad en particular puede no causar problemas reales en el mundo real, los investigadores han debatido si sugiere una tendencia natural de las computadoras a tener vulnerabilidades que permitan la ejecución de código no autorizado. [2]
Existen varios tipos de vulnerabilidades que pueden permitir que un atacante ejecute comandos o códigos arbitrarios. Por ejemplo:
La ejecución de código arbitrario se logra comúnmente a través del control sobre el puntero de instrucción (como un salto o una rama ) de un proceso en ejecución . El puntero de instrucción apunta a la siguiente instrucción en el proceso que se ejecutará. Por lo tanto, el control sobre el valor del puntero de instrucción otorga control sobre qué instrucción se ejecuta a continuación. Para ejecutar código arbitrario, muchos exploits inyectan código en el proceso (por ejemplo, enviándole una entrada que se almacena en un búfer de entrada en la RAM ) y usan una vulnerabilidad para cambiar el puntero de instrucción para que apunte al código inyectado. El código inyectado se ejecutará automáticamente. Este tipo de ataque explota el hecho de que la mayoría de las computadoras (que usan una arquitectura Von Neumann ) no hacen una distinción general entre código y datos , [7] [8] de modo que el código malicioso puede camuflarse como datos de entrada inofensivos. Muchas CPU más nuevas tienen mecanismos para dificultar esto, como un bit de no ejecución . [9] [10]
Por sí solo, un exploit de ejecución de código arbitrario le dará al atacante los mismos privilegios que el proceso objetivo que es vulnerable. [11] Por ejemplo, si se explota una falla en un navegador web , un atacante podría actuar como el usuario, realizando acciones como modificar archivos de computadora personal o acceder a información bancaria, pero no podría realizar acciones a nivel de sistema (a menos que el usuario en cuestión también tuviera ese acceso).
Para solucionar este problema, una vez que un atacante puede ejecutar código arbitrario en un objetivo, suele intentar explotarlo mediante una escalada de privilegios para obtener un control adicional. Esto puede implicar el propio núcleo o una cuenta como Administrador, SISTEMA o raíz. Con o sin este control mejorado, los exploits tienen el potencial de causar daños graves o convertir el equipo en un zombi , pero la escalada de privilegios ayuda a ocultar el ataque al administrador legítimo del sistema.
Los aficionados a los retrogaming han logrado encontrar vulnerabilidades en los videojuegos clásicos que les permiten ejecutar código arbitrario, generalmente usando una secuencia precisa de entradas de botones en una superjugada asistida por herramientas para causar un desbordamiento de búfer , lo que les permite escribir en la memoria protegida . En Awesome Games Done Quick 2014 , un grupo de entusiastas del speedrunning logró codificar y ejecutar versiones de los juegos Pong y Snake en una copia de Super Mario World [12] utilizando una lectura fuera de límites de un puntero de función que apunta a un búfer controlado por el usuario para ejecutar código arbitrario.
El 12 de junio de 2018, el investigador de seguridad bosnio Jean-Yves Avenard de Mozilla descubrió una vulnerabilidad ACE en Windows 10. [ 13]
El 1 de mayo de 2018, un investigador de seguridad descubrió una vulnerabilidad ACE en el archivador de archivos 7-Zip . [14]
PHP ha sido objeto de numerosas vulnerabilidades ACE. [15] [16] [17]
El 9 de diciembre de 2021, se descubrió una vulnerabilidad RCE llamada " Log4Shell " en el popular marco de registro Log4j , que afecta a muchos servicios, incluidos iCloud , Minecraft: Java Edition y Steam , y se caracterizó como "la vulnerabilidad más grande y crítica de la última década". [18] [19]
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )