Articulo de referencia

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 o proc...

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 o 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) se conoce a menudo 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 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 no autorizada de código. [ 2 ]

Tipos de vulnerabilidad

Existen varios tipos de vulnerabilidades que pueden permitir a un atacante ejecutar comandos o código arbitrarios. Por ejemplo:

Métodos

La ejecución de código arbitrario se logra comúnmente mediante el control del puntero de instrucción (como un salto o una bifurcación ) 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 datos de entrada que se almacenan en un búfer de entrada en la RAM ) y utilizan una vulnerabilidad para cambiar el puntero de instrucción y 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 utilizan una arquitectura Von Neumann ) no distinguen 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 recientes cuentan con mecanismos para dificultar esto, como un bit de no ejecución . [ 9 ] [ 10 ]

Combinado con la escalada de privilegios

Por sí sola, una vulnerabilidad de ejecución de código arbitrario otorgará al atacante los mismos privilegios que el proceso objetivo vulnerable. [ 11 ] Por ejemplo, si se explota una vulnerabilidad en un navegador web , un atacante podría actuar como el usuario, realizando acciones como modificar archivos de la 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 tuviera ese acceso).

Para sortear esta vulnerabilidad, una vez que un atacante logra ejecutar código arbitrario en el sistema objetivo, suele intentar una vulnerabilidad de escalada de privilegios para obtener mayor control. Esto puede implicar el propio kernel o una cuenta como Administrador, SYSTEM o root. Con o sin este control mejorado, las vulnerabilidades pueden causar daños graves o convertir el equipo en un zombi ; sin embargo, la escalada de privilegios ayuda a ocultar el ataque al administrador legítimo del sistema.

Ejemplos

Los aficionados a los videojuegos retro han logrado encontrar vulnerabilidades en videojuegos clásicos que les permiten ejecutar código arbitrario, generalmente utilizando una secuencia precisa de entradas de botones en un superjuego asistido por herramientas para causar un desbordamiento de búfer , lo que les permite escribir en memoria protegida . En Awesome Games Done Quick 2014, un grupo de speedrunners logró codificar y ejecutar versiones de los juegos Pong , Snake y Super Mario Bros. 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 1 de mayo de 2018, un investigador de seguridad descubrió una vulnerabilidad ACE en el compresor de archivos 7-Zip . [ 13 ]

El 12 de junio de 2018, el investigador de seguridad bosnio Jean-Yves Avenard de Mozilla descubrió una vulnerabilidad ACE en Windows 10. [ 14 ]

PHP ha sido objeto de numerosas vulnerabilidades ACE. [ 15 ] [ 16 ] [ 17 ]

El 9 de diciembre de 2021, se descubrió una vulnerabilidad de ejecución remota de código (RCE) denominada " Log4Shell " en el popular marco de registro Log4j , que afectaba a numerosos servicios, entre ellos iCloud , Minecraft: Java Edition y Steam , y que fue caracterizada como "la mayor y más crítica vulnerabilidad 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 remota de código: qué es y 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 de Turing universal (Preimpresión). arXiv : 2105.02124 .
  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. (2003). «Evolución de los conjuntos de instrucciones». Arquitectura de computadoras: una perspectiva minimalista . págs. 23–32 . doi : 10.1007/978-1-4615-0237-1_4 . ISBN  978-1-4613-4980-8.
  8. Reilly, Edwin D. (2003). Hitos en Ciencias de la Computación y Tecnologías 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 del original (PDF) el 31/10/2018 . Consultado el 31/10/2018 .
  10. "AMD te cubre" (PDF) . AMD . 2012. Archivado del original (PDF) el 5 de marzo de 2019.
  11. Winterfeld, Steve (2013). «Tácticas y procedimientos ofensivos». Los fundamentos de la guerra cibernética . págs. 67–82 . doi : 10.1016/B978-0-12-404737-2.00005-7 . ISBN  978-0-12-404737-2.
  12. Orland, Kyle (14 de enero de 2014). "Cómo un robot impulsado por un emulador reprogramó Super Mario World sobre la marcha" . Ars Technica . Recuperado el 27 de julio de 2016 .
  13. "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 del original el 15 de agosto de 2021. Consultado el 31 de octubre de 2018 .
  14. "Vulnerabilidad de ejecución de código arbitrario en Microsoft Windows CVE-2018-8213" . Symantec . Archivado del original el 31 de octubre de 2018. Consultado el 31 de octubre de 2018 .
  15. "NVD - CVE-2017-12934" . nvd.nist.gov . Consultado el 31 de octubre de 2018 .
  16. "Deserializamiento inducido por operaciones de archivo a través del envoltorio de flujo "phar://"" (PDF) . Secarma Labs . 2018.
  17. "NVD - CVE-2017-12933" . nvd.nist.gov . Consultado el 31 de octubre de 2018 .
  18. "Una vulnerabilidad de día cero en la omnipresente herramienta Log4j supone una grave amenaza para Internet" . Ars Technica . 9 de diciembre de 2021. Consultado el 11 de diciembre de 2021 .
  19. "Fallo de software descubierto recientemente: '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 .

Lecturas adicionales

  • Sommestad, Teodor; Holm, Hannes; Ekstedt, Mathias (junio de 2012). "Estimaciones de las tasas de éxito de los ataques de ejecución remota de código arbitrario". Information Management & Computer Security . 20 (2): 107– 122. doi : 10.1108/09685221211235625 .
  • Sun, Enbo; Han, Jiaxuan; Li, Yiquan; Huang, Cheng (2 de julio de 2024). "Un modelo de detección de carga útil de ataque de ejecución remota de código orientado al contenido de paquetes" . Future Internet . 16 (7): 235. doi : 10.3390/fi16070235 .
  • Jancewicz, Russell J.; Kiayias, Aggelos; Michel, Laurent D.; Russell, Alexander C.; Shvartsman, Alexander A. (2013). «Toma de control maliciosa de sistemas de votación: ejecución de código arbitrario en terminales de votación de escaneo óptico». Actas del 28.º Simposio Anual de la ACM sobre Computación Aplicada . págs. 1816–1823 . doi : 10.1145/2480362.2480702 . ISBN  978-1-4503-1656-9.