Skip to main content
ข่าวสาร

ช่องโหว่ OpenSSH บน Alpine Linux ให้คนนอกล็อกอิน SSH ได้โดยไม่ทราบรหัสผ่าน และถูกโจมตีจริงแล้ว

วันที่ 5 พ.ย. 2569 OpenSSH ออกรุ่น 10.6p2 แก้ช่องโหว่ CVE-2026-123158 ที่ทำให้ sshd บน Linux ที่ใช้ musl libc และไม่ได้เปิด PAM เช่น Alpine ยอมให้ล็อกอินด้วยรหัสผ่านยาวเกิน 256 ตัวอักษรอะไรก็ได้ CISA ยืนยันว่าถูกโจมตีจริงเมื่อ 9 พ.ย. สรุปว่าเครื่องแบบไหนโดน แก้อย่างไร และควรตรวจอะไรต่อ

OpenSSHAlpine LinuxSSHCybersecurityPatch ManagementServer SecurityPDPA

สมมติว่าทีมของคุณมีเซิร์ฟเวอร์เล็ก ๆ บนคลาวด์ไว้รันงานเบื้องหลัง เช่น ตัวรับไฟล์จากคู่ค้า ตัวสำรองข้อมูล หรือเครื่อง jump host สำหรับเข้าไปดูแลระบบอื่น เครื่องพวกนี้มักใช้ Alpine Linux เพราะเบาและติดตั้งเร็ว และเปิด SSH ไว้ให้ผู้ดูแลเข้าไปแก้ปัญหา

ถ้าเครื่องแบบนั้นยังไม่ได้อัปเดตแพ็กเกจ openssh ในสัปดาห์นี้ คนที่เข้าถึงพอร์ต SSH ได้อาจล็อกอินเข้าไปได้โดยไม่ต้องทราบรหัสผ่านเลย

เกิดอะไรขึ้น

วันที่ 5 พฤศจิกายน 2569 ทีม OpenSSH ออกรุ่น Portable OpenSSH 10.6p2 พร้อมระบุในบันทึกการเปลี่ยนแปลงว่าแก้ปัญหาความปลอดภัยระดับวิกฤต เป็นการข้ามการล็อกอินด้วยรหัสผ่านผ่าน sshd บน Linux บางระบบที่ build และรันโดยไม่เปิด PAM ทีม OpenSSH มองว่าต้นเหตุอยู่นอก sshd แต่ผู้โจมตีใช้ sshd เป็นทางเข้าได้ จึงแก้ที่ sshd ผู้รายงานคือ Özgün Kültekin จาก Wakefield

วันเดียวกัน Alpine Linux ออกประกาศความปลอดภัยอธิบายว่าผู้โจมตีที่เข้าถึงพอร์ต SSH ได้สามารถล็อกอินโดยไม่ทราบรหัสผ่าน ใช้การเชื่อมต่อครั้งเดียว ได้ผลทุกครั้ง ไม่ต้องลองซ้ำ

ฐานข้อมูล NVD ของ NIST บันทึกเป็น CVE-2026-123158 ระบุว่ากระทบ sshd ใน OpenSSH ก่อนรุ่น 10.6p2 บน Linux ที่ใช้ musl libc โดยไม่มี PAM และในบางการตั้งค่าบัญชี รหัสผ่านอะไรก็ได้ที่ยาว 256 ถึง 1024 ตัวอักษรจะล็อกอินผ่าน คะแนน CVSS 3.1 ที่บันทึกไว้คือ 8.1

วันที่ 9 พฤศจิกายน 2569 CISA หน่วยงานความมั่นคงไซเบอร์ของสหรัฐฯ เพิ่มช่องโหว่นี้เข้ารายการ Known Exploited Vulnerabilities ซึ่งเป็นรายการช่องโหว่ที่มีหลักฐานว่าถูกโจมตีจริง และให้หน่วยงานรัฐบาลกลางสหรัฐฯ แก้ภายในวันที่ 12 พฤศจิกายน 2569 กำหนดนี้ไม่ได้บังคับบริษัทไทย แต่ระยะเวลาเพียงสามวันบอกได้ว่าเรื่องนี้เร่งแค่ไหน

ช่องโหว่ทำงานอย่างไร

Alpine อธิบายกลไกไว้ค่อนข้างตรงไปตรงมา เมื่อ sshd ถูก build โดยไม่มี PAM มันจะตรวจรหัสผ่านด้วยการนำรหัสที่ผู้ใช้พิมพ์ไปเข้าฟังก์ชัน crypt() แล้วเทียบกับค่าที่เก็บไว้ในไฟล์ shadow

ฟังก์ชัน crypt() ของ musl คืนค่าเป็นเครื่องหมาย * เพื่อบอกว่าเกิดข้อผิดพลาด เมื่อรหัสผ่านยาวเกิน 256 ไบต์ บังเอิญว่าบัญชีที่ไม่ได้ตั้งรหัสผ่าน เช่น บัญชีที่ล็อกอินด้วยคีย์อย่างเดียว ก็เก็บค่าเป็น * เหมือนกัน ผลคือค่าที่ได้ตรงกันและ sshd ยอมให้เข้า

เงื่อนไขที่ Alpine ระบุว่าทำให้เครื่องเข้าข่ายมีครบทั้งหมดดังนี้

  • ใช้แพ็กเกจ openssh-server ของ Alpine ที่ build โดยไม่มี PAM หรือใช้ openssh-server-pam แต่ตั้ง UsePAM no
  • PasswordAuthentication เป็น yes ซึ่งเป็นค่าเริ่มต้นของ OpenSSH ถ้าไม่ได้เปลี่ยน
  • มีบัญชีที่ช่องรหัสผ่านเป็น * เช่น root ใน base image ตั้งแต่ราว Alpine 3.16 บัญชีที่สร้างไว้ล็อกอินด้วยคีย์อย่างเดียว หรือผู้ใช้ที่ดึงมาจากระบบไดเรกทอรีผ่าน musl-nscd
  • มีบัญชีในเครื่องอย่างน้อยหนึ่งบัญชีที่ตั้งรหัสผ่านแบบ hash ขึ้นต้นด้วย $5$ หรือ $6$

ค่าเริ่มต้น PermitRootLogin prohibit-password ช่วยกันบัญชี root ไว้ได้ แต่ Alpine เตือนว่าถ้ามีบัญชีอื่นที่ล็อกอินได้และยกสิทธิ์เป็น root ได้ เช่น ผ่าน doas ก็ไม่ช่วยอะไร

Alpine ยังระบุว่า cloud image แบบ tiny-cloud ตั้งแต่ 3.18.11 ถึง 3.24.3 มีบัญชี alpine ที่ไม่มีรหัสผ่านและใช้ doas ได้โดยไม่ถามรหัส เครื่องปลอดภัยตอนบูตครั้งแรก แต่จะเข้าข่ายทันทีที่มีใครตั้งรหัสผ่านให้บัญชีใดบัญชีหนึ่งในเครื่อง

เครื่องแบบไหนไม่เข้าข่าย

ประกาศของ Alpine ระบุว่ากลุ่มต่อไปนี้ไม่ได้รับผลกระทบ container ที่ไม่ได้รัน sshd อยู่ข้างใน เครื่องที่ตั้ง PasswordAuthentication no เครื่องที่ใช้ openssh-server-pam กับ UsePAM yes บัญชีที่ถูกล็อกด้วยเครื่องหมาย ! และเครื่องที่ไม่มีบัญชีใดตั้งรหัสผ่านแบบ hash เลย cloud image ที่ตั้งค่าผ่าน cloud-init ก็ไม่เข้าข่าย เพราะ cloud-init เขียน PasswordAuthentication no ไว้ให้

บันทึกของ OpenSSH ระบุว่าปัญหานี้กระทบ Linux ที่ใช้ musl libc และปิด PAM ส่วน NVD ยก Alpine เป็นตัวอย่างของระบบแบบนี้ เครื่องที่ไม่ตรงเงื่อนไขทั้งสองข้อจึงไม่เข้าข่าย แต่ทีมไอทีควรยืนยันจากเครื่องจริงว่า sshd ที่รันอยู่ build แบบไหน ไม่ใช่เดาจากชื่อระบบปฏิบัติการ

ทำไมเรื่องนี้สำคัญกับธุรกิจไทย

ประกาศของ Alpine พูดถึงทั้งเซิร์ฟเวอร์ที่ติดตั้งเอง cloud image และ container แปลว่า Alpine อาจซ่อนอยู่ได้หลายที่ ไม่ใช่แค่เครื่องที่ทีมไอทีตั้งเอง หลายบริษัทจึงอาจมี sshd บน Alpine อยู่ในระบบโดยไม่มีใครจำได้ เช่น container ที่ผู้รับเหมาเก่าทำไว้เพื่อรับไฟล์ผ่าน SFTP

เครื่องเล็ก ๆ แบบนี้มักเชื่อมกับระบบสำคัญ jump host เข้าถึงเซิร์ฟเวอร์ ERP และฐานข้อมูล ตัวรับไฟล์ SFTP เก็บไฟล์ใบแจ้งหนี้ รายชื่อลูกค้า หรือข้อมูลพนักงาน ถ้าผู้โจมตีเข้าเครื่องเหล่านี้ได้ ก็อยู่ห่างจากข้อมูลส่วนบุคคลเพียงขั้นเดียว

ถ้าพบว่าข้อมูลส่วนบุคคลรั่ว ผู้ควบคุมข้อมูลต้องแจ้งสำนักงานคณะกรรมการคุ้มครองข้อมูลส่วนบุคคลภายใน 72 ชั่วโมงหลังทราบเหตุ เว้นแต่ไม่มีความเสี่ยงต่อสิทธิและเสรีภาพของบุคคล DPO จึงควรทราบเรื่องตั้งแต่ทีมเริ่มสงสัยว่ามีเครื่องถูกเข้าถึง

อีกเรื่องที่น่าสังเกตอยู่ในบันทึกรุ่น 10.6 ของ OpenSSH ทีมงานเล่าว่าช่วงหลังได้รับรายงานช่องโหว่จำนวนมาก หลายรายงานมาจากโมเดล AI และเคยพบว่าช่องโหว่ที่ AI เจอ ถูกนักวิจัยอีกคนค้นพบซ้ำโดยอิสระ ทีม OpenSSH จึงจะออกรุ่นถี่ขึ้นแทนการรอรวมไว้ออกรอบใหญ่ สำหรับทีมไอที แปลว่ารอบอัปเดตแพ็กเกจพื้นฐานอย่าง SSH ควรสั้นลงตามไปด้วย

เช็กลิสต์สำหรับสัปดาห์นี้

  1. ทำรายชื่อเครื่องและ container ทุกตัวที่เปิดพอร์ต SSH รวมเครื่องบนคลาวด์ เครื่องที่สาขา และ container ที่ผู้ให้บริการภายนอกดูแล แล้วแยกว่าตัวไหนใช้ Alpine หรือ distribution อื่นที่ใช้ musl
  2. บนเครื่อง Alpine ให้รัน apk upgrade -U -a แล้วรีสตาร์ต sshd Alpine ย้ำว่าการอัปเกรดแพ็กเกจไม่ได้แทนที่ sshd ที่รันอยู่ ต้องรีสตาร์ตเอง
  3. ถ้ายังอัปเดตไม่ได้ ให้ตั้ง PasswordAuthentication no แล้วรีสตาร์ต sshd ก่อนทำต้องทดสอบว่าล็อกอินด้วยคีย์ได้ และเปิด session เดิมค้างไว้จนกว่าจะทดสอบล็อกอินใหม่ผ่าน
  4. สำหรับ Docker image ที่ build เอง ให้ build ใหม่จาก base image รุ่นที่แก้แล้ว ถ้าเป็น image ของผู้ขาย ให้ถามผู้ขายว่าออกรุ่นแก้แล้วหรือยัง
  5. ตรวจ log ย้อนหลังใน /var/log/messages หาบรรทัดของ sshd ที่ขึ้นว่า Accepted password ของบัญชีที่ไม่มีรหัสผ่าน และดูการใช้ doas ผู้ใช้ที่สร้างใหม่ และไฟล์ authorized_keys ที่เปลี่ยนไป ถ้าตัดความเป็นไปได้ไม่ได้ Alpine แนะนำให้ถือว่าเครื่องนั้นถูกเจาะแล้ว
  6. จำกัดพอร์ต SSH ให้เข้าได้เฉพาะ VPN หรือ IP ที่กำหนด ไม่เปิดให้ทั้งอินเทอร์เน็ต ไม่ว่าจะแก้เสร็จหรือยัง
  7. ถ้าพบร่องรอยน่าสงสัยบนเครื่องที่เข้าถึงข้อมูลส่วนบุคคลได้ แจ้ง DPO ทันทีพร้อมจดเวลาที่ทราบเหตุ เพื่อประเมินว่าต้องแจ้งเหตุตาม PDPA หรือไม่

สัปดาห์ก่อนมีช่องโหว่ข้ามการยืนยันตัวตนอีกตัวที่ถูกโจมตีจริงในไฟร์วอลล์ อ่านได้ที่ กรณี SonicWall SSL VPN และถ้าทีมยังจัดลำดับไม่ถูกว่าแพตช์ไหนต้องทำก่อน ดูบทความเรื่องการจัดลำดับแพตช์ตามความเสี่ยง

งานที่ Enersys ทำ

เราพัฒนาและดูแลซอฟต์แวร์ธุรกิจมา 14 ปี ครอบคลุมระบบ ERP งาน AI และงานด้านข้อมูลส่วนบุคคลตาม PDPA การอัปเดตเซิร์ฟเวอร์เป็นงานของผู้ดูแลระบบของคุณ แต่ถ้าคุณอยากทราบว่าระบบ ERP และระบบงานที่เชื่อมกันอยู่มีทางเข้าจากภายนอกทางไหนบ้าง เครื่องไหนถือข้อมูลส่วนบุคคลชุดใด และควรเตรียมอะไรไว้ก่อนเกิดเหตุ คุยกับทีม Enersys ได้

แหล่งข้อมูล

เลือกอ่านประเด็นที่เกี่ยวข้องกับบทความนี้

Nextcloud ที่เปิดเอกสารด้วย Built-in CODE ถูกเจาะจริง ปิดแอปอย่างเดียวไม่พอ

วันที่ 23 ตุลาคม 2569 CISA เพิ่ม CVE-2026-110447 ในแอป Collabora Online Built-in CODE Server ของ Nextcloud เข้ารายการช่องโหว่ที่ถูกโจมตีจริง ผู้โจมตีรันคำสั่งบนเซิร์ฟเวอร์ได้โดยไม่ต้องล็อกอิน สรุปว่าบริษัทที่ใช้ Nextcloud เป็นที่เก็บไฟล์กลางควรตรวจอะไรในสัปดาห์นี้

อ่านบทความ

GitLab ออกแพตช์ช่องโหว่ระดับ 10.0: บริษัทที่ติดตั้ง GitLab เองควรเช็กอะไรภายในสัปดาห์นี้

วันที่ 21 ตุลาคม 2569 GitLab ออกแพตช์ 7 รุ่นพร้อมกัน แก้ช่องโหว่ 12 รายการ ตัวที่หนักที่สุดคือ CVE-2026-110264 คะแนน CVSS 10.0 ที่อาจเปิดทางให้คนที่ไม่ได้ล็อกอินรันโค้ดบนเซิร์ฟเวอร์ได้ GitLab.com แก้แล้ว แต่องค์กรที่ติดตั้ง GitLab เองต้องอัปเกรดเอง สรุปว่าควรตรวจอะไรและถามทีมพัฒนาอย่างไร

อ่านบทความ

Plex Media Server ถูกโจมตีจริง แพตช์ออกตั้งแต่สิงหาคม ทำไมเครื่องในออฟฟิศยังค้างอยู่

วันที่ 20 ตุลาคม 2569 CISA เพิ่มช่องโหว่ 4 รายการของ Plex Media Server ที่ต่อกันจนรันโค้ดบนเครื่องได้ เข้ารายการช่องโหว่ที่ถูกโจมตีจริง ทั้งที่แพตช์ออกตั้งแต่ 4 สิงหาคม สรุปว่าธุรกิจที่มี NAS หรือเครื่องในออฟฟิศรันโปรแกรมแบบนี้อยู่ควรตรวจอะไร

อ่านบทความ
ดูบทความทั้งหมดใน Insights

"Empowering Innovation,
Transforming Futures."

บอกเราว่างานส่วนไหนที่คุณต้องการปรับ