gpg2 : 경고 : 안전하지 않은 메모리 사용!


11

오늘 현재 gpg2Mac (10.12.1)에서 Homebrew를 통해 설치할 때마다 다음 경고가 표시됩니다.

Warning: using insecure memory!

가치가있는 것은 Mac mini (2012 년 말)와 MacBook Pro (2012 년 말)의 두 가지 다른 컴퓨터에서 10.12.1을 실행하는 동일한 동작을보고 있습니다.

GnuPG FAQ 는 다음과 같이 말합니다.

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

방금 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하기 때문에 왜 발생하지 않는지 설명 합니다.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 및 메모리 잠금에 관한 것일 수 있기 때문에 먼저 여기에 물었지만 다른 생각이 있으면 마이그레이션을 제안하십시오.
Adam Liter

techrepublic.com/blog/it-security/the-insecure-memory-faq 는 사용자 환경에 RAM이 부족하여 스왑 공간에 데이터를 써야하기 때문일 수 있습니다.
sideshowbarker

@sideshowbarker 그건 내 초기 생각도하지만, (I)와 행동의 차이 설명 할 것이다습니다 gpg1gpg2,이를 테스트 할 때 (II) 내 컴퓨터에서 메모리를 모니터링 있었고, 사용되지 않는 메모리의 많음이있다 경고 메시지가 표시되면 문제의 근본을 현지화했다고 생각하지만 여전히 왜 그런지 잘 모르겠습니다. 질문을 잠시 후에 업데이트합니다.
Adam Liter

@sideshowbarker 업데이트되었습니다!
Adam Liter

답변:


9

차이 gpg1gpg2I 몰래하고 그 사실로부터 발생 gpg2하는 외부 암호화 라이브러리를 사용 libgcrypt하는 반면, gpg1사용하는 통합 된 암호화 라이브러리.

특히 Homebrew libgcrypt는 12 월 10 일 1.7.4 버전으로 업데이트되어libgcrypt 코드에 회귀가 발생하여 메모리 경고가 안전하지 않게됩니다.

초기 요청에 대해 libgcrypt1.7.4에 대한 공식을 Homebrew에 도입 한 풀 요청 에 대해 약간의 논의가 있었으며 , 이는 의도적으로 설계에 의한 것일 수 있음을 시사합니다.

그럼에도 불구하고 이것은 실제로 버그였습니다. 특정 버그 보고서가 여기에 제출되었습니다 :

이 커밋 에서 버그가 수정되었으며 수정 사항은 libgcrypt1.7.5에서 릴리스되었으며 , 현재 작성된 Dominyk Tiller 덕분에 Homebrew가 설치 한 버전입니다 . 따라서이 문제를 해결하려면을 수행하면 brew update && brew upgrade됩니다.


후손을 위해 다음은 버그가 있음을 확인하기 전에이 답변의 이전 버전에서 얻은 정보입니다 libgcrypt.

안전하지 않은 메모리에 대한 경고가 항상 표시되지 않는 경우 할 수있는 한 가지는에 추가 no-secmem-warning하는 것 ~/.gnupg/gpg.conf입니다. GnuPG는 질문의 이전 버전은 지적한다 :

시스템이 암호화 된 스왑 파티션을 사용하는 경우 스왑 아웃되지 않도록 페이지를 잠글 필요가 없습니다. 사실 이것은 민감한 데이터가 디스크에서 끝나는 것을 방지하는 가장 좋은 방법입니다. 시스템에서 암호화 된 스왑 파티션을 허용하는 경우 해당 기능을 사용하십시오. 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의 노트 "는 루트 권한없이 안전하지 않은 메모리를 이용하기 매우 어렵다 - 당신의 공격자가 컴퓨터에 루트 권한이 있다면 그것은 이상 어쨌든 전부 ”. 따라서 경고는 처음부터 매우 유용하지 않습니다.
sideshowbarker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.