ณ วันนี้ทุกครั้งที่ฉันใช้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 คำถามที่พบบ่อยกล่าวว่าดูเหมือนว่ามีบางอย่างที่เกี่ยวข้องกับระบบปฏิบัติการและการล็อกหน่วยความจำ
... และสิ่งที่แปลกยิ่งกว่านั้นคือฉันยังได้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) ฉันได้ตรวจสอบหน่วยความจำบนคอมพิวเตอร์ของฉันเมื่อทำการทดสอบนี้และมีหน่วยความจำที่ไม่ได้ใช้มากมาย เมื่อฉันเห็นข้อความเตือน ฉันคิดว่าฉันแปลรากของปัญหานี้แล้ว แต่ฉันยังไม่แน่ใจว่าเหตุใดจึงเกิดขึ้น จะอัปเดตคำถามในไม่กี่วินาที