Partager via


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 removed

  • Anonymous
    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/