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.
Comments
Anonymous
January 01, 2003
PingBack from http://blog.waltercunha.com/2008/01/25/tpm-impede-ataques-offline-nao-online/Anonymous
January 01, 2003
Oi Rodrigo, É uma boa idéia, mas para se ter proteção contra um ataque online seria ainda necessário ter alguma forma de isolamento entre o código que faz a proteção (StMichael) e o código sendo protegido (kernel), garantindo que só o código que faz a proteção tenha acesso ao TPM. Caso contrário um esquema desse seria burlável. O Patchguard não possui esse isolamento hoje, nem presumo possua o StMichael. Colocar simplesmente o TPM em cima deles acrescenta muito pouco e é contraproducente na minha opinião. O melhor caminho, também na minha opinião, para ter esse isolamento seria você transformar o StMichael em um hypervisor (ou um "virtual appliance" na terminologia que a Intel está usando). Com isso você pode usar o TPM para assegurar a integridade do StMichael, e o StMichael em seguida iniciar e proteger o kernel, sem risco de código no kernel corromper o StMichael ou o TPM. Abraços,Anonymous
January 01, 2003
Oi Rodrigo, Lendo com mais atenção o seu comentário, me parece que você quer rodar o StMichael no SMM e assim obter o isolamento em relação ao kernel. Humm me parece que com um hypervisor seria mais fácil, já que o SMM não foi feito originalmente para isso, mas pode ser que funcione! Você teria já alguma prova de conceito ou código qualquer implementando isso? Abraços,Anonymous
January 29, 2008
The comment has been removedAnonymous
February 22, 2008
Cima, O grupo de pesquisa da Universidade de Princeton desenvolveu uma suite de ataques para sistemas de encriptação de discos, com sucesso testado para os seguintes sistemas: BitLocker, TrueCrypt e FileVault. Vale a pena conferir. http://citp.princeton.edu/memory/