A partir de hoy, cada vez que uso gpg2
(instalado vía Homebrew) en mi Mac (10.12.1), ahora veo la siguiente advertencia:
Warning: using insecure memory!
Por si sirve de algo, estoy viendo este mismo comportamiento en dos máquinas diferentes: un Mac mini (finales de 2012) y un MacBook Pro (finales de 2012), ambos con 10.12.1.
Como el Preguntas frecuentes sobre GnuPG dice:
GnuPG intenta bloquear la memoria para que ningún otro proceso pueda verla y para que la memoria no se escriba en la swap. Si por alguna razón no es capaz de hacer esto (por ejemplo, ciertas plataformas no soportan este tipo de bloqueo de memoria), GnuPG le advertirá que está usando memoria insegura.
Aunque casi siempre es mejor utilizar una memoria segura, no es necesariamente malo utilizar una memoria insegura. Si eres el dueño de la máquina y estás seguro de que no alberga malware, probablemente puedas ignorar esta advertencia.
Lo que me desconcierta es que gpg2
no ha cambiado desde 12 de septiembre de 2016 . He tenido la versión 2.0.30 instalada más o menos desde entonces, pero sólo hoy he empezado a ver esta advertencia sobre la memoria insegura. A pesar de que el gpg2
fórmula no ha cambiado desde el 12 de septiembre de 2016, la única cosa que puedo decir con seguridad que hice en ambas máquinas antes del inicio de ver esta advertencia es un brew update && brew upgrade
. Pero ni siquiera estoy seguro de cómo podría afectar esto; dado lo que dice el FAQ de GnuPG, parece que esto tiene algo más que ver con el sistema operativo y el bloqueo de la memoria.
... Y lo que es aún más extraño es que también tengo gpg1
instalado desde Homebrew (versión 1.4.21), que hace no advierten sobre la inseguridad de la memoria cuando la 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
Ambos binarios pertenecen al mismo propietario y grupo y tienen los mismos permisos:
-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
Acabo de intentar reinstalar gpg2
con Homebrew: tanto usando el binario precompilado como construyendo el código fuente, pero esto no cambia nada. Todavía recibo la advertencia sobre el uso de memoria insegura.
Además, incluso haciendo que el binario de gpg2 tenga el bit Setuid Root invertido (como se sugiere, Por ejemplo , aquí ) no hace que el mensaje desaparezca; sigue advirtiendo sobre el uso de memoria insegura.
¿Alguien sabe qué ha podido cambiar para que hoy empiece a ver este aviso de repente? Y por qué lo vería al usar el gpg2
binario pero no el gpg1
¿Binario?
Otra información posiblemente relevante:
$ 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
Actualización
Creo que la razón por la que esto ocurre es por la nueva versión de libgcrypt
. Todavía no sé por qué está ocurriendo, pero estoy bastante seguro de que esta es al menos la causa principal del problema. La fórmula para libgcrypt
fue se acaba de actualizar hoy para el bump 1.7.4; esto explicaría por qué estoy viendo esto en dos equipos diferentes después de un brew update && brew upgrade
. También explicaría por qué no ocurre con gpg1
porque gpg1
no se basó en el exterior libgcrypt
biblioteca criptográfica, sino que utiliza su propia biblioteca criptográfica integrada.
Además, también tengo gpg2
instalado desde MacGPG Suite, que no presenta este problema y está vinculado con una versión 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.
Así que supongo que esto es probablemente un informe de error para los mantenedores de libgcrypt
. Lo enviaré a su lista de correo, pero lo dejaré aquí por el momento por si alguien más se encuentra con el mismo problema y/o por si alguien sabe por qué ocurre esto exactamente. Si después de enviar el mensaje a su lista de correo me confirman que se trata de un error, votaré para cerrar esta pregunta.
0 votos
Sinceramente, no estoy seguro de si esta pregunta es más apropiada aquí, en Apple.SE, o si es más apropiada para Unix.SE . He preguntado aquí primero porque el FAQ de GnuPG sugiere que podría ser algo relacionado con el sistema operativo y el bloqueo de la memoria, pero por favor, siéntase libre de sugerir una migración si piensa lo contrario.
0 votos
techrepublic.com/blog/it-security/the-insecure-memory-faq parece sugerir que la causa podría deberse a que su entorno se ha quedado sin memoria RAM y por eso necesita escribir datos en el espacio de intercambio.
0 votos
@sideshowbarker Ese fue mi pensamiento inicial también, pero (i) eso no explicaría las diferencias entre el comportamiento con
gpg1
ygpg2
y (ii) he estado monitorizando la memoria de mi ordenador al probar esto, y hay mucha memoria sin usar cuando veo el mensaje de advertencia. Creo que he localizado root del problema, pero todavía no estoy seguro de por qué está sucediendo. Actualizaré la pregunta en un segundo.0 votos
@sideshowbarker ¡Actualizado!
0 votos
Sí, esto parece ser debido a algún cambio en el paquete brew libgcrypt 1.7.4. Acabo de hacer un
brew update && brew upgrade
y luego comenzó a recibir el mismo "usando memoria insegura". Así que hicebrew switch libgcrypt 1.7.3
y eso eliminó la advertencia. Así que deberías publicar una respuesta aquí, porque creo que otras personas van a empezar a encontrarse con este mismo problema.0 votos
@sideshowbarker Ha habido un poco de discusión en el Petición de pull de homebrew para
libgcrypt
1.7.4 . Terminé enviando algo a su lista de correo (que aún no ha sido aprobado), y Dominyk Tiller encontró algo sugiriendo que esto podría ser por diseño ...0 votos
... Así que me gustaría esperar hasta que, con suerte, me aclaren en la lista de correo de desarrolladores si esto es un error o no antes de publicar una respuesta.
0 votos
@sideshowbarker En realidad, supongo que me adelantaré y publicaré una respuesta por ahora ya que no es trivial recuperar la versión antigua si no la has mantenido por ahí.
1 votos
Hay que reírse de eso "Sin embargo, hoy en día esto se considera un asunto menor y se puede mitigar fácilmente utilizando un espacio de intercambio cifrado " parte.