¿Por qué Shellshock funciona en una cadena de usuario?

3

Me preguntaba por qué funciona Shellshock cuando se coloca en el agente de usuario.

Según lo que pude encontrar, es porque un servidor web (por ejemplo, Apache) utiliza la cadena de usuario en su funcionamiento interno.

  1. ¿Por qué a un servidor web le importa el agente de usuario? Las decisiones de AFAIK basadas en el agente de usuario se toman en la aplicación con el programador que desarrolla la lógica como si (móvil): muestre la versión móvil, etc.
  2. ¿Por qué el servidor web usaría una Variable de entorno para manejar esto? ¿no podría hacerse esto a través de la forma regular de valores variables con suficiente saneamiento en la entrada? Por lo que sé, env-vars no son exclusivos de bash, están definidos en un amplio alcance del sistema. ¡Todavía no consigo la conexión!
pregunta Sam 17.11.2014 - 13:49
fuente

1 respuesta

3

Un servidor web podría usar el contenido del User-Agent para el encabezado fines de registro , para controlar el acceso (" deny all bots ") o devolver respuestas alternativas (" páginas compatibles con dispositivos móviles " ). La validez de un valor de encabezado depende de la aplicación, no es posible escribir en una regla que funcione con todo.

Considere el encabezado Cookie . Un sitio podría usarlo simplemente para almacenar un identificador de sesión como sessionid=01234567890abcdef . Un sitio diferente puede elegir almacenar locales, como lang=nl-NL . Podría aplicar una lista negra de caracteres, pero alguien podría explotar un error en su aplicación que haga que lang=--help sea tratado como una línea de comandos opción .

Para los programas CGI , los navegadores web normalmente invocarán el script y pasarán los encabezados a través de variables de entorno tales que el script también puede utilizar esta información. Esto no se limita al encabezado User-Agent , los valores de Cookie podrían ser más interesantes para el script. El "formulario de entrada" que usted describe es diferente de los encabezados. Los encabezados aparecen antes del cuerpo del mensaje.

Ahora sobre el error Bash que conduce al problema de seguridad "Shellshock", todo lo que necesita es el control sobre al menos una variable de entorno. Como puede ver, el acceso CGI directo en un servidor web es un ejemplo donde se cumple esa condición. También podría verse afectado cuando el programa (PHP, Cgit, ...) invoque el shell, directamente (a través de un script de shell ) o indirectamente (a través de un comando de shell ).

    
respondido por el Lekensteyn 17.11.2014 - 14:14
fuente

Lea otras preguntas en las etiquetas