ไม่กี่วันที่ผ่านมา เดเมียน มิลเลอร์ (หนึ่งในผู้พัฒนา OpenSSH) ทำให้เป็นที่รู้จักผ่านทางรายการส่งจดหมาย การเปิดตัวการบำรุงรักษา OpenSSH 9.9p2 นี้ แก้ไขช่องโหว่สำคัญสองประการ ถูกค้นพบโดย Qualys ซึ่งสามารถนำไปใช้ประโยชน์ในการโจมตีแบบ Man-in-the-Middle (MITM) ได้
ได้กล่าวถึงข้อบกพร่องเหล่านี้ อนุญาตให้ผู้โจมตีสกัดกั้นการเชื่อมต่อ SSH และหลอกให้ไคลเอนต์ยอมรับคีย์ของเซิร์ฟเวอร์ที่เป็นอันตรายแทนที่จะเป็นคีย์ที่ถูกต้องของเซิร์ฟเวอร์เป้าหมาย
CVE-2025-26465: การหลีกเลี่ยงการตรวจสอบคีย์ SSH
ช่องโหว่แรกที่ได้รับการแก้ไขในการเปิดตัวเวอร์ชันแก้ไขนี้คือ CVE-2025-26465 ช่องโหว่นี้เกิดจากข้อผิดพลาดเชิงตรรกะในยูทิลิตี้ ssh ซึ่งช่วยให้ผู้โจมตีสามารถหลีกเลี่ยงการตรวจสอบคีย์เซิร์ฟเวอร์และดำเนินการโจมตีแบบ MITM ได้สำเร็จ
เมื่อไคลเอนต์พยายามเชื่อมต่อ ไปยังเซิร์ฟเวอร์ SSH ผู้โจมตีสามารถเปลี่ยนเส้นทางการรับส่งข้อมูลไปยังเซิร์ฟเวอร์ปลอมได้ และทำให้ไคลเอนต์ยอมรับคีย์ที่ไม่ถูกต้องโดยไม่แจ้งเตือน โดยเชื่อว่าคีย์นั้นเชื่อมต่อกับเซิร์ฟเวอร์ที่ถูกต้องตามกฎหมาย
นอกจากนี้ช่องโหว่นี้ยัง:
- มีอยู่ใน OpenSSH ตั้งแต่เวอร์ชัน 6.8p1 (ธันวาคม 2014)
- ทริกเกอร์เมื่อเปิดใช้งานตัวเลือก VerifyHostKeyDNS
- ในการกำหนดค่า OpenSSH พื้นฐาน ตัวเลือกนี้จะถูกปิดใช้งานตามค่าเริ่มต้น แต่ใน FreeBSD ตัวเลือกนี้จะเปิดใช้งานจนถึงเดือนมีนาคม 2023
ส่วนสาเหตุ ที่ทำให้เกิดความล้มเหลวดังกล่าวนั้น ได้กล่าวไว้ว่า เนื่องจากฟังก์ชันverify_host_key_callback() เรียกใช้verify_host_key() แต่จะตรวจสอบเฉพาะว่ารหัสข้อผิดพลาดที่ส่งคืนมาเป็น -1 เท่านั้น โดยไม่สนใจรหัสข้อผิดพลาดอื่นๆ เช่น -2 เมื่อไร verify_host_key() คืนค่า -2 เมื่อมีหน่วยความจำไม่เพียงพอแต่เนื่องจากการละเว้นรหัสข้อผิดพลาด ระบบสันนิษฐานผิดพลาดว่าคีย์โฮสต์ได้รับการตรวจสอบแล้ว ได้อย่างถูกต้อง
ผู้โจมตีสามารถใช้ประโยชน์จากข้อบกพร่องนี้ได้โดยการสร้างเซิร์ฟเวอร์ SSH ปลอมที่ส่งคีย์โฮสต์ขนาดใหญ่ (256 KB) ส่งผลให้ใช้หน่วยความจำบนไคลเอนต์มากเกินไปและก่อให้เกิดเงื่อนไขข้อผิดพลาดที่ไม่ได้รับการจัดการ
CVE-2025-26466: การรั่วไหลของหน่วยความจำและการใช้ CPU มากเกินไปใน SSH
ช่องโหว่ที่สองที่ได้รับการแก้ไขคือ CVE-2025-26466 และช่องโหว่นี้ ส่งผลต่อทั้งไคลเอนต์ ssh และเซิร์ฟเวอร์ sshd ในขณะที่ ช่วยให้ความจำหมดลง ของกระบวนการและสร้างโหลด CPU สูงโดยการส่งแพ็คเก็ต SSH2_MSG_PING ซ้ำ ๆ
ผลกระทบใหญ่หลวงของช่องโหว่นี้อยู่ที่ความจริงที่ว่า สามารถถูกใช้ประโยชน์ได้โดยไม่ต้องมีการตรวจสอบสิทธิ์และส่งผลต่อ OpenSSH ตั้งแต่เวอร์ชัน 9.5p1 (สิงหาคม 2023). นอกจากนี้ยังช่วยให้ผู้โจมตีใช้ทรัพยากรระบบจนลดประสิทธิภาพการทำงาน หรืออาจถึงขั้นปฏิเสธการให้บริการ (DoS) ได้อีกด้วย
ส่วนสาเหตุที่ทำให้เกิดความล้มเหลวนี้ ขอกล่าวคือ เกิดจาก แต่ละแพ็กเก็ต SSH2_MSG_PING ขนาด 16 ไบต์ที่เข้ามาจะทำให้มีการจัดสรรบัฟเฟอร์ขนาด 256 ไบต์ ในความทรงจำ บัฟเฟอร์นี้จะไม่ได้รับการปลดปล่อยจนกว่าข้อตกลงคีย์จะเสร็จสิ้น ซึ่งส่งผลให้เกิดการรั่วไหลของหน่วยความจำเมื่อมีการส่งแพ็คเก็ต PING หลายรายการ
การบรรเทาและการแก้ปัญหา
เพื่อเป็นแนวทางแก้ปัญหา ขอแนะนำให้ตั้งข้อจำกัด ใน sshd_config โดยใช้คำสั่งต่อไปนี้:
- เข้าสู่ระบบGraceTime: วิธีนี้จะช่วยจำกัดระยะเวลาการหมดเวลาสำหรับการตรวจสอบสิทธิ์
- แม็กซ์สตาร์ทอัพ: จำกัดจำนวนการเชื่อมต่อที่ไม่ได้รับการตรวจสอบสิทธิ์
- บทลงโทษต่อแหล่งที่มา: ใช้การลงโทษกับไคลเอนต์ที่สร้างการพยายามเชื่อมต่อหลายครั้ง
และสำหรับ โซลูชั่น, ข้อแรกและที่แนะนำมากที่สุดคือ อัพเกรด OpenSSH เป็นเวอร์ชันที่เปิดตัว “9.9p2” โดยเร็วที่สุดเพื่อแก้ไขช่องโหว่เหล่านี้ แต่หากไม่สามารถอัพเกรดทันทีได้ ควรใช้มาตรการบรรเทาปัญหาที่กล่าวข้างต้น นอกจากนี้ขอแนะนำให้ปิดใช้งาน VerifyHostKeyDNS เว้นแต่จะใช้กลไกการตรวจสอบ DNSSEC ที่เชื่อถือได้
ถ้าคุณเป็น สนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ คุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้
จะติดตั้ง OpenSSH บน Linux ได้อย่างไร?
สำหรับผู้ที่สนใจสามารถติดตั้ง OpenSSH เวอร์ชันใหม่นี้บนระบบของตนได้ ตอนนี้พวกเขาทำได้ ดาวน์โหลดซอร์สโค้ดของสิ่งนี้และ ดำเนินการรวบรวมบนคอมพิวเตอร์ของพวกเขา
เนื่องจากเวอร์ชันใหม่ยังไม่รวมอยู่ในที่เก็บของลีนุกซ์หลัก หากต้องการรับซอร์สโค้ดคุณสามารถทำได้จาก ลิงค์ต่อไปนี้.
ดาวน์โหลดเสร็จแล้ว ตอนนี้เราจะคลายซิปแพ็คเกจด้วยคำสั่งต่อไปนี้:
tar -xvf เปิด ssh-9.9p2.tar.gz
เราเข้าสู่ไดเร็กทอรีที่สร้างขึ้น:
ซีดี openssh-9.9p2
Y เราสามารถรวบรวมด้วย คำสั่งต่อไปนี้:
./configure --prefix = / opt --sysconfdir = / etc / ssh ทำการติดตั้ง