En seguridad informática , la ejecución de código arbitrario (ACE) es la capacidad de un atacante para ejecutar comandos o código arbitrarios en una máquina objetivo o en un proceso objetivo . [ cita requerida ] 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 que está diseñado para explotar tal 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 de código remoto (RCE).
Tipos de vulnerabilidad
Hay una serie de clases de vulnerabilidad que pueden conducir a la capacidad de un atacante para ejecutar comandos o códigos arbitrarios. Por ejemplo:
- Memoria de seguridad vulnerabilidades tales como desbordamientos de búfer o sobre-lee .
- Vulnerabilidades de deserialización [1]
- Tipo de confusión vulnerabilidades [2] [3]
- Ejecución de código arbitrario GNU LDD [4]
Métodos
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 permite controlar 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 la 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 , [5] [6] de modo que el código malicioso puede camuflarse como datos de entrada inofensivos. Muchas CPU más nuevas tienen mecanismos para hacer esto más difícil, como un bit de no ejecución . [7] [8]
Combinando con la escalada de privilegios
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. [ cita requerida ] 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 del sistema (a menos que el usuario en cuestión también tenía ese acceso).
Para evitar esto, una vez que un atacante puede ejecutar código arbitrario en un objetivo, a menudo se intenta una explotación de escalada de privilegios para obtener un control adicional. Esto puede involucrar al propio kernel o una cuenta como Administrador, SISTEMA o root. Con o sin este control mejorado, las vulnerabilidades 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.
Ejemplos de
Los aficionados a los retrojuegos han logrado encontrar vulnerabilidades en los videojuegos clásicos que les permiten ejecutar código arbitrario, generalmente utilizando una secuencia precisa de entradas de botones 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 logró codificar y ejecutar versiones de los juegos Pong y Snake en una copia de Super Mario World [9] utilizando un desbordamiento de búfer para escribir código arbitrario en la memoria .
El 12 de junio de 2018, el investigador de seguridad Jean-Yves Avenard de Mozilla descubrió una vulnerabilidad ACE en Windows 10 . [10]
El 1 de mayo de 2018, un investigador de seguridad descubrió una vulnerabilidad ACE en el archivador de archivos 7-Zip . [11]
PHP ha sido objeto de numerosas vulnerabilidades ACE. [12] [13] [14]
El 14 de julio de 2020, una empresa de seguridad de aplicaciones móviles Oversecured informó sobre un ACE en la biblioteca Google Play Core que condujo a la ejecución de código arbitrario en múltiples aplicaciones de Android, incluido Google Chrome . [15]
Ver también
- BlueKeep (vulnerabilidad de seguridad)
Referencias
- ^ "Deserialización de datos que no son de confianza" . owasp.org .
- ^ "Comprensión de las vulnerabilidades de confusión de tipos: CVE-2015-0336" . microsoft.com .
- ^ "Explotación de CVE-2018-19134: ejecución remota de código mediante confusión de tipos en Ghostscript" . lgtm.com .
- ^ https://catonmat.net/ldd-arbitrary-code-execution
- ^ Gilreath, William F .; Laplante, Phillip A. (31 de marzo de 2003). Arquitectura informática: una perspectiva minimalista . Springer Science & Business Media. ISBN 9781402074165.
- ^ Reilly, Edwin D. (2003). Hitos en Ciencias de la Computación y Tecnología de la Información . Grupo editorial Greenwood. pag. 245 . ISBN 9781573565219.
- ^ "Tech Insight: Ejecute Disable Bit (XD-Bit)" (PDF) . toshiba.pl . 2005.
- ^ "AMD lo tiene cubierto" (PDF) . amd.com . 2012.
- ^ Orland, Kyle (14 de enero de 2014). "Cómo un robot impulsado por un emulador reprogramó Super Mario World sobre la marcha" . arstechnica.com . Consultado el 27 de julio de 2016 .
- ^ "Vulnerabilidad de ejecución de código arbitrario de Microsoft Windows CVE-2018-8213 | Symantec" . www.symantec.com . Consultado el 31 de octubre de 2018 .
- ^ "Una vulnerabilidad en 7-Zip podría permitir la ejecución de código arbitrario" . Oficina de Servicios de Tecnología de la Información del Estado de Nueva York . Consultado el 31 de octubre de 2018 .
- ^ "NVD - CVE-2017-12934" . nvd.nist.gov . Consultado el 31 de octubre de 2018 .
- ^ "Deserialización inducida por operación de archivo a través del" phar: // "Stream Wrapper" (PDF) . Secarma Labs . 2018.
- ^ "NVD - CVE-2017-12933" . nvd.nist.gov . Consultado el 31 de octubre de 2018 .
- ^ "Android: ejecución de código arbitrario a través de contextos de paquetes de terceros" . Noticias, técnicas y guías . Consultado el 27 de enero de 2021 .