สรุปสั้น

cPGuard คือ เครื่องมือความปลอดภัยของบริษัท OPSSHIELD สำหรับเซิร์ฟเวอร์ Linux โดยเฉพาะเซิร์ฟเวอร์เว็บโฮสติ้งที่ใช้แผงควบคุมอย่าง cPanel ทำหน้าที่สแกนมัลแวร์และป้องกันการโจมตี ตัวมันจึงทำงานด้วยสิทธิ์ root และอัปเดตตัวเองอัตโนมัติ เมื่อวันที่ 2 พฤศจิกายน 2569 เวลา 02:06 UTC (09:06 น. ตามเวลาไทย) ผู้โจมตีที่ยังไม่ทราบตัวตนใช้ credential ที่ถูกขโมยเข้าระบบอัปเดตของ cPGuard แล้วแอบใส่สคริปต์อันตรายไว้ในเวอร์ชัน 5.88.12 ถึง 5.88.19 เซิร์ฟเวอร์ของลูกค้าที่รับอัปเดตเหล่านี้ได้แบ็กดอร์ไปพร้อมกับการถูกเก็บไฟล์รหัสผ่าน /etc/shadow คอนฟิกฐานข้อมูลของ root ประวัติคำสั่ง shell และไฟล์ SSH ของ root ส่งออกไปยังเซิร์ฟเวอร์ไลเซนส์ของ OPSSHIELD เองผ่านบัญชีที่ถูกเจาะ เพื่อให้ผู้โจมตีมาเก็บทีหลัง OPSSHIELD ตรวจพบภายใน 12 ชั่วโมง และประเมินว่าผู้โจมตีดึงไฟล์ไปแล้ว 32 ไฟล์ ซึ่งแต่ละไฟล์ผูกกับเซิร์ฟเวอร์ลูกค้าหนึ่งเครื่อง

ประเด็นที่ผู้ดูแลต้องเข้าใจ คือ อัปเดตเวอร์ชัน 5.88.25 ขึ้นไปลบแบ็กดอร์และไฟล์ที่สคริปต์ทิ้งไว้ได้ แต่รหัสผ่านและคีย์ที่ถูกคัดลอกออกไปแล้วยังใช้ได้อยู่ และ OPSSHIELD ยังไม่เปิดเผยว่ามีเซิร์ฟเวอร์กี่เครื่องที่ได้รับเวอร์ชันอันตราย เซิร์ฟเวอร์ที่ได้อัปเดตในช่วงนั้นจึงต้องถือว่าอาจถูกเจาะ ผู้ดูแลควรอัปเดต cPGuard ทันที แล้วเปลี่ยนรหัสผ่าน root และบัญชี Linux ทุกบัญชี หมุนรหัสฐานข้อมูลและ token ต่าง ๆ และเปลี่ยนคีย์ SSH ทั้งหมด

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 3 พฤศจิกายน 2569 โดยอ้างประกาศของ OPSSHIELD ว่าบริษัทล้าง credential ของโครงสร้างพื้นฐานแล้ว หยุดไม่ให้สคริปต์กระจายไปยังเซิร์ฟเวอร์เพิ่ม และยังสอบสวนว่าผู้โจมตีได้ credential มาอย่างไร เนื่องจากเซิร์ฟเวอร์ตรวจหาอัปเดตเป็นรอบ บางเครื่องจึงอาจไม่ได้รันสคริปต์ OPSSHIELD ประเมินเมื่อปลายวันที่ 2 พฤศจิกายน (UTC) ว่าผู้โจมตีดึงไฟล์ไปแล้ว 32 ไฟล์ ซึ่งนับเฉพาะไฟล์ที่รู้ว่าถูกดึง และอาจเปลี่ยนได้ ตัวเลขนี้ไม่ได้บอกจำนวนเซิร์ฟเวอร์ทั้งหมดที่อาจเกี่ยวข้อง บริษัทยังระบุว่านอกจากการเก็บข้อมูลและแบ็กดอร์แล้ว ยังไม่พบพฤติกรรมอันตรายอื่น แต่ย้ำว่าข้อสรุปนี้ยังไม่ใช่ข้อสรุปสุดท้าย

นอกจากนี้ OPSSHIELD กำลังออกอัปเดตอีกรอบเพื่อลบคีย์สำหรับการเข้าซัพพอร์ตออกจากเซิร์ฟเวอร์ที่เคยเพิ่มไว้ เป็นมาตรการเชิงป้องกัน ฟีเจอร์ support access ของ cPGuard ให้เจ้าหน้าที่ OPSSHIELD เข้าเซิร์ฟเวอร์ลูกค้าเพื่อแก้ปัญหา โดยเพิ่ม SSH public key ของบริษัทลงในไฟล์ authorized_keys ของ root ข้อจำกัดของข้อมูลที่ควรรู้ คือ OPSSHIELD ไม่ได้บอกว่า private key ที่คู่กับคีย์ซัพพอร์ตนี้รั่วในเหตุครั้งนี้หรือไม่ และบริษัทไม่ได้แนะนำให้รีเซ็ตหรือติดตั้งระบบปฏิบัติการใหม่เป็นขั้นตอนปกติ แต่ระบุว่ามุมมองนี้อาจเปลี่ยนได้ตามผลการสอบสวน

วิธีการโจมตี

ยึดระบบอัปเดตด้วย credential ที่ขโมยมา — ผู้โจมตีไม่ได้เจาะเซิร์ฟเวอร์ลูกค้าทีละเครื่อง แต่เข้าระบบที่ OPSSHIELD ใช้ส่งอัปเดตให้ลูกค้าทุกราย แล้วแนบสคริปต์ cpguard-v58812-i91511.sh ไปกับเวอร์ชัน 5.88.12 ถึง 5.88.19 วิธีนี้ได้ผลเพราะ cPGuard ทำงานด้วยสิทธิ์ root และลูกค้าเชื่อถือการอัปเดตจากผู้ผลิตโดยอัตโนมัติ สคริปต์จึงได้สิทธิ์สูงสุดทันทีที่รัน

ฝังแบ็กดอร์และเก็บไฟล์ที่ใช้เข้าระบบต่อได้ — สคริปต์วาง shell แบ็กดอร์ที่ /var/tmp/.cpg91511_sh และรวบรวมไฟล์ไว้ใน /var/tmp/.cpg91511 ก่อนบีบอัดเป็น loot.tgz ไฟล์ที่เก็บ ได้แก่ /etc/shadow และ /etc/passwd คอนฟิก MariaDB หรือ MySQL ของ root (my.cnf) ประวัติคำสั่ง shell ของ root และไฟล์ authorized_keys กับ known_hosts ของ root ไฟล์ /etc/shadow เก็บ password hash แบบทางเดียว รหัสผ่านที่อ่อน ซ้ำ หรือเคยรั่วจึงถูกเดาย้อนแบบออฟไลน์ได้ ส่วนความลับในคอนฟิกฐานข้อมูลและประวัติคำสั่งไม่มีการแปลงใด ๆ ปกป้องเลย

ส่งของผ่านเซิร์ฟเวอร์ของผู้ผลิตเอง — สคริปต์อัปโหลดข้อมูลไปยังเซิร์ฟเวอร์ไลเซนส์ที่ OPSSHIELD ดูแลเองด้วยบัญชีที่ถูกเจาะ แล้วผู้โจมตีค่อยไปเก็บทีหลัง ทราฟฟิกขาออกจึงดูเหมือนการติดต่อกับผู้ผลิตตามปกติ ไม่ใช่การส่งข้อมูลไปยังเซิร์ฟเวอร์แปลกหน้า

ร่องรอยที่ตรวจได้ — รันคำสั่ง grep 'Successfully updated' /opt/cpguard/logs/install_log ถ้าพบเวอร์ชัน 5.88.12 ถึง 5.88.19 แปลว่าเซิร์ฟเวอร์ติดตั้งอัปเดตที่ได้รับผลกระทบ แต่บรรทัดนี้ไม่ได้ยืนยันว่าสคริปต์รันหรือข้อมูลออกไปแล้ว ส่วนเครื่องที่ไม่พบบรรทัดเหล่านี้ หรือล็อกหายหรือไม่ครบ ก็ยังอาจรันสคริปต์ได้ อัปเดต 5.88.25 จะลบแบ็กดอร์และโฟลเดอร์เก็บไฟล์ การไม่พบไฟล์เหล่านี้หลังอัปเดตจึงพิสูจน์อะไรไม่ได้

ผลกระทบ

กลุ่มที่โดนตรง คือ ผู้ให้บริการเว็บโฮสติ้งและผู้ดูแลเซิร์ฟเวอร์ Linux ที่ใช้ cPGuard และได้รับอัปเดตในช่วงวันที่ 2 พฤศจิกายน เซิร์ฟเวอร์เหล่านี้เสี่ยง 3 เรื่อง เรื่องแรก คือ รหัสผ่าน root และบัญชี Linux ที่อาจถูกเดาย้อนจาก hash แล้วใช้เข้าเครื่องได้แม้ลบแบ็กดอร์แล้ว เรื่องที่สอง คือ รหัสฐานข้อมูล S3 access key และ token ของ DigitalOcean ที่อาจอยู่ในคอนฟิกหรือประวัติคำสั่ง ซึ่งเปิดทางไปยังข้อมูลลูกค้าบนเว็บไซต์ที่โฮสต์และบริการคลาวด์อื่น เรื่องที่สาม คือ ไฟล์ known_hosts และ authorized_keys ที่บอกผู้โจมตีว่าเซิร์ฟเวอร์นี้เชื่อมกับเครื่องใดบ้าง ทำให้ขยายการโจมตีไปยังเครื่องอื่นได้ง่ายขึ้น

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

คำแนะนำ

  • ทำทันที: อัปเดต cPGuard ทุกเซิร์ฟเวอร์ด้วยคำสั่ง cpgcli update --start แล้วตรวจด้วย cpgcli --version ว่าได้ 5.88.25 ขึ้นไป ถ้าอัปเดตไม่สำเร็จหรือเวอร์ชันต่ำกว่านั้นให้ติดต่อ OPSSHIELD Support
  • ตรวจว่าโดนแล้วหรือยัง: ค้นล็อกอัปเดตด้วย grep 'Successfully updated' /opt/cpguard/logs/install_log และถือว่าเครื่องที่พบเวอร์ชัน 5.88.12-5.88.19 หรือที่ล็อกไม่ครบอาจถูกเจาะ
  • ถ้าโดนหรืออาจโดน: รีเซ็ตรหัสผ่าน root และบัญชี Linux ทุกบัญชีที่ใช้รหัสผ่านจากสภาพแวดล้อมกู้คืนที่เชื่อถือได้ แล้วเปลี่ยนรหัสผ่านเดียวกันที่ใช้ในระบบอื่นจากเครื่องที่เชื่อถือได้
  • ถ้าโดนหรืออาจโดน: หมุนรหัสผ่านฐานข้อมูล S3 access key, token ของ DigitalOcean และความลับใดก็ตามที่ปรากฏในประวัติคำสั่งของ root
  • ถ้าโดนหรืออาจโดน: เปลี่ยน SSH private key ที่เก็บใน /root/.ssh และลบ public key เดิมที่คู่กันออกจากทุกระบบที่เชื่อถือคีย์นั้น
  • ระยะยาว: ตรวจไฟล์ authorized_keys ของ root ว่ามีคีย์ของผู้ผลิตหรือบุคคลภายนอกที่ไม่ได้ใช้แล้วหรือไม่ และพิจารณาให้เครื่องมือที่อัปเดตตัวเองอัตโนมัติด้วยสิทธิ์ root อัปเดตผ่านช่องทางที่ทดสอบก่อนปล่อยขึ้นเครื่องจริง

Indicators of Compromise (IoCs)

ไฟล์และเส้นทางที่ OPSSHIELD เผยแพร่ (อัปเดต 5.88.25 จะลบไฟล์เหล่านี้ การไม่พบหลังอัปเดตจึงไม่ได้แปลว่าไม่เคยโดน)

ประเภทตัวบ่งชี้คำอธิบาย
ไฟล์cpguard-v58812-i91511.shสคริปต์อันตรายที่มากับอัปเดต
ไฟล์/var/tmp/.cpg91511_shshell แบ็กดอร์
โฟลเดอร์/var/tmp/.cpg91511ที่รวบรวมไฟล์ที่ถูกเก็บ
ไฟล์/var/tmp/.cpg91511/loot.tgzไฟล์บีบอัดที่สคริปต์เตรียมส่งออก
เวอร์ชันcPGuard 5.88.12 ถึง 5.88.19เวอร์ชันที่มีสคริปต์อันตราย

แหล่งอ้างอิง