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 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]

Tipos de vulnerabilidad

Hay varias clases de vulnerabilidad que pueden hacer que un atacante pueda ejecutar comandos o códigos arbitrarios. Por ejemplo:

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 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]

Combinando 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 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.

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 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]

Ver también

Referencias

  1. ^ Equipo, KernelCare (25 de enero de 2021). "Ataque de ejecución remota de código: qué es, cómo proteger sus sistemas". blog.kernelcare.com . Consultado el 22 de septiembre de 2021 .
  2. ^ Johnson, Ponto (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}}: Citar diario requiere |journal=( ayuda )
  3. ^ "Deserialización de datos que no son de confianza". 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. Medios de ciencia y negocios de Springer. ISBN 9781402074165.
  8. ^ Reilly, Edwin D. (2003). Hitos en Informática y Tecnologías de la Información . Grupo editorial Greenwood. pag. 245.ISBN _ 9781573565219.
  9. ^ "Tech Insight: ejecutar bit de desactivación (XD-Bit)" (PDF) . Toshiba Polonia . 2005. Archivado desde el original (PDF) el 31 de octubre de 2018 . Consultado el 31 de octubre de 2018 .
  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 impulsado por un emulador reprogramó Super Mario World sobre la marcha". Ars Técnica . Consultado el 27 de julio de 2016 .
  13. ^ "Vulnerabilidad de ejecución de código arbitrario de Microsoft Windows CVE-2018-8213". 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. ^ "Desserialización inducida por operación de archivo a través de" phar:// "Stream Wrapper" (PDF) . Laboratorios Secarma . 2018.
  17. ^ "NVD-CVE-2017-12933". nvd.nist.gov . Consultado el 31 de octubre de 2018 .
  18. ^ "Zeroday en la omnipresente herramienta Log4j representa una grave amenaza para Internet". Ars Técnica . 9 de diciembre de 2021 . Consultado el 11 de diciembre de 2021 .
  19. ^ "La falla de software recientemente descubierta es la vulnerabilidad más crítica de la última década'". El guardián . 11 de diciembre de 2021 . Consultado el 11 de diciembre de 2021 .