Kể từ hôm nay, bất cứ khi nào tôi sử dụng gpg2
(được cài đặt qua Homebrew) trên máy Mac của mình (10.12.1), bây giờ tôi thấy cảnh báo sau:
Warning: using insecure memory!
Để biết giá trị của nó, tôi thấy hành vi tương tự trên hai máy khác nhau: Mac mini (cuối năm 2012) và MacBook Pro (cuối năm 2012), cả hai đều chạy 10.12.1.
Như Câu hỏi thường gặp của GnuPG nói:
GnuPG cố gắng khóa bộ nhớ để không có quá trình nào khác có thể nhìn thấy và do đó bộ nhớ sẽ không được ghi để trao đổi. Nếu vì một lý do nào đó, nó không thể làm điều này (ví dụ, một số nền tảng nhất định không hỗ trợ loại khóa bộ nhớ này), GnuPG sẽ cảnh báo bạn rằng nó sử dụng bộ nhớ không an toàn.
Mặc dù sử dụng bộ nhớ an toàn hầu như luôn luôn tốt hơn, nhưng không nhất thiết là sử dụng bộ nhớ không an toàn. Nếu bạn sở hữu máy và bạn tự tin rằng nó không chứa phần mềm độc hại, thì cảnh báo này có thể bị bỏ qua.
Điều gây trở ngại cho tôi là nó gpg2
đã không thay đổi kể từ ngày 12 tháng 9 năm 2016 . Kể từ đó, tôi đã cài đặt phiên bản 2.0.30 ít hơn nhưng tôi chỉ bắt đầu thấy cảnh báo này về bộ nhớ không an toàn ngày hôm nay. Mặc dù gpg2
công thức đã không thay đổi kể từ ngày 12 tháng 9 năm 2016, nhưng một điều tôi có thể nói chắc chắn rằng tôi đã làm trên cả hai máy trước khi bắt đầu thấy cảnh báo này là a brew update && brew upgrade
. Nhưng tôi thậm chí không chắc làm thế nào điều đó có thể ảnh hưởng đến điều này; đưa ra những gì Câu hỏi thường gặp của GnuPG nói, có vẻ như điều này có liên quan nhiều hơn đến hệ điều hành và khóa bộ nhớ.
... Và điều kỳ lạ hơn nữa là tôi cũng đã gpg1
cài đặt từ Homebrew (phiên bản 1.4.21), không cảnh báo về bộ nhớ không an toàn khi tôi sử dụng:
$ 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
Cả hai nhị phân thuộc về cùng một chủ sở hữu và nhóm và có cùng quyền:
-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
Tôi vừa thử cài đặt lại gpg2
với Homebrew: cả bằng cách sử dụng nhị phân được biên dịch sẵn và bằng cách xây dựng nguồn biểu mẫu, nhưng điều này không thay đổi bất cứ điều gì. Tôi vẫn nhận được cảnh báo về việc sử dụng bộ nhớ không an toàn.
Hơn nữa, ngay cả việc tạo nhị phân gpg2 cũng có bit gốc setuid được lật (như được đề xuất, ví dụ , ở đây ) không làm cho thông báo biến mất; nó vẫn cảnh báo về việc sử dụng bộ nhớ không an toàn.
Có ai biết những gì có thể đã thay đổi như vậy mà tôi sẽ đột nhiên bắt đầu thấy cảnh báo này ngày hôm nay? Và tại sao tôi lại nhìn thấy nó khi sử dụng gpg2
nhị phân mà không phải là gpg1
nhị phân?
Thông tin khác có thể có liên quan:
$ 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
Cập nhật
Tôi nghĩ lý do điều này xảy ra là vì phiên bản mới của libgcrypt
. Tôi vẫn không biết tại sao nó lại xảy ra, nhưng tôi khá chắc chắn rằng đây ít nhất là nguyên nhân cốt lõi của vấn đề. Công thức libgcrypt
đã được chỉ cập nhật hiện nay cho 1.7.4 vết sưng; điều này sẽ giải thích tại sao tôi thấy điều này trên hai máy tính khác nhau sau một brew update && brew upgrade
. Nó cũng sẽ giải thích lý do tại sao nó không xảy ra gpg1
, bởi vì gpg1
không dựa vào libgcrypt
thư viện mật mã bên ngoài , thay vào đó sử dụng thư viện mã hóa tích hợp của riêng nó.
Hơn nữa, tôi cũng đã gpg2
cài đặt từ MacGPG Suite, không thể hiện vấn đề này và được liên kết với một phiên bản khác của 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.
Vì vậy, tôi đoán rằng đây có lẽ là một báo cáo lỗi cho những người duy trì libgcrypt
. Tôi sẽ đăng lên danh sách gửi thư của họ, nhưng tôi sẽ để nó ở đây trong thời gian này trong trường hợp bất kỳ ai khác gặp phải vấn đề tương tự và / hoặc trong trường hợp bất cứ ai khác biết tại sao chính xác điều này đang xảy ra. Nếu tôi nhận được xác nhận sau khi gửi từ vào danh sách gửi thư của họ rằng đây là một lỗi, tôi sẽ bỏ phiếu để đóng câu hỏi này.
gpg1
và gpg2
, và (ii) Tôi đã theo dõi bộ nhớ trên máy tính của mình khi kiểm tra điều này và có rất nhiều bộ nhớ không sử dụng khi tôi thấy tin nhắn cảnh báo. Tôi nghĩ rằng tôi đã khoanh vùng gốc rễ của vấn đề, nhưng tôi vẫn không chắc tại sao nó lại xảy ra. Sẽ cập nhật câu hỏi trong một giây.