Hoje, sempre que eu uso gpg2
(instalado via Homebrew) no meu Mac (10.12.1), agora vejo o seguinte aviso:
Warning: using insecure memory!
Pelo que vale, estou vendo esse mesmo comportamento em duas máquinas diferentes: um Mac mini (final de 2012) e um MacBook Pro (final de 2012), ambos executando a versão 10.12.1.
O GnuPG tenta bloquear a memória para que nenhum outro processo possa vê-la e para que a memória não seja gravada para troca. Se, por algum motivo, não for capaz de fazer isso (por exemplo, certas plataformas não suportam esse tipo de bloqueio de memória), o GnuPG avisará que ele está usando memória não segura.
Embora quase sempre seja melhor usar memória segura, não é necessariamente uma coisa ruim usar memória insegura. Se você possui a máquina e está confiante de que não está abrigando malware, esse aviso provavelmente poderá ser ignorado.
O que me deixa perplexo é que gpg2
não mudou desde 12 de setembro de 2016 . Eu tive a versão 2.0.30 instalada mais ou menos desde então, mas só comecei a ver esse aviso sobre memória insegura hoje. Mesmo que a gpg2
fórmula não tenha sido alterada desde 12 de setembro de 2016, a única coisa que posso dizer com certeza que fiz nas duas máquinas antes do início da visualização desse aviso é a brew update && brew upgrade
. Mas nem tenho certeza de como isso poderia afetar isso; dado o que o FAQ do GnuPG diz, parece que isso tem mais a ver com o sistema operacional e o bloqueio de memória.
... E o mais estranho é que eu também gpg1
instalei a partir do Homebrew (versão 1.4.21), que não avisa sobre memória insegura quando a uso:
$ gpg1 --require-secmem
gpg: Go ahead and type your message ...
^C
gpg: Interrupt caught ... exiting
$ gpg2 --require-secmem
Warning: using insecure memory!
gpg: will not run with insecure memory due to --require-secmem
Os dois binários pertencem ao mesmo proprietário e grupo e têm as mesmas permissões:
-r-xr-xr-x 1 adamliter admin 681932 Dec 10 18:06 /usr/local/Cellar/gnupg2/2.0.30_2/bin/gpg2
-r-xr-xr-x 1 adamliter admin 929352 Aug 17 09:21 /usr/local/Cellar/gnupg/1.4.21/bin/gpg1
Eu apenas tentei reinstalar gpg2
com o Homebrew: usando o binário pré-compilado e criando a fonte do formulário, mas isso não muda nada. Ainda recebo o aviso sobre o uso de memória não segura.
Além disso, mesmo tornar o gpg2 binário com o bit raiz setuid invertido (como sugerido, por exemplo , aqui ) não faz com que a mensagem desapareça; ele ainda adverte sobre o uso de memória não segura.
Alguém sabe o que poderia ter mudado de tal forma que de repente eu começaria a ver esse aviso hoje? E por que eu estaria vendo isso ao usar o gpg2
binário, mas não o gpg1
binário?
Outras informações possivelmente relevantes:
$ which gpg1
/usr/local/bin/gpg1
$ ls -al /usr/local/bin/gpg1
lrwxr-xr-x 1 adamliter admin 31 Aug 17 17:42 /usr/local/bin/gpg1 -> ../Cellar/gnupg/1.4.21/bin/gpg1
$ which gpg2
/usr/local/bin/gpg2
$ ls -al /usr/local/bin/gpg2
lrwxr-xr-x 1 adamliter admin 34 Dec 10 18:06 /usr/local/bin/gpg2 -> ../Cellar/gnupg2/2.0.30_2/bin/gpg2
Atualizar
Eu acho que a razão pela qual isso está acontecendo é por causa da nova versão do libgcrypt
. Ainda não sei por que está acontecendo, mas tenho certeza de que essa é pelo menos a causa raiz do problema. A fórmula para libgcrypt
foi atualizada hoje hoje para o bump 1.7.4; isso explicaria por que estou vendo isso em dois computadores diferentes depois de um brew update && brew upgrade
. Também explicaria por que não está acontecendo gpg1
, porque gpg1
não confiava na libgcrypt
biblioteca criptográfica externa , em vez disso, usando sua própria biblioteca criptográfica integrada.
Além disso, eu também gpg2
instalei a partir do MacGPG Suite, que não apresenta esse problema e está vinculado a uma versão diferente de libgcrypt
:
$ /usr/local/MacGPG2/bin/gpg2 --version
gpg (GnuPG/MacGPG2) 2.0.30
libgcrypt 1.6.6
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ gpg2 --version
gpg (GnuPG) 2.0.30
libgcrypt 1.7.4
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Portanto, acho que esse é provavelmente um relatório de bug para os mantenedores do libgcrypt
. Vou postar na lista de discussão deles, mas deixarei isso aqui por enquanto, caso alguém encontre o mesmo problema e / ou se alguém souber por que exatamente isso está acontecendo. Se eu receber uma confirmação após enviar uma mensagem para a lista de discussão de que isso é um bug, votarei para encerrar esta pergunta.
gpg1
e gpg2
, e (ii) eu tenho monitorado a memória no meu computador ao testar isso, e há muita memória não utilizada quando vejo a mensagem de aviso. Acho que localizei a raiz do problema, mas ainda não sei por que isso está acontecendo. Atualizará a pergunta em um segundo.