สรุปสั้น

นักวิจัยด้านความปลอดภัยเปิดเผยแคมเปญขนาดใหญ่ที่เปลี่ยน GitHub repository ที่ถูกเจาะให้กลายเป็นโครงสร้างพื้นฐานโจมตีแบบกระจาย เพื่อเล่นงานเซิร์ฟเวอร์ cPanel และ WebHost Manager (WHM) กิจกรรมนี้เกี่ยวข้องกับเวอร์ชันพัฒนา (development version) ที่เป็นอันตรายของแพ็กเกจ PHP บน Packagist จำนวน 10 ตัว ซึ่งเป็นของนักพัฒนา PHP และ DevOps ที่ถูกต้องตามกฎหมายรายหนึ่งชื่อ dinushchathurya โดยแพ็กเกจถูกดัดแปลงในช่วงวันที่ 12-13 กรกฎาคม 2569 บริษัท Socket ผู้เปิดโปงระบุว่า “ไลบรารี PHP ไม่ใช่เส้นทางการรันโค้ด” แต่ผู้โจมตีได้เพิ่ม GitHub Actions workflow ที่เป็นอันตรายจำนวนมากเข้าไปในซอร์สโค้ด repository ของนักพัฒนาที่ถูกเจาะต่างหาก

เมื่อ workflow ถูกกระตุ้นด้วยการ push โค้ดเข้า repository หรือการสั่งรันด้วยมือ มันจะเรียกใช้ GitHub-hosted runner ดาวน์โหลดเพย์โหลด Linux จากโครงสร้างพื้นฐานของผู้โจมตี แล้วสแกนหาเซิร์ฟเวอร์ cPanel และ WHM ที่มีช่องโหว่ CVE-2026-41940 ซึ่งเป็นช่องโหว่ข้ามการยืนยันตัวตน (authentication bypass) ที่เปิดทางให้ผู้โจมตีจากระยะไกลยกระดับการควบคุมแผงควบคุมได้ ตัวเพย์โหลดจะพยายามข้ามการยืนยันตัวตน จากนั้นกวาดเก็บข้อมูลประจำตัว ไฟล์กำหนดค่า ตัวแปรสภาพแวดล้อม การเข้าถึงฐานข้อมูล ข้อมูล SSH โทเคน Git กุญแจคลาวด์ ข้อมูลบริการชำระเงิน และความลับอื่นๆ ที่มีค่า

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

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 23 กรกฎาคม 2569 ว่าแคมเปญนี้อาศัยการ synchronize อัตโนมัติของ Packagist ระหว่างวันที่ 12-13 กรกฎาคม 2569 ที่ดึงเวอร์ชันพัฒนาอันตรายของแพ็กเกจทั้ง 10 ตัวเข้าสู่ระบบ ตามการเปลี่ยนแปลงที่ผู้โจมตี push เข้าไปยัง repository ของนักพัฒนาบน GitHub นาย Kirill Boychenko นักวิจัยของบริษัท Socket อธิบายว่าเวอร์ชันพัฒนาที่ถูกดัดแปลงแต่ละตัวมีไฟล์ GitHub Actions workflow อันตรายอยู่ระหว่าง 55 ถึง 62 ไฟล์ รวมทั้งสิ้น 583 ไฟล์ในทั้ง 10 แพ็กเกจ

ไฟล์ automation แบบ YAML เหล่านี้จะเรียก GitHub-hosted runner ขึ้นมาทำงานเมื่อ repository ที่ถูกเจาะได้รับการ push หรือถูกสั่งรันด้วยมือ จากนั้นตรวจสอบสถาปัตยกรรมของหน่วยประมวลผลในแต่ละ runner (เช่น x86 32 บิต, x86 64 บิต, ARM 32 บิต และ ARM 64 บิต) แล้วดาวน์โหลดเพย์โหลดสำหรับสแกนและเจาะระบบบน Linux ที่เข้ากันได้ จากเซิร์ฟเวอร์ควบคุม (C2) ที่หมายเลข 43.228.157[.]68 นาย Boychenko เสริมว่า workflow เหล่านี้จะรายงานสถานะการทำงานกลับไปยังผู้โจมตีอย่างต่อเนื่อง และอัปโหลดผลลัพธ์ที่เก็บได้ใหม่ผ่านคำขอ HTTP POST โดยไฟล์ผลลัพธ์ที่มันเฝ้าดูรวมถึงข้อมูลประจำตัว AWS, โทเคน GitHub และ GitLab, ข้อมูลประจำตัว OpenAI และ Google API, กุญแจ Stripe, ข้อมูล SendGrid และ Mailgun, ข้อมูลฐานข้อมูล, ข้อมูล SSH, Git remote และผลลัพธ์จากการรันโค้ดจากระยะไกล

จุดที่ทำให้แคมเปญนี้แตกต่างจากการโจมตีผ่านแพ็กเกจอันตรายทั่วไปคือ มันไม่ได้พึ่งพาเครื่องของผู้ใช้แพ็กเกจ แต่การสแกนและการเจาะระบบจะรันอยู่บน GitHub-hosted runner ที่ถูกเรียกจาก repository ที่ถูกเจาะ หมายความว่า GitHub Actions ถูกนำมาใช้ขับเคลื่อนแคมเปญเจาะระบบเพื่อล่าเซิร์ฟเวอร์ cPanel และ WHM ที่มีช่องโหว่โดยตรง สัญญาณต่างๆ ชี้ว่าแคมเปญนี้กว้างกว่านักพัฒนา PHP เพียงรายเดียว โดยพบไฟล์ workflow ราว 6,100 ไฟล์บน GitHub ที่มีตัวระบุ DNSHook เฉพาะตัวเดียวกัน (“f5b0b742-240a-4811-8a5b-b0ba6060685d”) บริษัท Socket อธิบายแคมเปญนี้ว่าเป็น “ปฏิบัติการขโมยข้อมูลประจำตัวฝั่งเซิร์ฟเวอร์แบบฉวยโอกาส” ที่เปิดทางให้ผู้โจมตีนำข้อมูลที่ขโมยไปใช้เจาะระบบต่อเนื่องหรือหาช่องทางทำเงิน การเปิดเผยนี้เกิดขึ้นพร้อมกับที่ Socket เผยอีกแคมเปญชื่อ Operation Muck and Load ที่ใช้เครือข่าย repository บน GitHub กว่า 200 แห่งใน 190 บัญชี เพื่อส่งมัลแวร์บน Windows ทั้ง infostealer, loader, dropper, สปายแวร์, remote access trojan และตัวขุดเหรียญ Monero

รายละเอียดช่องโหว่

CVE-2026-41940 เป็นช่องโหว่ข้ามการยืนยันตัวตน (authentication bypass) ในแผงควบคุม cPanel และ WHM ที่เปิดทางให้ผู้โจมตีจากระยะไกลได้สิทธิ์ควบคุมแผงควบคุมในระดับสูง ช่องโหว่นี้เคยตกเป็นเป้าการโจมตีมาก่อนหน้านี้แล้ว (ดูข่าวโพสต์ 011 กรณีแฮ็กเกอร์ Mr_Rot13 ฝัง backdoor ขโมยข้อมูลประจำตัวเว็บโฮสติงทั่วโลก) แต่สิ่งที่ใหม่ในแคมเปญนี้คือกลไกการโจมตี ผู้โจมตีไม่ได้สแกนจากเซิร์ฟเวอร์ของตัวเอง แต่ยืมพลังประมวลผลของ GitHub-hosted runner ที่เป็นโครงสร้างพื้นฐานฟรีและน่าเชื่อถือ มาเป็นเครื่องยิงสแกนและเจาะระบบ ทำให้ปิดกั้นด้วย IP เดียวได้ยาก และซ่อนต้นตอของการโจมตีไว้เบื้องหลังทราฟฟิกที่ออกจากช่วง IP ของ GitHub ส่วนวิธีที่ผู้โจมตีเข้าถึงบัญชีของนักพัฒนาและ push โค้ดอันตรายเข้าไปยัง repository นั้นยังไม่เป็นที่ชัดเจน

ผลกระทบต่อไทย

ผู้ให้บริการเว็บโฮสติงและธุรกิจจำนวนมากในไทยใช้ cPanel/WHM เป็นแผงควบคุมหลักในการบริหารเซิร์ฟเวอร์และเว็บไซต์ลูกค้า การที่ CVE-2026-41940 ถูกนำมาสแกนและเจาะแบบอัตโนมัติในวงกว้างผ่าน GitHub Actions ทำให้เซิร์ฟเวอร์ที่ยังไม่แพตช์เสี่ยงถูกกวาดข้อมูลประจำตัวและกุญแจลับจำนวนมาก ซึ่งอาจลุกลามไปสู่การเจาะบัญชีคลาวด์ ฐานข้อมูล และบริการชำระเงินที่เชื่อมโยงกัน นอกจากนี้ทีมพัฒนาในไทยที่ใช้ GitHub Actions ก็ควรตระหนักว่า workflow และ runner ของตนอาจถูกฉวยไปเป็นฐานโจมตีหากบัญชีหรือ repository ถูกยึด การป้องกันจึงต้องครอบคลุมทั้งฝั่งเซิร์ฟเวอร์ที่มีช่องโหว่และฝั่งความปลอดภัยของบัญชี GitHub และห่วงโซ่อุปทาน (Supply Chain) ของแพ็กเกจ

คำแนะนำ

ผู้ดูแลเซิร์ฟเวอร์ cPanel และ WHM ควรอัปเดตแพตช์แก้ CVE-2026-41940 โดยด่วนหากยังไม่ได้ทำ และตรวจสอบร่องรอยการถูกเจาะ พร้อมหมุนเปลี่ยน (rotate) ข้อมูลประจำตัว กุญแจ SSH โทเคน API และกุญแจคลาวด์ทั้งหมดที่อาจรั่วไหล ควรบล็อกการติดต่อกับ C2 ที่ 43.228.157[.]68 (defang แล้ว) สำหรับนักพัฒนาและองค์กรที่ใช้ GitHub ควรเปิด MFA บนบัญชี ตรวจสอบ workflow ที่ผิดปกติใน repository จำกัดสิทธิ์ของ GITHUB_TOKEN และ runner ให้น้อยที่สุด และเฝ้าระวังไฟล์ workflow ที่มีตัวระบุ DNSHook “f5b0b742-240a-4811-8a5b-b0ba6060685d” ผู้ที่ใช้แพ็กเกจของ dinushchathurya ควรตรวจสอบว่าไม่ได้ดึงเวอร์ชันพัฒนาที่ถูกดัดแปลงในช่วง 12-13 กรกฎาคม 2569 มาใช้ และควร pin เวอร์ชันแพ็กเกจที่ตรวจสอบแล้วเสมอ

Indicators of Compromise (IoCs)

ประเภทIndicatorรายละเอียด
C2 Server43.228.157[.]68เซิร์ฟเวอร์ควบคุมที่โฮสต์เพย์โหลด Linux (defang แล้ว)
Identifierf5b0b742-240a-4811-8a5b-b0ba6060685dตัวระบุ DNSHook ที่พบในไฟล์ workflow กว่า 6,100 ไฟล์
Packagist Packagedinushchathurya/nationality-listแพ็กเกจ PHP ที่ถูกดัดแปลง (dev version 12-13 ก.ค. 69)
Packagist Packagedinushchathurya/srilankan-divisional-secretariatsแพ็กเกจ PHP ที่ถูกดัดแปลง
Packagist Packagedinushchathurya/srilankan-gn-divisionsแพ็กเกจ PHP ที่ถูกดัดแปลง
Packagist Packagedinushchathurya/srilankan-local-authoritiesแพ็กเกจ PHP ที่ถูกดัดแปลง
Packagist Packagedinushchathurya/srilankan-mobile-number-validatorแพ็กเกจ PHP ที่ถูกดัดแปลง
Packagist Packagedinushchathurya/srilankan-state-hospitalsแพ็กเกจ PHP ที่ถูกดัดแปลง
Packagist Packagedinushchathurya/srilankan-universitiesแพ็กเกจ PHP ที่ถูกดัดแปลง
Packagist Packagedinushchathurya/uk-mobile-number-validatorแพ็กเกจ PHP ที่ถูกดัดแปลง
Packagist Packagedinushchathurya/uk-post-codeแพ็กเกจ PHP ที่ถูกดัดแปลง
Packagist Packagedinushchathurya/websmslkแพ็กเกจ PHP ที่ถูกดัดแปลง

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