На сегодняшний день, когда я использую gpg2
(установлен через Homebrew) на моем Mac (10.12.1), я теперь вижу следующее предупреждение:
Warning: using insecure memory!
Что бы это ни стоило, я вижу такое же поведение на двух разных машинах: Mac mini (конец 2012 года) и MacBook Pro (конец 2012 года), оба работают под управлением 10.12.1.
Как часто задаваемые вопросы GnuPG говорят:
GnuPG пытается заблокировать память, чтобы никакой другой процесс ее не увидел, и чтобы память не была записана для подкачки. Если по какой-либо причине он не может этого сделать (например, некоторые платформы не поддерживают этот тип блокировки памяти), GnuPG предупредит вас, что использует небезопасную память.
Хотя почти всегда лучше использовать безопасную память, использование небезопасной памяти не обязательно плохо. Если вы владеете машиной и уверены, что в ней нет вредоносных программ, это предупреждение, вероятно, можно игнорировать.
Меня смущает то, что gpg2
с 12 сентября 2016 года ничего не изменилось . С тех пор у меня установлена более или менее версия 2.0.30, но я только начал видеть это предупреждение о небезопасной памяти сегодня. Даже при том , что gpg2
формула не изменилась с 12 сентября 2016 года, то одна вещь , которую я могу с уверенностью сказать , что я сделал на обеих машинах до начала видеть это предупреждение является brew update && brew upgrade
. Но я даже не уверен, как это может повлиять на это; учитывая то, что говорится в GnuPG FAQ, похоже, что это как-то связано с ОС и блокировкой памяти.
... И что еще более странно, я также gpg1
установил из Homebrew (версия 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
Я только что попытался переустановить gpg2
с помощью Homebrew: как с помощью предварительно скомпилированного бинарного файла, так и путем создания исходного кода, но это ничего не меняет. Я все еще получаю предупреждение об использовании небезопасной памяти.
Более того, даже если в двоичном файле 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 удара; это объясняет, почему я вижу это на двух разных компьютерах после brew update && brew upgrade
. Это также объяснило бы, почему это не происходит gpg1
, потому gpg1
что не полагалось на внешнюю libgcrypt
криптографическую библиотеку, вместо этого используя свою собственную интегрированную криптографическую библиотеку.
Кроме того, я также gpg2
установил из MacGPG 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
. Я опубликую их список рассылки, но пока оставлю это здесь, если кто-то еще столкнется с той же проблемой и / или если кто-то еще знает, почему именно это происходит. Если я получу подтверждение после отправки сообщения в их список рассылки, что это ошибка, я проголосую, чтобы закрыть этот вопрос.
gpg1
и gpg2
, и (ii) я проверял память на своем компьютере при тестировании, и есть много неиспользуемой памяти когда я вижу предупреждающее сообщение. Я думаю, что локализовал корень проблемы, но я все еще не уверен, почему это происходит. Обновлю вопрос через секунду.