stringtranslate.com

Ejecución de código arbitrario

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]

Tipos de vulnerabilidad

Existen varios tipos de vulnerabilidades que pueden permitir que un atacante ejecute comandos o códigos arbitrarios. Por ejemplo:

Métodos

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]

Combinación con 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. [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.

Ejemplos

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]

Véase también

Referencias

  1. ^ Equipo de KernelCare (25 de enero de 2021). "Ataque de ejecución de código remoto: qué es, cómo proteger sus sistemas". blog.kernelcare.com . Consultado el 22 de septiembre de 2021 .
  2. ^ Johnson, Pontus (2021). "¿Propensión intrínseca a la vulnerabilidad en las computadoras? Ejecución de código arbitrario en la máquina universal de Turing". arXiv : 2105.02124 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  3. ^ "Deserialización de datos no confiables". owasp.org .
  4. ^ "Comprensión de las vulnerabilidades de confusión de tipos: CVE-2015-0336". microsoft.com . 18 de junio de 2015.
  5. ^ "Explotación de CVE-2018-19134: ejecución remota de código mediante confusión de tipos en Ghostscript". lgtm.com . 5 de febrero de 2019.
  6. ^ "Ejecución de código arbitrario LDD".
  7. ^ Gilreath, William F.; Laplante, Phillip A. (31 de marzo de 2003). Arquitectura informática: una perspectiva minimalista. Springer Science & Business Media. ISBN 9781402074165.
  8. ^ Reilly, Edwin D. (2003). Hitos en la informática y la tecnología de la información . Greenwood Publishing Group. pág. 245. ISBN 9781573565219.
  9. ^ "Tech Insight: Execute Disable Bit (XD-Bit)" (PDF) . Toshiba Polska . 2005. Archivado desde el original (PDF) el 2018-10-31 . Consultado el 2018-10-31 .
  10. ^ "AMD lo tiene cubierto" (PDF) . AMD . 2012. Archivado desde el original (PDF) el 5 de marzo de 2019.
  11. ^ "Ejecución remota de código: descripción general". Temas de ScienceDirect . Consultado el 5 de diciembre de 2021 .
  12. ^ Orland, Kyle (14 de enero de 2014). «Cómo un robot alimentado por emulador reprogramó Super Mario World sobre la marcha». Ars Technica . Consultado el 27 de julio de 2016 .
  13. ^ "Vulnerabilidad de ejecución de código arbitrario CVE-2018-8213 en Microsoft Windows". Symantec . Archivado desde el original el 31 de octubre de 2018 . Consultado el 31 de octubre de 2018 .
  14. ^ "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 . Archivado desde el original el 15 de agosto de 2021. Consultado el 31 de octubre de 2018 .
  15. ^ "NVD - CVE-2017-12934". nvd.nist.gov . Consultado el 31 de octubre de 2018 .
  16. ^ "Anulación de serialización inducida por operación de archivo a través del contenedor de flujo "phar://"" (PDF) . Secarma Labs . 2018.
  17. ^ "NVD - CVE-2017-12933". nvd.nist.gov . Consultado el 31 de octubre de 2018 .
  18. ^ "El día cero en la herramienta ubicua Log4j plantea una grave amenaza para Internet". Ars Technica . 9 de diciembre de 2021 . Consultado el 11 de diciembre de 2021 .
  19. ^ "Un fallo de software descubierto recientemente es la 'vulnerabilidad más crítica de la última década'". The Guardian . 11 de diciembre de 2021 . Consultado el 11 de diciembre de 2021 .