Na dzień dzisiejszy za każdym razem, gdy korzystam gpg2
(instalowany przez Homebrew) na komputerze Mac (10.12.1), teraz widzę następujące ostrzeżenie:
Warning: using insecure memory!
Co do tego warte, widzę to samo zachowanie na dwóch różnych komputerach: Mac mini (pod koniec 2012 r.) I MacBook Pro (pod koniec 2012 r.), Oba z uruchomionym 10.12.1.
Jak mówi GnuPG FAQ :
GnuPG próbuje zablokować pamięć, aby żaden inny proces jej nie widział i aby pamięć nie została zapisana do zamiany. Jeśli z jakiegoś powodu nie jest w stanie tego zrobić (na przykład niektóre platformy nie obsługują tego rodzaju blokowania pamięci), GnuPG ostrzeże cię, że używa niepewnej pamięci.
Chociaż prawie zawsze lepiej jest korzystać z bezpiecznej pamięci, niekoniecznie jest złą rzeczą korzystanie z niepewnej pamięci. Jeśli posiadasz maszynę i masz pewność, że nie zawiera ona złośliwego oprogramowania, to ostrzeżenie to prawdopodobnie można zignorować.
Zaskakuje mnie to, że gpg2
nie zmieniło się od 12 września 2016 r . Od tego czasu mam mniej więcej wersję 2.0.30, ale dzisiaj zaczęłam widzieć to ostrzeżenie o niebezpiecznej pamięci. Chociaż gpg2
formuła nie zmieniła się od 12 września 2016 r., Jedno mogę powiedzieć na pewno, że zrobiłem to na obu komputerach przed pojawieniem się tego ostrzeżenia brew update && brew upgrade
. Ale nie jestem nawet pewien, jak to może na to wpłynąć; Biorąc pod uwagę to, co mówi GnuPG FAQ, wygląda na to, że ma to coś więcej wspólnego z systemem operacyjnym i blokowaniem pamięci.
... Co jeszcze dziwniejsze, że gpg1
zainstalowałem również z Homebrew (wersja 1.4.21), która nie ostrzega przed niebezpieczną pamięcią podczas jej używania:
$ 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
Oba pliki binarne należą do tego samego właściciela i grupy i mają takie same uprawnienia:
-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
Właśnie próbowałem ponownej instalacji gpg2
z Homebrew: zarówno przy użyciu prekompilowanego pliku binarnego, jak i przez zbudowanie źródła formularza, ale to nic nie zmienia. Nadal pojawia się ostrzeżenie o używaniu niepewnej pamięci.
Co więcej, nawet czyniąc gpg2 binarne mają bitu setuid korzeniowy odbitym (jak sugerowano, np , tutaj ) nie powoduje komunikat zniknie; wciąż ostrzega przed użyciem niepewnej pamięci.
Czy ktoś wie, co mogło się zmienić tak, że nagle zacznę widzieć dziś to ostrzeżenie? I dlaczego miałbym to widzieć, gdy używam gpg2
pliku binarnego, ale nie gpg1
binarnego?
Inne potencjalnie istotne informacje:
$ 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
Aktualizacja
Myślę, że dzieje się tak z powodu nowej wersji libgcrypt
. Nadal nie wiem, dlaczego tak się dzieje, ale jestem prawie pewien, że jest to przynajmniej podstawowa przyczyna problemu. Formuła dla libgcrypt
została właśnie zaktualizowana dzisiaj dla guza 1.7.4; to by wyjaśniało, dlaczego widzę to na dwóch różnych komputerach po brew update && brew upgrade
. Wyjaśniałoby to również, dlaczego tak się nie dzieje gpg1
, ponieważ gpg1
nie polegał na zewnętrznej libgcrypt
bibliotece kryptograficznej, zamiast tego używał własnej zintegrowanej biblioteki kryptograficznej.
Ponadto gpg2
zainstalowałem również pakiet MacGPG, który nie wykazuje tego problemu i jest powiązany z inną wersją 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.
Zgaduję więc, że jest to prawdopodobnie raport o błędzie dla opiekunów libgcrypt
. Będę publikować na ich liście mailingowej, ale na razie zostawię to tutaj, na wypadek, gdyby ktoś napotkał ten sam problem i / lub na wypadek, gdyby ktokolwiek wiedział, dlaczego tak się dzieje. Jeśli po wysłaniu wiadomości na ich listę mailową otrzymam potwierdzenie, że jest to błąd, zagłosuję za zamknięciem tego pytania.
gpg1
i gpg2
, oraz (ii) Mam monitoruje pamięć na moim komputerze podczas testowania tego, a jest mnóstwo niewykorzystanej pamięci kiedy widzę komunikat ostrzegawczy. Myślę, że zlokalizowałem źródło problemu, ale nadal nie jestem pewien, dlaczego tak się dzieje. Zaktualizuje pytanie za sekundę.