En seguridad informática , la ejecución de código arbitrario (ACE) es la capacidad de un atacante para 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 una falla de seguridad en el software o hardware que permite la ejecución de código arbitrario. Un programa diseñado para explotar dicha vulnerabilidad se denomina exploit de ejecución de código arbitrario . La capacidad de desencadenar 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 denomina ejecución remota de código (RCE).
La ejecución de código arbitrario significa que si alguien envía un conjunto de datos especialmente diseñado a una computadora, puede obligarla a hacer lo que quiera. Aunque esta debilidad particular puede no causar problemas reales en el mundo real, los investigadores han discutido si sugiere una tendencia natural de las computadoras a tener vulnerabilidades que permitan la ejecución de código no autorizado. [2]
Hay varias clases de vulnerabilidad que pueden hacer que un atacante pueda ejecutar comandos o códigos arbitrarios. Por ejemplo:
La ejecución de código arbitrario se logra comúnmente mediante el 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 del proceso que se ejecutará. Por lo tanto, el control sobre el valor del puntero de instrucción proporciona 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 información que se almacena en un búfer de entrada en la RAM ) y utilizan 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 aprovecha el hecho de que la mayoría de las computadoras (que utilizan 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 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 tenía ese acceso).
Para solucionar este problema, una vez que un atacante puede ejecutar código arbitrario en un objetivo, a menudo hay un intento de explotar la escalada de privilegios para obtener control adicional. Esto puede involucrar al propio kernel o a 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 la computadora 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 un superjuego asistido por herramientas para provocar un desbordamiento del búfer , lo que les permite escribir en la memoria protegida . En Awesome Games Done Quick 2014 , un grupo de entusiastas del speedrunning lograron codificar y ejecutar versiones de los juegos Pong y Snake en una copia de Super Mario World [12] utilizando un desbordamiento de búfer para escribir código arbitrario en la memoria .
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 de 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 caracteriza como "la vulnerabilidad más grande y crítica de la última década". . [18] [19]
{{cite journal}}
: Citar diario requiere |journal=
( ayuda )