Apache Web Server ETag Header Information Disclosure Weakness

sherlock_tux

Os servidores Apache que possuem a diretiva FileETag habilitada estão sujeitos uma vulnerabilidade, que permite ao atacante obter informações confidenciais a respeito do servidor.

Ao desabilitar os cabeçalhos ETag, os servidores de Cache e os Navegadores não conseguem validar os arquivos. Desta forma eles são obrigados a confiar em seus mecanismos de “Cache-Control” e cabeçalhos de expiração.

Em linhas gerais as Tags de Entidade (GATE) são um mecanismo para verificar se há uma versão mais recente de um arquivo em cache.

Para desabilitar as ETags, execute o procedimento descrito a seguir.

O primeiro passo é desativar as ETags na configuração associada a porta 80/TCP, ou seja, devemos editar o arquivo que descreve como será servido o protocolo HTTP.

Desta forma, devemos editar o arquivo /etc/apache2/sites-available/default. Na seção, acrescente a seguinte linha:

FileETag none

O Início do arquivo deve ficar semelhante às linhas abaixo:

<VirtualHost *:80>
        DocumentRoot /var/www

        <Directory />
			Options FollowSymLinks
			AllowOverride None
			FileETag None
		</Directory>
		...

O próximo passo é desativar as ETags na configuração associada a porta 443/TCP, ou seja, devemos editar o arquivo que descreve como será servido o protocolo HTTPS.

Desta forma, devemos editar o arquivo /etc/apache2/sites-available/default-ssl. Na seção, acrescente a seguinte linha:

FileETag none

O Início do arquivo deve ficar semelhante às linhas abaixo:

<IfModule mod_ssl.c>

<VirtualHost _default_:443>

	DocumentRoot /var/www

	<Directory />
		Options FollowSymLinks
		AllowOverride None
		FileETag None
	</Directory>
	...

Com os arquivos de configuração ajustados podemos reiniciar o daemondo apache:

service  apache2  restart

Para ter certeza que o serviço está funcionando, podemos utilizar o comando abaixo:

lsof  -i | grep apache

O qual deve gerar uma saída semelhante á:

apache2  4119          root    4u  IPv6  40945      0t0  TCP *:www (LISTEN)
apache2  4119          root    6u  IPv6  40949      0t0  TCP *:https (LISTEN)
apache2  4127      www-data    4u  IPv6  40945      0t0  TCP *:www (LISTEN)
apache2  4127      www-data    6u  IPv6  40949      0t0  TCP *:https (LISTEN)
apache2  4128      www-data    4u  IPv6  40945      0t0  TCP *:www (LISTEN)
apache2  4128      www-data    6u  IPv6  40949      0t0  TCP *:https (LISTEN)
apache2  4129      www-data    4u  IPv6  40945      0t0  TCP *:www (LISTEN)
apache2  4129      www-data    6u  IPv6  40949      0t0  TCP *:https (LISTEN)
apache2  4130      www-data    4u  IPv6  40945      0t0  TCP *:www (LISTEN)
apache2  4130      www-data    6u  IPv6  40949      0t0  TCP *:https (LISTEN)
apache2  4131      www-data    4u  IPv6  40945      0t0  TCP *:www (LISTEN)
apache2  4131      www-data    6u  IPv6  40949      0t0  TCP *:https (LISTEN)

Com isto finalizamos o processo de configuração.