Por que acho HTTPS Inspection uma péssima idéia

Quando a Microsoft lançou o Forefront 2010, uma das grandes novas funcionalidades divulgadas foi o suporte a HTTPS Inspection, que supostamente permite identificar malware mesmo em conexões HTTPS – que, por projeto, são cifradas para evitar interceptação. Por isso, quando vi o anúncio desse recurso, fiquei de orelha em pé. Será que a Microsoft fez o que eu acho que fez e implementou um ataque Man-In-The-Middle (MITM) no produto eles?

Para minha estupefação, sim, eles implementaram um MITM. E por que isso é uma péssima idéia? Vamos colocar um exemplo:

1) Você é um usuário corporativo que tem em seu parque de ativos, soluções Microsoft maravilhosas como o Exchange, Active Directory, WSUS e claro, o Forefront como firewall de rede/aplicação/e-mail e entre outros serviços.

2) Então o administrador da rede da qual você faz parte, decide utilizar a nova funcionalidade de HTTPS Inspection, que promete conseguir livrar-se de vírus/scams e coisas do gênero, mesmo em conexões HTTPS.

3) Para isso, o Forefront cria uma cadeia de certificados digitais "de confiança", e instala em todos os sistemas do domínio via GPO do Active Directory.

4) Então, quando você estiver em seu navegador, acessando o site do seu banco e digitando a sua senha, na verdade o ForeFront está interceptando a sua comunicação com o site, e analisando tudo que está sendo transitado neste canal "seguro". Tudo para proteger você usuário! Isso não é ótimo!?

Não mesmo! Isso pode até lhe proteger de malware, mas abre a possibilidade do admin capturar suas senhas e todo o seu tráfego, efetivamente anulando tudo de bom que o HTTPS traz.

Antes de tentar explicar como funciona o HTTPS Inspection, vamos nos aprofundar um pouco sobre o funcionamento do HTTPS e a importância dos certificados digitais:

Ao tentar conectar-se a um site com HTTPS (SSL) ou o famoso "cadeado", o servidor envia um certificado digital para o seu navegador, que normalmente está assinado por uma Autoridade Certificadora (AC) cujo seu navegador previamente confia, ou seja, cujo certificado raiz desta AC já está devidamente instalado no seu navegador e marcado como confiável.

Então, utilizando-se do processo challenge-response, onde o navegador cifra um "desafio" com a chave pública do certificado do servidor, de forma que somente a sua chave privada associada, consiga decifra-lo (neste caso, o próprio servidor que teoricamente contém a chave privada em local seguro tal como um arquivo de "cofre digital") é negociada uma "chave de sessão simétrica". É com esta chave única, renegociada a um tempo definido pelo servidor, que toda a comunicação segura ocorre. O cliente ao enviar dados para o servidor, cifra estes dados com esta chave e o servidor os decifra com esta mesma chave e vice-versa.

Os navegadores que suportam HTTPS, já possuem a maioria dos certificados raiz utilizados na Internet, de forma que você possa acessar os sites "seguros" sem precisar instalar os certificados raiz previamente.

Na minha opinião, isto torna o processo mais seguro, pois a grande maioria dos usuários comuns não saberiam fazer esta instalação ou poderiam ser facilmente enganados por sites de scam a instalar certificados "falsos". Não que isto seja impossível, já que, bastaria o usuário ser enganado a instalar uma versão do navegador "modificada", com certificados falsos, que toda a segurança do processo ia por água abaixo.

Lembrando que no nosso exemplo, estamos assumindo que o sistema está livre de vírus/trojans/rootkits e vulnerabilidades em geral. :)

Agora que já temos uma idéia geral do funcionamento do HTTPS, vamos ver como funciona o HTTPS Inspection:

O cliente ao acessar o site HTTPS, através do ForeFront que já está instalado e funcionando na sua rede, será interceptado e receberá um outro certificado, gerado sob demanda, diferente do certificado original do site que está sendo acessado. O seu navegador não vai alertar disso, pois o certificado raiz do ForeFront já foi instalado automaticamente e marcado como confiável via AD/GPO!

Sendo assim, o ForeFront (ou seja, os administradores da sua rede) terão a capacidade de ter acesso a TODA a sua comunicação HTTPS com sites de banco, e-mails e quaisquer outras coisas que você achava que estava seguro.

E o melhor (não para você), sem você nem desconfiar disso. :)

Mas não sejamos injustos, no ForeFront HTTPS Inspection, existe uma opção chamada "Notify users that HTTPS inspection is applied" que caso seja ativada, avisa aos usuários disto... Ok, mas será que todo mundo faz isso? Duvido muito, pois ia gerar diversos chamados de suporte :P

Também vale ressaltar, que não foi a só a Microsoft que teve este ótima idéia... Existem outras implementações também dos grandes fabricantes de firewalls e gateways corporativos. Parece-me que eles já existem meados de 2007... Alguns exemplos:

Kapersky Internet Security 2010

Astaro Security Gateway 7

Cisco IronPort

Uma das primeiras coisas que vi também no anúncio dessa funcionalidade do ForeFront foi que sites considerados sensíveis, como bancos, podem ser excluídos da inspeção. No entanto, quem garante que o site do meu banco específico está nessa lista? Se o site do meu banco for na Tailandia? O ForeFront tem todos esses sites cadastrados? E se o admin "descadastrar" o meu banco da lista de exceções, o usuário nem fica sabendo – e, de novo, o admin fica em posição de interceptar tudo.

O HTTPS é uma grande conquista contra a vulnerabilidade das redes abertas à interceptação. Anulá-la, sob qualquer pretexto, parece-me um retrocesso.

Comentários
Aceita-se formatação à la TWiki. HTML e scripts são filtrados. Máximo 15KiB.

 
Enviando... por favor aguarde...
Comentário enviado com suceso -- obrigado.
Ele aparecerá quando os moderadores o aprovarem.
Houve uma falha no envio do formulário!
Deixei uma nota para os admins verificarem o problema.
Perdoe-nos o transtorno. Por favor tente novamente mais tarde.
Victor Hora | 2011-03-01 17:21:03 | permalink | topo

André,

Coloque o seu e-mail aqui que posso entrar em contato com você.

PS: Você também pode tentar adicionar o meu nome ao domínio da Tempest pra falar comigo. :)

André | 2011-03-01 15:06:05 | permalink | topo

Victor,

Muito bom seu post. Gostaria muito de ter um contato seu, pois estou precisando de uma ajuda na minha monografia de seg. de Redes referente a HTTPS Inspection.

Obrigado!

Cleiton Martins | 2010-08-16 20:57:59 | permalink | topo

Victor,

Bastante interessante o post, tendo a concordar contigo em gênero, número e degrau... e ainda vejo um problema potencial a mais: imagina que quem passa a ter acesso a tua "conversa" com o banco não é só o admin sacana citado, mas sim um "hacker malvado" que conseguiu, sabe-se lá como, invadir o ForeFront e fazer com que ele não fosse mais só do admin...

Victor Hora | 2010-08-13 16:18:37 | permalink | topo

Pedro: Ótima idéia! Acho que funcionaria sim! Acho que seria um assunto pra um próximo post. :) Agora, em redes muito restritas, daquelas onde o acesso só funciona através de proxy (ISA Server/Forefront) tem o problema de conseguir conectar na VPN passando pelo HTTPS Inspection, que ao fazer a análise, pode "achar" que trata-se de um tráfego "não confiável" ou até "inválido"...

No entanto, pra essas redes ainda temos opções de tunelar IP através de requisições ICMP ou DNS... deixo a curiosidade no ar como assunto pra um próximo post... ;)

Marco: Hehehe, legal (ou não) que ninguém precisa mais de appliance pra fazer isso ;)

Heyder: Eu realmente espero que isso nunca aconteça um dia e que HTTPS Inspection vire mais uma daquelas coisas que simplesmente "não colou" :)

Thyago Monteiro | 2010-08-13 09:29:49 | permalink | topo

ótimo post Victor.

Heyder Andrade | 2010-08-12 13:59:06 | permalink | topo

Muito bom, Victor. Parabéns!

Não sei se isso é possível, mas imagine pequenos ISP fazendo uso do ForeFront (HTTPS Inspection) como medida de segurança.

Marco Carnut | 2010-08-11 16:49:34 | permalink | topo

Parabéns, Victor! Excelente tema, excelente exposição.

Tendo a concordar com você – temos aqui outro caso em que a criptografia é "boa demais": ao proteger contra interceptação e adulteração, atenta contra a detecção de malwares. Priorizar o segundo em detrimento do primeiro, como faz o ForeFront, é no mínimo questionável e seu desconforto me parece totalmente justificado.

Infelizmente, essa prática parece ser a norma hoje dia. Estava eu lendo esse artigo, muito bom, por sinal, sobre um ataque (ainda hipotético) correlato ao SSL:

http://files.cloudprivacy.net/ssl-mitm.pdf

No apêndice, há a foto e prospecto de mais um appliance comercial para fazer MITM no SSL!

Pedro Dallegrave | 2010-08-11 16:07:22 | permalink | topo

Primeiramente, Victor, parabéns pelo texto e pelo tema, ambos muito bons.

Mas enquanto estava pensando no assunto surgiu uma dúvida, seria possível burlar o Forefront e evitar que ele tenha acesso as informações pessoais que passam por ele?

A ideia que tive é a seguinte, utilizar uma conexão VPN entre uma máquina interna a rede do Forefront e um servidor externo e tunelar um tráfego HTTPS através dela. Desta forma o Forefront iria interceptar e analisar a conexão da VPN mas não iria fazer o mesmo com a conexão HTTPS que trafega pela VPN. Assim todo o conteúdo sensível que um usuário queira acessar não seria visualizado por um Admin maldoso.