Sampai hari ini, setiap kali saya menggunakan gpg2
(diinstal melalui Homebrew) di Mac saya (10.12.1), saya sekarang melihat peringatan berikut:
Warning: using insecure memory!
Untuk apa nilainya, saya melihat perilaku yang sama ini pada dua mesin yang berbeda: Mac mini (akhir 2012) dan MacBook Pro (akhir 2012), keduanya menjalankan 10.12.1.
Seperti yang dikatakan dalam FAQ GnuPG :
GnuPG mencoba untuk mengunci memori sehingga tidak ada proses lain yang dapat melihatnya dan agar memori tidak akan ditulis untuk swap. Jika karena alasan tertentu tidak dapat melakukan ini (misalnya, platform tertentu tidak mendukung penguncian memori semacam ini), GnuPG akan memperingatkan Anda bahwa itu menggunakan memori tidak aman.
Meskipun hampir selalu lebih baik menggunakan memori aman, tidak selalu buruk menggunakan memori tidak aman. Jika Anda memiliki mesin dan Anda yakin itu tidak menyembunyikan malware, maka peringatan ini mungkin dapat diabaikan.
Hal yang membuat saya bingung adalah gpg2
tidak berubah sejak 12 September 2016 . Saya sudah menginstal versi 2.0.30 lebih atau kurang sejak itu, tetapi saya baru mulai melihat peringatan tentang memori tidak aman hari ini. Meskipun gpg2
formula tidak berubah sejak 12 September 2016, satu hal yang dapat saya katakan dengan pasti bahwa saya lakukan pada kedua mesin sebelum permulaan melihat peringatan ini adalah a brew update && brew upgrade
. Tetapi saya bahkan tidak yakin bagaimana itu dapat memengaruhi ini; mengingat apa yang dikatakan FAQ GnuPG, sepertinya ini ada hubungannya dengan OS dan penguncian memori.
... Dan yang lebih aneh lagi adalah saya juga telah gpg1
menginstal dari Homebrew (versi 1.4.21), yang tidak memperingatkan tentang memori tidak aman ketika saya menggunakannya:
$ 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
Kedua binari milik pemilik dan grup yang sama dan memiliki izin yang sama:
-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
Saya baru saja mencoba menginstal ulang gpg2
dengan Homebrew: baik dengan menggunakan biner yang telah dikompilasi dan dengan membangun sumber bentuk, tetapi ini tidak mengubah apa pun. Saya masih mendapatkan peringatan tentang penggunaan memori tidak aman.
Selain itu, bahkan membuat biner gpg2 memiliki bit root setuid dibalik (seperti yang disarankan, misalnya , di sini ) tidak menyebabkan pesan menghilang; masih memperingatkan tentang menggunakan memori tidak aman.
Adakah yang tahu apa yang bisa berubah sehingga saya tiba-tiba mulai melihat peringatan ini hari ini? Dan mengapa saya melihatnya ketika menggunakan gpg2
biner tetapi bukan gpg1
biner?
Informasi lain yang mungkin relevan:
$ 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
Memperbarui
Saya pikir alasan ini terjadi adalah karena versi baru libgcrypt
. Saya masih tidak tahu mengapa itu terjadi, tetapi saya cukup yakin bahwa ini setidaknya merupakan akar penyebab masalah ini. Formula untuk libgcrypt
baru saja diperbarui hari ini untuk benjolan 1.7.4; ini akan menjelaskan mengapa saya melihat ini di dua komputer yang berbeda setelah brew update && brew upgrade
. Ini juga akan menjelaskan mengapa hal itu tidak terjadi gpg1
, karena gpg1
tidak bergantung pada libgcrypt
pustaka kriptografi eksternal , sebagai gantinya menggunakan pustaka kriptografi terintegrasi sendiri.
Selain itu, saya juga telah gpg2
menginstal dari MacGPG Suite, yang tidak menunjukkan masalah ini dan terkait dengan versi yang berbeda dari 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.
Jadi saya menduga bahwa ini mungkin laporan bug untuk pengelola libgcrypt
. Saya akan memposting ke milis mereka, tetapi saya akan meninggalkan ini di sini untuk sementara waktu jika ada orang lain yang menemukan masalah yang sama dan / atau kalau-kalau ada orang lain yang tahu mengapa hal ini terjadi. Jika saya mendapat konfirmasi setelah mengirim kata ke milis mereka bahwa ini adalah bug, saya akan memilih untuk menutup pertanyaan ini.
gpg1
dan gpg2
, dan (ii) Saya telah memonitor memori pada komputer saya saat menguji ini, dan ada banyak memori yang tidak digunakan ketika saya melihat pesan peringatan. Saya pikir saya telah melokalisasi akar masalah, tetapi saya masih tidak yakin mengapa itu terjadi. Akan memperbarui pertanyaan dalam sedetik.