12 votos

gpg2: Advertencia: el uso inseguro de la memoria!

A partir de hoy, cada vez que utilizo gpg2 (instalado a través de Homebrew) en mi Mac (10.12.1), ahora veo el mensaje de advertencia siguiente:

Warning: using insecure memory!

Para lo que vale, estoy viendo este comportamiento de la misma en dos máquinas diferentes: un Mac mini (finales de 2012) y un MacBook Pro (finales de 2012), que se ejecutan 10.12.1.

Como el GnuPG FAQ dice:

GnuPG intenta bloquear la memoria, por lo que ningún otro proceso puede ver y para que la memoria no será por escrito a la swap. Si por alguna razón no es capaz de hacer esto (por ejemplo, algunas plataformas no apoyo a este tipo de memoria bloqueo), GnuPG le advertirá de que es el uso inseguro de la memoria.

Mientras que es casi siempre mejor para el uso seguro de la memoria, no es necesariamente una mala cosa para el uso inseguro de la memoria. Si usted es dueño de la máquina y estás seguro de que no albergan malware, luego de esta advertencia puede probablemente ser ignorado.

Lo que me sorprende es que gpg2 no ha cambiado desde el 12 de septiembre de 2016. He tenido la versión 2.0.30 instalado más o menos desde entonces, pero sólo he empezado a ver este aviso sobre la inseguridad de la memoria el día de hoy. Aunque 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 ambos equipos antes de la aparición de ver esta advertencia es un brew update && brew upgrade. Pero yo no estoy seguro de cómo eso podría afectar a este; dado lo que el GnuPG FAQ dice, parece que tiene algo más que ver con el sistema operativo y la memoria de bloqueo.

... Y lo que es aún más extraño es que también tengo gpg1 instalado desde Homebrew (versión 1.4.21), lo que no advierten acerca de la inseguridad de la memoria cuando yo uso es:

$ 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

Tanto los 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

He intentado reinstalar gpg2 con Homebrew: tanto por el uso de los binarios precompilados y por la forma del edificio de origen, pero esto no cambia nada. Todavía se me pone la advertencia sobre el uso inseguro de la memoria.

Por otra parte, incluso el gpg2 binario tiene el bit setuid root volteado (como se ha sugerido, por ejemplo, aquí) no causa el mensaje a desaparecer, todavía se advierte sobre el uso inseguro de la memoria.

¿Alguien sabe qué podría haber cambiado de tal forma que me gustaría de repente empezar a ver esta advertencia de hoy? Y para qué me puede ver cuando se utiliza el gpg2 binario, pero no la gpg1 binario?

Otros, posiblemente, la información pertinente:

$ 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 está sucediendo es porque de la nueva versión de libgcrypt. Todavía no sé por qué está pasando, pero estoy bastante seguro de que esta es al menos la causa root del problema. La fórmula para libgcrypt se acaba de actualizar hoy para la 1.7.4 golpe; esto explicaría por qué estoy viendo esto en dos equipos diferentes después de una brew update && brew upgrade. Esto explicaría también por qué no está sucediendo con gpg1, debido a que gpg1 no confían en el exterior libgcrypt biblioteca de cifrado, en lugar de utilizar su propio integrado de biblioteca de cifrado.

Por otra parte, también tengo gpg2 instalado desde MacGPG Suite, que es no presentan este problema y está vinculado a 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 esta es, probablemente, un informe de error para los mantenedores de libgcrypt. Voy a publicar a su lista de correo, pero esto se lo dejo aquí por el momento, en caso de que alguien más pase por el mismo problema y/o en caso de que nadie sabe exactamente por qué esto está ocurriendo. Si me llega la confirmación después de enviar la palabra a su lista de correo que este es un error, voy a votar para cerrar esta pregunta.

9voto

Adam Liter Puntos 314

La diferencia entre gpg1 y gpg2 que me estaba notando surge del hecho de que gpg2 utiliza externa de una biblioteca de cifrado, libgcrypt, mientras que gpg1 utiliza un sistema integrado de biblioteca de cifrado.

Y específicamente, Homebrew actualizado a la versión 1.7.4 de libgcrypt el 10 de diciembre, que introdujo una regresión en la libgcrypt código, que conduce a la inseguridad en la memoria de advertencia.

Al principio había un poco de discusión sobre este tema en el pull request que introdujo la fórmula para libgcrypt 1.7.4 en Homebrew, lo que sugiere que podría ser por el diseño:

Sin embargo, resulta que en realidad esto era un error. El error específico de informe se presentó aquí:

El error fue corregido en este commit, y la revisión se publicó en libgcrypt 1.7.5, que, en el momento de la escritura, es ahora la versión que instala el Homebrew gracias a Dominyk Timón. Por lo tanto, para solucionar este problema, usted puede hacer una brew update && brew upgrade.


Para la posteridad bien, aquí está la información desde una versión anterior de esta respuesta antes de que se confirmó que esto era un error en libgcrypt:

Una cosa que puedes hacer si no quieres ver siempre la advertencia acerca de la inseguridad de la memoria es agregar no-secmem-warning a ~/.gnupg/gpg.conf. Una versión antigua de la GnuPG FAQ señala:

El bloqueo de páginas en contra de ser intercambiado no es necesario si el sistema utiliza un cifrado de la partición de intercambio. En el hecho de que es la mejor manera de proteger los datos confidenciales de terminar para arriba en un disco. Si su sistema lo permite el cifrado de particiones de intercambio, por favor, hacer uso de esa característica. Tenga en cuenta que GPG no sabe acerca de cifrado particiones swap y puede imprimir el aviso; por lo tanto usted debe desactivado la alerta si su partición de intercambio es cifrada. También puede que desee desactivar esta advertencia si no puede o no desea instalar GnuPG setuid(root). Para desactivar la advertencia de que usted ponga una línea

no-secmem-warning

en su ~/.gnupg/gpg.conf archivo.

Hasta donde yo sé, macOS hace uso de cifrado de espacio de intercambio. Para mí, por ejemplo, sysctl vm.swapusage devuelve:

vm.swapusage: total = 1024.00M  used = 234.75M  free = 789.25M  (encrypted)

Además, como @sideshowbarker señala en los comentarios, también hay un post para el gnupg-los usuarios de la lista de correo, que dice que es relativamente seguro ignorar esta advertencia:

[...] es <understatement> bastante duro, </understatement> a explotar inseguro de memoria sin privilegios de root -- y si el atacante tiene root privilegios en el equipo, es todo de todos modos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: