TPM Impede Ataques Offline, Não Online

Antes de explicar a afirmação acima, vamos conceituar rapidamente o que significa um ataque ser offline e online:

¦ Um ataque offline é aquele que é executado quando o sistema não está em operação, aproveitando normalmente o fato das defesas lógicas do sistema (logon, permissões, auditoria) não estarem ativas nesta situação. Um exemplo de ataque offline seria alguém iniciar o computador com um disco de boot, e então alterar arquivos gravados no disco rígido para colocar um keylogger.

¦ Um ataque online é aquele que acontece quando o sistema está em plena operação, explorando alguma vulnerabilidade no código ou alguma ação do usuário. Uma pessoa executando um trojan achando que é um cartão virtual de um administrador anônimo seria um bom exemplo de ataque online.

Ataques offline requerem invariavelmente acesso físico ao equipamento, e a melhor medida para impedí-los é claro utilizar recursos de segurança física. Em situações onde isso não é possível, ou como complemento para essas medidas, os recursos fornecidos por um chip Trusted Platform Module (TPM) protegem a integridade do sistema contra ataques offline. No Windows Vista o recurso de BitLocker usa o chip TPM para esse fim.

Isto já foi tratado aqui no blog antes, mas fazendo um breve resumo: o BitLocker encripta as partições de disco do computador, e armazena a chave de encriptação dentro do chip TPM. Ao armazenar essa chave, o chip faz também uma "medida" - um hash - dos componentes envolvidos na inicialização do sistema, como BIOS, MBR e setor de boot da partição.

Quando o sistema é iniciado, o chip TPM "mede" de novo estes componentes e só libera a chave de encriptação se eles não tiverem sido alterados. Alguém tentando fazer um ataque offline não teria acesso ao dados nas partições de disco, já que não ele não teria a chave de encriptação, e se tentar alterar a BIOS, a MBR ou qualquer outro componente de boot o sistema não irá se inicializar porque a chave não seria liberada pelo TPM.

O chip TPM no entanto não foi feito para oferecer proteção contra ataques online, e a sua eficácia é limitada nestes cenários. Por exemplo, vamos pegar o caso do rootkit de MBR recentemente descoberto em ataques reais. O BitLocker não impediria a infecção, mas como o chip TPM "mede" a MBR durante o boot o sistema iria acusar a alteração durante o próximo boot, e o usuário poderia tomar as medidas cabíveis. Neste caso mesmo o ataque sendo online o TPM fornece algum nível de proteção.

Um rootkit mais "esperto" no entanto contornaria totalmente esta proteção, reprogramando ele mesmo o chip TPM. Lembre-se, o rootkit está rodando com privilégios de administrador no sistema. Após alterar a MBR, o rootkit poderia ordenar ao TPM que tomasse uma nova "medida" dos componentes de boot e considerasse os novos valores como válidos. Os próximos boots aconteceriam normalmente e o rootkit não seria detectado.

Isto não quer dizer que um recurso como o TPM seja inútil. Ao contrário, é uma defesa excepcional e bastante efetiva. Mas é preciso saber bem quais são os cenários de ataque que ele foi feito para evitar, e quais são os cenários de ataque onde ele não oferece proteção.