"Shell shock": se puede explotar cuando 'system ()' syscall o 'exec (bash)', ¿verdad?

0

¿Tengo entendido que para explotar a través de "Shell Shock", los binarios en los que tenemos influencia deben ejecutarse en bash (y debemos tener influencia en la línea de comandos)?

Por lo tanto, estoy en lo correcto, que si el binario no ejecuta bash directamente, y no usa la llamada al sistema system() (que usa el shell para la evaluación del comando), pero, en cambio, llama a los programas de ayuda a través de llamadas al sistema de exec() family (o cargas a través de carga dinámica como ld, etc.), dado que el binario dado es seguro "shell shocks" (Por supuesto, se aplica de forma transitoria, si podemos influir en cómo las aplicaciones de ayuda están llamando a sus aplicaciones de ayuda)

¿Y si el sistema expone solo dichos binarios a entradas del mundo externo, ese sistema dado es seguro para el "impacto de la cáscara"? (Por lo tanto, ¿verificar los criterios de evaluación de auditoría para verificar la falta de llamadas system() y exec() de bash?)

    
pregunta Grzegorz Wierzowiecki 27.09.2014 - 00:09
fuente

2 respuestas

5

Incorrecto en ambas cuentas.

Para explotar la vulnerabilidad "shell shock", un atacante debe controlar al menos una variable de entorno (fácil de hacer a través de CGI, SSH o DHCP), y bash debe invocarse en algún momento con la modificación. entorno: directamente como resultado de un exec() , indirectamente a través de system() o equivalente, altamente indirectamente a través de exec() de una aplicación de ayuda que a su vez llama a system() , y así sucesivamente.

bash tampoco necesita ser invocado por su nombre. En muchos sistemas, /bin/sh es un enlace simbólico o duro a /bin/bash , por lo que la ejecución de cualquier script que comience con #!/bin/sh dará como resultado que se ejecute bash .

    
respondido por el Mark 27.09.2014 - 00:16
fuente
1

Para agregar a lo que Mark dijo, también vale la pena señalar que execlp , execvp y execvpe invocan /bin/sh , ya que así es como realizan sus búsquedas de ruta. Por lo tanto, incluso sin los efectos de segunda generación que Mark menciona, el uso de la familia de funciones exec * no garantiza que no se invoque bash . La solución correcta es asegurarse de que ha instalado una versión parcheada de bash que no es susceptible a un impacto de shell. (Sí, eso no ofrece ninguna protección contra futuras vulnerabilidades).

    
respondido por el David 27.09.2014 - 12:17
fuente

Lea otras preguntas en las etiquetas