ปัญหากุญแจ OpenSSL หละหลวมใน Debian/Ubuntu

เมื่อคืนนี้ Debian มีประกาศ DSA 1571-1 ที่มีผลกระทบค่อนข้างกว้าง เป็น security alert เกี่ยวกับปัญหาของ openssl ใน Debian ซึ่งเกิดจากแพตช์ของ Debian เอง ทำให้คีย์ที่สร้างมี entropy ต่ำเกินไป จนสามารถเดาได้ง่าย

บั๊กนี้ มีผลตั้งแต่รุ่น 0.9.8c-1 เป็นต้นมา ซึ่งจะมีผลใน etch, lenny, sid ส่วน sarge นั้นปลอดภัย คำแนะนำคือ ถ้าใช้ etch เป็นเซิร์ฟเวอร์อยู่ ก็ควรอัปเกรด openssl เป็น 0.9.8c-4etch3 เป็นการด่วน ส่วน lenny/sid นั้น ก็อัปเกรดเป็น 0.9.8g-9 และถ้ามีการสร้างกุญแจ SSH โดยใช้ Debian หลังรุ่น sarge ก็ควรลบกุญแจเก่าทิ้ง สร้างกุญแจใหม่ด้วย

ปัญหานี้มีผลไปถึง Ubuntu 7.04 (feisty), 7.10 (gutsy) และ 8.04 (hardy) ด้วย

โปรแกรมที่ได้รับผลกระทบจากปัญหานี้ได้แก่ openssh, OpenVPN, DNSSEC, กุญแจสำหรับ X.509, encfs, Tor, postfix, cyrus imapd, courier imap/pop3, apache2 (ssl certs), dropbear, cfengine

รายละเอียดการแก้ปัญหา มีบอกไว้ใน security alert ดังกล่าวแล้ว พร้อมมี รายละเอียดเพิ่มเติม ใน Debian Wiki ด้วย

วิธีตรวจสอบคร่าว ๆ คือ ใช้สคริปต์ dowkd.pl (ลายเซ็น GPG) ตรวจสอบความแข็งแรงของกุญแจ เช่น

ตรวจสอบกุญแจของโฮสต์

$ perl dowkd.pl host localhost
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9

แบบนี้คือโอเค แต่ถ้าผลเป็นอย่างนี้:

$ perl dowkd.pl host localhost
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9
localhost: weak key
localhost: weak key

แปลว่ามีปัญหากุญแจเดาง่าย ต้องสร้างกุญแจใหม่

หรือถ้ามีผู้ใช้เอากุญแจสาธารณะมาวางไว้ในระบบ ก็สามารถตรวจสอบกุญแจของผู้ใช้ว่าแน่นหนาหรือไม่

# perl dowkd.pl user someuser
/home/someuser/.ssh/authorized_keys:1: warning: unparsable line
/home/someuser/.ssh/authorized_keys:3: warning: unparsable line
/home/someuser/.ssh/authorized_keys:4: weak key
/home/someuser/.ssh/authorized_keys:5: weak key

หรือสั่งอย่างนี้ เพื่อตรวจสอบกุญแจของผู้ใช้ทั้งหมด

# perl dowkd.pl user

ตรวจสอบแฟ้มกุญแจทีละแฟ้มก็ได้ โดยมุ่งไปที่โปรแกรมที่ใช้ SSL เป็นตัว ๆ ไป (เช่น apache2 + mod_ssl)

$ perl dowkd.pl file FILE

ถ้าตรวจพบกุญแจที่มีปัญหา ก็อ่าน วิธีแก้ โดยด่วนเลยครับ

Topic: 
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้