gpg2: Uyarı: güvenli olmayan bellek kullanma!


11

Bugün itibariyle, gpg2Mac'imde (10.12.1) (Homebrew aracılığıyla yüklendiğim) her kullanışımda şu uyarıyı görüyorum:

Warning: using insecure memory!

Değeri için, aynı davranışı iki farklı makinede görüyorum: Mac mini (2012 sonu) ve MacBook Pro (2012 sonu), her ikisi de 10.12.1 çalışıyor.

As GnuPG SSS diyor:

GnuPG, başka hiçbir işlemin görememesi ve hafızanın değiş tokuşuna yazılmaması için belleği kilitlemeye çalışır. Herhangi bir nedenle bunu yapamazsa (örneğin, bazı platformlar bu tür bellek kilidini desteklemiyorsa), GnuPG sizi güvensiz bellek kullandığına dair uyaracaktır.

Güvenli bellek kullanmak neredeyse her zaman daha iyi olsa da, güvensiz bellek kullanmak her zaman kötü bir şey değildir. Makinenin sahibi sizseniz ve kötü amaçlı yazılım barındırmayacağından eminseniz, bu uyarı büyük olasılıkla göz ardı edilebilir.

Beni şaşırtan şey 12 Eylül 2016'dangpg2 bu yana değişmedi . O zamandan beri 2.0.30 sürümü yükledim, ancak bugün güvensiz bellek hakkında bu uyarıyı görmeye başladım. Olsa formül, 12 Eylül 2016 tarihinde beri değişmemiş, bir şey ben bu uyarıyla bir olduğunu başlangıcından önce her iki makinelerde yaptığını kesin olarak söyleyebiliriz . Ama bunun bunu nasıl etkileyebileceğinden bile emin değilim; GnuPG SSS'nin söylediği gibi, bunun işletim sistemi ve bellek kilitleme ile ilgili bir şeyleri var gibi görünüyor.gpg2brew update && brew upgrade

... Ve daha da garip ben de olmasıdır gpg1gelmez Homebrew (sürüm 1.4.21), yüklü değil bunu kullandığınızda güvensiz bellek hakkında uyarmak:

$ 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

Her iki ikili dosya da aynı sahip ve gruba aittir ve aynı izinlere sahiptir:

-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

Sadece gpg2Homebrew ile yeniden yüklemeyi denedim : hem önceden derlenmiş ikili dosyayı kullanarak hem de form kaynağı oluşturarak, ama bu hiçbir şeyi değiştirmez. Güvensiz bellek kullanma konusunda hala uyarı alıyorum.

Ayrıca, hatta gpg2 yapma (önerildiği gibi, çevrilmiş root biraz var ikili mesela , burada ) mesajı kaybolmaya vermez çünkü; hala güvensiz bellek kullanımı konusunda uyarıyor.

Aniden bu uyarıyı bugün görmeye başlayacağım şekilde nelerin değişebileceğini bilen var mı? Ve gpg2ikiliyi değil ikiliyi kullanırken neden görüyorum gpg1?

İlgili olabilecek diğer bilgiler:

$ 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

Güncelleme

Bunun olmasının sebebinin yeni versiyonundan kaynaklandığını düşünüyorum libgcrypt. Hala neden olduğunu bilmiyorum , ama bunun en azından sorunun temel nedeni olduğundan eminim. Formülü libgcryptoldu sadece bugün güncellenmiş 1.7.4 sis için; Bu, bunu a brew update && brew upgrade. Ayrıca neden gerçekleşmediğini de açıklayacaktır gpg1, çünkü kendi entegre şifreleme kütüphanesini kullanmak yerine gpg1harici libgcryptşifreleme kütüphanesine güvenmemiştir .

Ayrıca, gpg2bu sorunu sergilemeyen ve farklı bir sürümüne bağlı olan MacGPG Suite'ten de yükledim 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.

Bu yüzden muhtemelen bu sahipleri için bir hata raporu olduğunu tahmin ediyorum libgcrypt. Posta listelerine göndereceğim, ancak başkalarının aynı sorunla karşılaşması durumunda ve / veya başka birinin bunun neden olduğunu tam olarak bilmesi durumunda şimdilik burayı bırakacağım. Posta listesine kelime gönderdikten sonra bunun bir hata olduğunu onaylarsam, bu soruyu kapatmak için oy vereceğim.


Bu sorunun burada, Apple.SE'de veya Unix.SE için daha uygun olup olmadığından emin değilim . Burada önce sordum çünkü GnuPG SSS, işletim sistemi ve bellek kilitleme hakkında bir şey olabileceğini öne sürüyor, ancak aksini düşünürseniz bir geçiş önermekten çekinmeyin.
Adam Litre

techrepublic.com/blog/it-security/the-insecure-memory-faq , nedenin ortamınızın RAM'in azalması ve takas alanına veri yazması gerektiğinden kaynaklandığını gösteriyor.
sideshowbarker

@sideshowbarker Bu benim ilk düşünce de, ancak (i) ile davranış arasındaki farkları açıklamak olmaz oldu gpg1ve gpg2ve bu test ederken, (ii) Bilgisayarımda bellek izliyorum ve kullanılmayan bellek bol uyarı mesajını gördüğümde. Sorunun kökenini yerelleştirdiğimi düşünüyorum, ancak bunun neden olduğundan emin değilim. Soruyu bir saniye içinde güncelleyecek.
Adam Litre

@sideshowbarker Güncellendi!
Adam Litre

Yanıtlar:


9

Arasındaki fark gpg1ve gpg2bir fark olduğu gerçeğinden ileri gelir gpg2harici şifreleme kütüphane kullanır libgcrypt, buna karşın gpg1kullanım entegre bir şifreleme kütüphanesi.

Ve özellikle, Homebrewlibgcrypt , 10 Aralık'ta 1.7.4 sürümüne güncellendi , bu da libgcryptkodda bir gerileme getirdi ve güvenli olmayan bellek uyarısına yol açtı.

Başlangıçta , Homebrew'a 1.7.4 formülünü getiren çekmelibgcrypt tasarımında bunun hakkında biraz tartışma vardı ve bunun tasarımla olabileceğini düşündürdü:

Yine de, bunun gerçekten bir hata olduğu ortaya çıktı. Belirli hata raporu burada sunuldu:

Hata bu taahhüdde düzeltildi ve düzeltme 1.7.5'te yayınlandı libgcrypt, bu da yazma sırasında Homebrew'un Dominyk Tiller sayesinde yüklediği sürüm . Böylece, bu sorunu çözmek için sadece bir brew update && brew upgrade.


Posterity uğruna, bunun bir hata olduğu onaylanmadan önce bu cevabın eski bir versiyonundan bazı bilgiler libgcrypt:

Bunun yerine her zaman güvensiz bellek hakkında uyarı görmeye istememeniz durumunda yapabilecekleri şey eklemektir no-secmem-warningiçin ~/.gnupg/gpg.conf. Bir GnuPG SSS eski sürümü işaret:

Sisteminiz şifreli bir takas bölümü kullanıyorsa sayfaları değiştirmeye karşı kilitlemek gerekmez. Aslında bu hassas verilerin bir diske sonlanmasını önlemenin en iyi yoludur. Sisteminiz şifreli takas bölümlerine izin veriyorsa, lütfen bu özelliği kullanın. GPG'nin şifreli takas bölümleri hakkında bilgi sahibi olmadığını ve uyarıyı yazdırabileceğini unutmayın; bu nedenle takas bölümünüz şifreliyse uyarıyı devre dışı bırakmalısınız. Ayrıca GnuPG setuid (root) kurulumunu yapamıyorsanız veya kurmak istemiyorsanız bu uyarıyı devre dışı bırakmak isteyebilirsiniz. Uyarıyı devre dışı bırakmak için bir satır koyarsınız

no-secmem-warning

içine yerleştirin ~/.gnupg/gpg.conf.

Bildiğim kadarıyla macOS şifreli takas alanı kullanıyor. Örneğin benim için şunu sysctl vm.swapusagedöndürür:

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

Ayrıca, @sideshowbarkeryorumlarda belirtildiği gibi , gnupg kullanıcıları posta listesine bir mesaj da var, bu da bu uyarıyı görmezden gelmenin nispeten güvenli olduğunu söylüyor:

[...] kök ayrıcalıkları olmadan güvensiz hafızadan yararlanmak <understatement>oldukça zordur </understatement>- ve saldırganın makinenizde kök ayrıcalıkları varsa, her şey yine de bitti.


Işığında github.com/Homebrew/homebrew-core/pull/... ve gerçeği libgcryptsürdürücüler kasten bu kırık gibi görünüyor, mesajın satır ekleyerek bastırılmış edilebileceğini burada ekleyerek değer olabilir no-secmem-warningiçin ~/.gnupg/gpg.confdosyanın. As lists.gnupg.org/pipermail/gnupg-users/2015-December/054771.html notlar, “Bu kök ayrıcalıkları olmadan güvensiz hafızayı yararlanmaya oldukça zor - ve saldırganın Makineye kök yetkilere sahipse o zaman üzerinde zaten hepsi ”. Bu yüzden uyarı ile başlamak çok yararlı değil.
sideshowbarker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.