gpg2:警告:安全でないメモリを使用しています!


11

今日、gpg2Mac(10.12.1)で(Homebrewを介してインストールした)を使用するたびに、次の警告が表示されます。

Warning: using insecure memory!

価値のあるものとして、2つの異なるマシンで同じ動作が見られます。Macmini(2012年後期)とMacBook Pro(2012年後期)で、どちらも10.12.1を実行しています。

GnuPGのよくある質問は言います:

GnuPGは、他のプロセスがそれを見ることができず、メモリがスワップに書き込まれないように、メモリをロックしようとします。何らかの理由でこれができない場合(たとえば、特定のプラットフォームがこの種のメモリロックをサポートしていない場合)、GnuPGは安全でないメモリを使用していることを警告します。

ほとんどの場合、安全なメモリを使用することをお勧めしますが、安全でないメモリを使用することは必ずしも悪いことではありません。マシンを所有していて、マルウェアが潜んでいないと確信している場合、この警告はおそらく無視できます。

私を困惑させているのは、2016年9月12日gpg2以降変わっていないことです。それ以降、バージョン2.0.30をインストールしていましたが、今日は安全でないメモリに関するこの警告が表示されるようになりました。にもかかわらず式は2016年9月12日以降に変更されていない、私は私が前にこの警告を見ての発症に両方のマシンでやっていることを確認するために言うことができる一つのことです。しかし、それがこれにどのように影響するかはわかりません。GnuPG FAQが言っていることを考えると、これはOSとメモリロックに関係があるように思われます。gpg2brew update && brew upgrade

...さらに奇妙なのは、gpg1Homebrew(バージョン1.4.21)からもインストールしたことです。これは、使用時に安全でないメモリについて警告しませ

$ 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

両方のバイナリは同じ所有者とグループに属し、同じ権限を持っています。

-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

gpg2Homebrewで再インストールしようとしました。プリコンパイルされたバイナリを使用して、フォームソースをビルドしましたが、何も変わりません。安全でないメモリの使用に関する警告が引き続き表示されます。

さらに、gpg2バイナリのsetuidルートビットを反転させても(たとえばここで提案されているように)、メッセージが消えることはありません。安全でないメモリの使用については警告が表示されます。

今日、突然この警告が表示されるように変更された可能性のあることを誰もが知っていますか?そして、gpg2バイナリではなくバイナリを使用すると、なぜ表示されるのでしょうgpg1か?

その他の関連情報:

$ 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

更新

これが起こっている理由は、新しいバージョンのためだと思いますlibgcryptなぜそれが起こっているのはまだわかりませんが、これが少なくとも問題の根本的な原因であると確信しています。以下のための式libgcryptましたちょうど今日を更新 1.7.4バンプのために。これは、なぜ私がこれを2台の異なるコンピューターで見ているのか説明しbrew update && brew upgradeます。また、外部暗号ライブラリに依存せず、代わりに独自の統合暗号ライブラリを使用しているgpg1ため、なぜ発生しないのかを説明します。gpg1libgcrypt

また、gpg2MacGPG Suiteからもインストールしましたが、この問題は発生しておらず、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.

したがって、これはおそらくのメンテナー向けのバグ報告であると推測していlibgcryptます。私は彼らのメーリングリストに投稿しますが、他の誰かが同じ問題に出くわす場合、および/または他の誰かがこれがまさに起こっている理由を知っている場合に備えて、当分の間これを残します。これがバグであることを彼らのメーリングリストに送った後に私が確認を得たら、私はこの質問を閉じるために投票します。


ここで、Apple.SEでこの質問が最も適切か、それともUnix.SEにより適切かどうかは正直わかりません。GnuPG FAQがOSとメモリロックに関するものであるかもしれないと示唆しているので、最初にここで尋ねましたが、そうでないと思われる場合は、気軽に移行を提案してください。
アダムリットル

techrepublic.com/blog/it-security/the-insecure-memory-faqは、RAMが少なくなり、スワップスペースにデータを書き込む必要がある環境が原因である可能性を示唆しているようです。
sideshowbarker

同様に私の最初の考えだった@sideshowbarkerが、(私は)と行動の違いを説明できないだろうgpg1gpg2、および(ii)これをテストするとき、私は自分のコンピュータ上のメモリを監視してきた、そして未使用のメモリが十分にあります警告メッセージが表示されたとき。私は問題の根本を特定したと思いますが、なぜそれが起こっているのかまだわかりません。すぐに質問を更新します。
アダムリットル

@sideshowbarker更新!
アダムリットル

回答:


9

違いgpg1gpg2私が気付いたことは事実から生じるgpg2外部の暗号化ライブラリ、使用するlibgcryptのに対し、gpg1用途に統合暗号化ライブラリを。

具体的には、Homebrew libgcryptは12月10日のバージョン1.7.4に更新され、libgcryptコードにリグレッションが導入され、安全でないメモリ警告が発生しました。

最初に、プルリクエストでlibgcryptこれについて少し議論があり、Homebrew1.7.4 の式が導入されました。これは設計による可能性があることを示唆しています:

それにもかかわらず、これは実際にバグであることがわかりました。特定のバグレポートはここに提出されました:

バグはこのコミットで修正され、修正はlibgcrypt1.7.5でリリースされました。これは執筆時点では、ドミニク・ティラーのおかげでHomebrewがインストールされるバージョンです。したがって、この問題を解決するには、を実行するだけですbrew update && brew upgrade


後世のために、これがバグであることが確認される前のこの回答の古いバージョンからの情報を以下に示しlibgcryptます。

安全でないメモリに関する警告を常に表示したくない場合にできることの1つは、に追加するno-secmem-warningこと~/.gnupg/gpg.confです。GnuPG FAQ古いバージョンは次を指摘しています:

システムが暗号化されたスワップパーティションを使用している場合、スワップアウトされないようにページをロックする必要はありません。実際、これは機密データがディスクに保存されるのを防ぐ最良の方法です。システムで暗号化されたスワップパーティションが許可されている場合は、その機能を使用してください。GPGは暗号化されたスワップパーティションを認識せず、警告を出力する可能性があることに注意してください。したがって、スワップパーティションが暗号化されている場合は、警告を無効にする必要があります。GnuPG setuid(root)をインストールできない、またはインストールしたくない場合は、この警告を無効にすることもできます。警告を無効にするには、次の行を追加します

no-secmem-warning

あなたの~/.gnupg/gpg.confファイルに。

私の知る限り、macOSは暗号化されたスワップスペースを使用します。たとえば、私にとっては、以下をsysctl vm.swapusage返します。

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

さらに、@sideshowbarkerコメント指摘されているように、gnupg-usersメーリングリストへの投稿あります。これは、この警告を無視しても比較的安全だと言っています。

[...] ルート権限なしで安全でないメモリを悪用することは<understatement>かなり困難</understatement>です。攻撃者がマシンのルート権限を持っている場合は、とにかく終わりです。


光でgithub.com/Homebrew/homebrew-core/pull/...と事実libgcryptメンテナが意図的にこれを壊れているように見える、それはメッセージが行を追加することにより抑制することができることをここに追加する価値があるかもしれませんno-secmem-warning~/.gnupg/gpg.confファイル。以下のようlists.gnupg.org/pipermail/gnupg-users/2015-December/054771.htmlのノート、「それは、root権限なしで安全でないメモリを利用するためにはかなり難しい-とあなたの攻撃者がマシン上のroot権限を持っている場合、それはとにかく、すべて終わりました」。そのため、警告は最初からあまり役に立ちません。
sideshowbarker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.