แจ้งเตือน พบช่องโหว่ใน OpenSSH บน Alpine Linux เสี่ยงถูกเข้าสู่ระบบโดยไม่ต้องทราบรหัสผ่าน

ยอดเข้าชม: 131 views

ศูนย์ประสานการรักษาความมั่นคงปลอดภัยระบบคอมพิวเตอร์แห่งชาติ (ThaiCERT) ได้ติดตามสถานการณ์ภัยคุกคามทางไซเบอร์ พบรายงานช่องโหว่ CVE-2026-123158 ในบริการ OpenSSH Server (sshd) บนระบบ Linux ที่ใช้ musl libc และตรวจสอบรหัสผ่านโดยไม่ใช้ PAM (Pluggable Authentication Modules) ซึ่งรวมถึง Alpine Linux ที่ใช้แพ็กเกจ openssh-server ตามค่าปกติ หากระบบเข้าเงื่อนไข ผู้โจมตีที่เข้าถึงพอร์ต SSH และทราบชื่อบัญชีเป้าหมายอาจเข้าสู่ระบบได้โดยไม่ต้องทราบรหัสผ่านหรือมี SSH Key ของบัญชีนั้น ผู้ดูแลระบบควร อัปเดตแพ็กเกจ openssh และเริ่มบริการ sshd ใหม่ เนื่องจากการอัปเดตแพ็กเกจเพียงอย่างเดียวไม่ทำให้บริการที่กำลังทำงานอยู่ใช้รุ่นที่แก้ไขแล้ว [1]

1. รายละเอียดช่องโหว่ [2]
CVE-2026-123158 (CVSS v3.1: 8.1)[3] – ช่องโหว่ข้ามการยืนยันตัวตนด้วยรหัสผ่าน (Password Authentication Bypass) เป็นช่องโหว่ใน OpenSSH ที่ใช้งานร่วมกับ musl libc โดยไม่ได้เปิดใช้ PAM เช่น ระบบ Alpine Linux ซึ่งเกิดจากความผิดพลาดในการตรวจสอบรหัสผ่าน เมื่อผู้โจมตีส่งรหัสผ่านที่มีความยาวเกิน 256 ไบต์ อาจทำให้ระบบประมวลผลผิดพลาดและยอมรับการเข้าสู่ระบบโดยไม่จำเป็นต้องทราบรหัสผ่านที่ถูกต้อง ส่งผลให้ผู้โจมตีสามารถเข้าถึงบัญชีผู้ใช้งานที่เดิมกำหนดให้เข้าสู่ระบบด้วย SSH Key เท่านั้น ทั้งนี้ การโจมตีจะเกิดขึ้นได้เมื่อระบบมีการตั้งค่าตรงตามเงื่อนไขของช่องโหว่

2. ผลิตภัณฑ์ที่ได้รับผลกระทบ
Alpine Linux version 3.16 ถึง 3.24 และ edge ที่ยังใช้แพ็กเกจก่อนรุ่นแก้ไขในข้อ 3.2 มีความเสี่ยงเมื่อเข้าเงื่อนไข ครบทั้ง 4 ข้อ ดังนี้
– เปิดบริการ sshd โดยใช้แพ็กเกจ openssh-server ที่ไม่ได้เปิดใช้งาน PAM หรือใช้แพ็กเกจ openssh-server-pam แต่กำหนดค่า UsePAM no
– มีบัญชีผู้ใช้งานที่สามารถเข้าสู่ระบบผ่าน SSH ได้ และมีค่า “*” ในช่องจัดเก็บรหัสผ่าน เช่น บัญชีที่กำหนดให้ใช้กุญแจ SSH โดยไม่ได้ตั้งรหัสผ่าน
– มีบัญชีที่เข้าใช้งานผ่าน SSH ได้ และช่องรหัสผ่านมีค่า “*” เช่น บัญชีที่กำหนดให้ใช้กุญแจ SSH โดยไม่ได้ตั้งรหัสผ่าน
– มีบัญชีภายในเครื่องอย่างน้อยหนึ่งบัญชีที่เก็บรหัสผ่านแบบแฮชขึ้นต้นด้วย $5$ หรือ $6$
ระบบที่กำหนดค่า PasswordAuthentication no หรือใช้ openssh-server-pam ร่วมกับ UsePAM yes ไม่ได้รับผลกระทบจากช่องโหว่นี้ รวมถึงคอนเทนเนอร์ที่ไม่ได้เปิดบริการ sshd ทั้งนี้ บัญชีที่ถูกล็อกด้วยเครื่องหมาย “!” ในช่องจัดเก็บรหัสผ่านไม่เข้าเงื่อนไขเดียวกับบัญชีที่มีค่า “*”

3. แนวทางการแก้ไข [4]
3.1 ตรวจสอบเครื่องที่เปิดบริการ SSH โดยให้ความสำคัญกับเครื่องที่เข้าถึงได้จากอินเทอร์เน็ต รวมถึง Cloud Instance ที่สร้างจากอิมเมจเดิม ตรวจสอบรุ่นของ Alpine Linux ด้วย cat /etc/alpine-release และรุ่นแพ็กเกจที่ติดตั้งด้วย apk info -v openssh-server หรือ apk info -v openssh-server-pam ตามแพ็กเกจที่ใช้งาน
3.2 อัปเดตแพ็กเกจ openssh ให้ตรงกับรุ่นของ Alpine Linux ที่ใช้งาน ดังนี้
– สำหรับ Alpine Linux 3.16 ให้อัปเดตแพ็กเกจ openssh เป็น version 9.0_p1-r6 หรือใหม่กว่า
– สำหรับ Alpine Linux 3.17 ให้อัปเดตแพ็กเกจ openssh เป็น version 9.1_p1-r7 หรือใหม่กว่า
– สำหรับ Alpine Linux 3.18 ให้อัปเดตแพ็กเกจ openssh เป็น version 9.3_p2-r4 หรือใหม่กว่า
– สำหรับ Alpine Linux 3.19 ให้อัปเดตแพ็กเกจ openssh เป็น version 9.6_p1-r3 หรือใหม่กว่า
– สำหรับ Alpine Linux 3.20 ให้อัปเดตแพ็กเกจ openssh เป็น version 9.7_p1-r6 หรือใหม่กว่า
– สำหรับ Alpine Linux 3.21 ให้อัปเดตแพ็กเกจ openssh เป็น version 9.9_p2-r1 หรือใหม่กว่า
– สำหรับ Alpine Linux 3.22 ให้อัปเดตแพ็กเกจ openssh เป็น version 10.0_p1-r11 หรือใหม่กว่า
– สำหรับ Alpine Linux 3.23 ให้อัปเดตแพ็กเกจ openssh เป็น version 10.2_p1-r1 หรือใหม่กว่า
– สำหรับ Alpine Linux 3.24 ให้อัปเดตแพ็กเกจ openssh เป็น version 10.3_p1-r2 หรือใหม่กว่า
– สำหรับ Alpine Linux edge ให้อัปเดตแพ็กเกจ openssh เป็น version 10.6_p2-r0 หรือใหม่กว่า
3.3 หลังอัปเดต ต้องเริ่มบริการ sshd ใหม่เพื่อให้แพตช์มีผล สำหรับระบบที่ใช้ OpenRC ให้ตรวจสอบการตั้งค่าและเริ่มบริการใหม่ด้วยคำสั่ง sshd -t && rc-service sshd restart จากนั้นทดสอบเปิดการเชื่อมต่อ SSH ครั้งใหม่ให้สำเร็จก่อนปิดเซสชันเดิม
3.4 ตรวจสอบ /var/log/messages หรือ Log ส่วนกลางย้อนหลัง โดยค้นหาข้อความ Accepted password for ที่ระบุชื่อบัญชีซึ่งไม่ควรเข้าสู่ระบบด้วยรหัสผ่าน โดยเฉพาะ alpine, root หรือบัญชีที่ใช้เฉพาะกุญแจ SSH หากพบ ให้ตรวจสอบการใช้ doas บัญชีที่สร้างใหม่ และกุญแจที่เพิ่มใน authorized_keys หากไม่สามารถตัดความเป็นไปได้ว่ามีผู้เข้าสู่ระบบโดยไม่ได้รับอนุญาต ให้เก็บรักษาหลักฐานและดำเนินการตามแผนตอบสนองเหตุการณ์

4. แนวทางปฏิบัติกรณีไม่สามารถอัปเดตได้ทันที
4.1 ทดสอบให้แน่ใจก่อนว่าผู้ดูแลระบบเข้าสู่เครื่องด้วยกุญแจ SSH ได้ และเปิดเซสชันเดิมค้างไว้ จากนั้นกำหนด PasswordAuthentication no ใน /etc/ssh/sshd_config พร้อมตรวจสอบไฟล์ที่โหลดเพิ่มเติมและเงื่อนไข Match ว่าไม่มีรายการที่ยังอนุญาตให้ใช้รหัสผ่าน
4.2 ตรวจสอบความถูกต้องของการตั้งค่าด้วยคำสั่ง sshd -t หากไม่พบข้อผิดพลาด ให้เริ่มบริการใหม่ด้วยคำสั่ง rc-service sshd restart จากนั้นตรวจสอบการตั้งค่าที่มีผลบังคับใช้ด้วยคำสั่ง sshd -T | grep -i passwordauthentication ซึ่งควรแสดงผลเป็น passwordauthentication no พร้อมตรวจสอบเงื่อนไข Match ที่อาจมีผลต่อบัญชีผู้ใช้งานหรือการเชื่อมต่อแต่ละประเภท และทดสอบเปิดการเชื่อมต่อ SSH ครั้งใหม่ด้วยกุญแจ SSH ให้สำเร็จก่อนปิดเซสชันเดิม
4.3 หากยังปิดการใช้รหัสผ่านไม่ได้ ให้จำกัดการเข้าถึงพอร์ต SSH เฉพาะเครือข่ายบริหารจัดการหรือผ่าน VPN และพิจารณาระงับบริการ SSH บนเครื่องที่ไม่จำเป็นต้องใช้งานจนกว่าจะติดตั้งแพตช์

แหล่งอ้างอิง
[1] https://dg.th/hygcm2f683
[2] https://dg.th/njcyvmp5hq
[3] https://dg.th/9bf2str7wx
[4] https://dg.th/cdvjzsy684