Como verificar o HASH de um arquivo?

Após o lançamento do último patch de segurança nesta terça-feira (14/07/2015) que foi descrito no Security Bulletin MS15-058 [1] e no KB #3065718 [2], muita gente – eu inclusive – correu atrás de mais informações sobre o hotfix em blogs confiáveis. Em casos de atualizações em geral, costumo verificar alguns blogs do Aaron Bertrand [3][4] (twitter) que sempre comenta sobre o assunto. Sobre este patch em específico, o post dele no SQL Sentry contém um quadro que facilitou bastante identificar qual arquivo baixar de acordo com sua versão.

Após verificar as repercussões do patch, o próximo passo é baixar o arquivo adequado contendo o hotfix e aplicá-lo no ambiente de desenvolvimento. Certo? Ainda não. Como você pode garantir que o arquivo que baixou é realmente o mesmo arquivo disponibilizado pela Microsoft? Quem garante que você não está sendo vítima de um ataque de clickjacking e acabou baixando um malware? E se baixou o arquivo de uma outra fonte que não a Microsoft? Para isso utiliza-se o HASH de um arquivo.

A ideia de um HASH é criar uma forma única de identificação de um arquivo como uma impressão digital de uma pessoa. Diversos algoritmos estão disponíveis para a criação de HASHES. Um dos algoritmos mais famosos é o MD5, porem este já foi quebrado tem alguns anos. Atualmente utiliza-se mais a família de algoritmos SHA-2 (SHA-224, SHA-256, SHA-384 e SHA-512) e, apesar de colisões diversas terem sido identificadas no SHA-1, o algoritmo SHA 1 ainda é bastante utilizado em protocolos de segurança como SSL e IPSec.

“Mas por que você está falando sobre HASHES? O que isso tem a ver com o patch?” Se você olhar no final do KB na seção “File hash information”, existem 2 HASHES (SHA-1 e SHA-256) para cada arquivo disponibilizado. Então, após baixar o arquivo, basta verificar o HASH do arquivo para garantir que este é o arquivo verdadeiro.

GERANDO O HASH DE UM ARQUIVO

Para gerar o HASH desses arquivos, você pode usar o antigo File Checksum Integrity Verifier (FCIV) [5]. O problema do FCIV é sua limitação: ele gera apenas os HASHES MD5 e SHA-1. Como eu disse, ele é bem antigo. No entanto, só de verificar um dos HASHES do arquivo, você garante uma camada adicional de segurança.

Utilizar o FCIV é bem direto. Supondo que quero verificar o SHA-1 do arquivo “D:\SQLServer2008R2-KB3045314-x64.exe”, basta eu executar o comando abaixo e voilà.

Não importa o que digam, você ainda faz o seu trabalho FCIV!

Não importa o que digam, você ainda faz o seu trabalho FCIV!

Outra forma de gerar os HASHES é através do comando Get-FileHash [6] do PowerShell (testado na versão 4.0 em diante). Este método já está atualizado com o algoritmo SHA-256. Para gerarmos os HASHES do mesmo arquivo, basta executarmos os seguintes comandos e verificar com os fornecidos pela Microsoft.

Quanta elegância esse PoSh!

Quanta elegância esse PoSh!

Agora você executar os arquivos tendo certeza de que são verdadeiros! Bom patching!

REFERÊNCIAS / LINKS

[1] Microsoft Security Bulletin MS15-058 – Important (https://technet.microsoft.com/en-us/library/security/MS15-058)
[2] MS15-058: Vulnerabilities in SQL Server could allow remote code execution: July 14, 2015 (https://support.microsoft.com/en-us/kb/3065718)
[3] SQLblog.com (http://sqlblog.com/blogs/aaron_bertrand/default.aspx)
[4] Blogs.SqlSentry.com (http://blogs.sqlsentry.com/author/AaronBertrand/)
[5] File Checksum Integrity Verifier utility (https://support.microsoft.com/en-us/kb/841290)
[6] Get-FileHash (https://technet.microsoft.com/en-us/library/dn520872.aspx)

Anúncios