gpg2: Attenzione: utilizzo di memoria non sicura!

12

Ad oggi, ogni volta che uso gpg2 (installato tramite Homebrew) sul mio Mac (10.12.1), ora vedo il seguente avviso:

Warning: using insecure memory!

Per quello che vale, sto vedendo questo stesso comportamento su due macchine diverse: un Mac mini (fine 2012) e un MacBook Pro (fine 2012), entrambi in esecuzione 10.12.1.

Le domande frequenti su GnuPag dicono:

GnuPG tries to lock memory so that no other process can see it and so that the memory will not be written to swap. If for some reason it’s not able to do this (for instance, certain platforms don’t support this kind of memory locking), GnuPG will warn you that it’s using insecure memory.

While it’s almost always better to use secure memory, it’s not necessarily a bad thing to use insecure memory. If you own the machine and you’re confident it’s not harboring malware, then this warning can probably be ignored.

La cosa che mi sconcerta è che gpg2 non è cambiato da 12 settembre, 2016 . Ho avuto la versione 2.0.30 installata più o meno da allora, ma ho iniziato a vedere questo avvertimento su memoria insicura oggi. Anche se la formula gpg2 non è cambiata dal 12 settembre 2016, l'unica cosa che posso dire con certezza di aver fatto su entrambe le macchine prima dell'inizio della visualizzazione di questo avviso è un brew update && brew upgrade . Ma non sono nemmeno sicuro di come ciò possa influenzare questo; dato quello che dicono le FAQ di GnuPG, sembra che questo abbia qualcosa in più da fare con il sistema operativo e il blocco della memoria.

... E ciò che è ancora più strano è che ho anche gpg1 installato da Homebrew (versione 1.4.21), che non avverte non sulla memoria non sicura quando lo 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

Entrambi i binari appartengono allo stesso proprietario e gruppo e hanno le stesse autorizzazioni:

-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

Ho appena provato a reinstallare gpg2 con Homebrew: entrambi utilizzando il binario precompilato e creando l'origine del modulo, ma questo non cambia nulla. Ricevo ancora l'avviso sull'utilizzo di una memoria non sicura.

Inoltre, anche facendo in modo che il file binario gpg2 abbia il bit di root setuid capovolto (come suggerito, eg , qui ) non provoca la scomparsa del messaggio; avvisa ancora sull'uso di una memoria non sicura.

Qualcuno sa cosa potrebbe essere cambiato in modo tale da iniziare improvvisamente a vedere questo avvertimento oggi? E perché dovrei vederlo quando uso il gpg2 binario ma non il gpg1 binario?

Altre informazioni potenzialmente pertinenti:

$ 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

Aggiorna

Penso che la ragione per cui questo sta accadendo sia a causa della nuova versione di libgcrypt . Ancora non so perché sta accadendo, ma sono abbastanza sicuro che questa sia almeno la causa principale del problema. La formula per libgcrypt era aggiornata solo oggi per il bump 1.7.4; questo spiegherebbe perché lo vedo su due computer diversi dopo un brew update && brew upgrade . Spiegherebbe anche perché non sta accadendo con gpg1 , perché gpg1 non si è basato sulla libreria crittografica esterna libgcrypt , utilizzando invece la propria libreria crittografica integrata.

Inoltre, ho anche gpg2 installato da MacGPG Suite, che non presenta questo problema ed è collegato a una versione diversa di 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.

Quindi suppongo che questo sia probabilmente un bug report per i maintainer di libgcrypt . Inserirò nella loro mailing list, ma lascerò questo qui per il momento nel caso in cui qualcun altro incontri lo stesso problema e / o nel caso in cui qualcun altro sappia perché questo sta accadendo esattamente. Se ricevo conferma dopo aver inviato alla loro mailing list che si tratta di un bug, voterò per chiudere questa domanda.

    
posta Adam Liter 11.12.2016 - 00:55
fonte

1 risposta

9

La differenza tra gpg1 e gpg2 che stavo rilevando deriva dal fatto che gpg2 utilizza una libreria crittografica esterna, libgcrypt , mentre gpg1 utilizza una libreria crittografica integrata.

E in particolare, Homebrew aggiornato alla versione 1.7.4 di libgcrypt del 10 dicembre , che ha introdotto una regressione nel codice libgcrypt , che porta a un avviso di memoria non sicuro.

Inizialmente c'era un po 'di discussione su questo nella richiesta di pull che ha introdotto la formula per libgcrypt 1.7.4 in Homebrew , suggerendo che potrebbe essere di progettazione:

Tuttavia, si scopre che questo era davvero un bug. La segnalazione di bug specifica è stata archiviata qui:

  • libgcrypt 1.7.4 interrompe KWallet5: "Impossibile ottenere la memoria sicura" da GCRYCTL_INIT_SECMEM

Il bug è stato corretto in questo commit e la correzione è stata rilasciata in libgcrypt 1.7.5, che al momento della scrittura è adesso la versione che Homebrew installa grazie a Dominyk Tiller . Pertanto, per risolvere questo problema, puoi semplicemente eseguire un brew update && brew upgrade .

Per i posteri, ecco alcune informazioni da una vecchia versione di questa risposta prima che fosse confermato che si trattava di un bug in libgcrypt :

Una cosa che puoi fare se preferisci non sempre vedere l'avviso sulla memoria non sicura è aggiungere no-secmem-warning a ~/.gnupg/gpg.conf . Una vecchia versione delle FAQ di GnuPG sottolinea:

Locking pages against being swapped out is not necessary if your system uses an encrypted swap partition. In fact that is the best way to protect sensitive data from ending up on a disk. If your system allows for encrypted swap partitions, please make use of that feature. Note that GPG does not know about encrypted swap partitions and might print the warning; thus you should disabled the warning if your swap partition is encrypted. You may also want to disable this warning if you can't or don't want to install GnuPG setuid(root). To disable the warning you put a line

no-secmem-warning

into your ~/.gnupg/gpg.conf file.

Per quanto ne so, macOS utilizza lo spazio di swap crittografato. Per esempio, per esempio, sysctl vm.swapusage restituisce:

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

Inoltre, come @sideshowbarker indica i commenti , c'è anche un post alla mailing list di gnupg-users , che dice che è relativamente sicuro ignorare questo avviso:

[...] it's <understatement> pretty hard </understatement> to exploit insecure memory without root privileges -- and if your attacker has root privileges on your machine then it's all over anyway.

    
risposta data 11.12.2016 - 16:00
fonte

Leggi altre domande sui tag