Daño de un ETag filtrado

1

He leído varias veces que los ETags filtrados de los servidores web se consideran una vulnerabilidad de fuga de información.

Por ejemplo, en los encabezados de respuesta del servidor:

ETag: X/"1234-56789"

Pero no he encontrado una razón por la que esto sea un problema o cómo se pueda abusar de él.

Por supuesto, cualquier información adicional que no se requiere para que la aplicación funcione debe ser eliminada, pero ¿qué daño puede causar un ETag filtrado (por lo tanto, inodo)?

Edite: Rapid7 por ejemplo vea esto como una severidad de cuatro .

    
pregunta Breakfast Serial 25.05.2018 - 07:28
fuente

1 respuesta

6

El cliente utiliza el encabezado ETag para el almacenamiento en caché efectivo de los recursos del lado del servidor. El servidor envía un encabezado ETag en la respuesta HTTP a alguna cadena y el cliente almacena en caché el contenido de la respuesta y asocia la cadena dada en el encabezado ETag . Si el cliente desea acceder al mismo recurso nuevamente, enviará la cadena dada dentro de un encabezado If-None-Match en la solicitud HTTP y el servidor solo devolverá el contenido completo si el recurso ha sido cambiado y, de lo contrario, le informará al cliente que el contenido almacenado en caché puede ser usado. Consulte Wikipedia para obtener más detalles.

Esto significa que cada cliente puede obtener un encabezado ETag del servidor, es decir, el valor del encabezado no es secreto. Por lo tanto, contrariamente a su pregunta, la filtración de dicho encabezado no es el problema.

El problema es, en cambio, si el valor del encabezado (es decir, la cadena) proporciona información sobre el servidor que debe permanecer en secreto. A menudo, el valor del encabezado es solo un hash sobre el contenido del recurso que no es un problema en absoluto. Pero, por ejemplo, el servidor web Apache puede basar el ETag en el número de inodo, la hora de la última modificación y / o el tamaño del archivo. Usando esta metainformación, se puede crear un ETag único mucho más rápido en comparación con el cálculo del hash del contenido. Solo, al menos el número de inodo se considera información interna del servidor y no debe ser expuesto al cliente. Si bien no se puede utilizar en ataques, se puede utilizar directamente el conocimiento de muchos números de inodo para obtener, por ejemplo, información sobre el sistema de archivos subyacente que podría ayudar en futuros ataques contra el servidor.

Esto significa que el número de inodo no debe ser extraíble del encabezado ETag porque debe permanecer secreto. Esto se solucionó con Apache 1.3.27 (hace mucho tiempo), es decir, el número de inodo todavía se usa para calcular el ETag pero de una manera que no se puede extraer del valor ETag .

  

Editar: Rapid7, por ejemplo, ve esto como una severidad de cuatro.

La puntuación CVSS se calcula a partir de varias partes. Los detalles para este problema específico se puede ver aquí pero esencialmente se reduce a que es trivial de usar, se puede hacer a través de la red, no necesita autenticación y proporciona información interna sobre el servidor.

    
respondido por el Steffen Ullrich 25.05.2018 - 08:01
fuente

Lea otras preguntas en las etiquetas