แฮ็กเกอร์เจาะช่องโหว่ระดับ Critical ใน PHP2Shell คว้าเงินรางวัล Bitcoin มูลค่า 2,000 ดอลลาร์ พร้อมเผยแพร่โค้ดสาธิตการโจมตี (PoC)

นักวิจัยด้านความปลอดภัยรายหนึ่งซึ่งเป็นที่รู้จักในโลกออนไลน์ในชื่อ "killa" สามารถคว้าชัยชนะในการแข่งขันที่เปิดให้สาธารณชนเข้าร่วมเพื่อชิงรางวัลเป็น Bitcoin โดยอาศัยช่องโหว่ระดับ Critical สองรายการใน PHP ในการเจาะเข้าสู่เซิร์ฟเวอร์ทดสอบ การดำเนินการดังกล่าวใช้เวลาทั้งสิ้น 19.28 ชั่วโมง โดยเงินรางวัลที่ได้รับคือ 0.02511679 BTC ซึ่งมีมูลค่าคิดเป็น 2,021.22 ดอลลาร์สหรัฐ เมื่อวันที่ 25 ตุลาคม 2026 เวลา 15:47 น. UTC ทั้งนี้ นักวิจัยรายนี้ได้เผยแพร่ PoC ไว้บนแพลตฟอร์ม GitHub เรียบร้อยแล้ว

การแข่งขันดังกล่าวจัดขึ้นบนเว็บไซต์ stealmybitcoin.com ซึ่งเว็บไซต์ดังกล่าวใช้ PHP เวอร์ชันที่ยังไม่ได้รับการอัปเดตแพตช์ความปลอดภัย และเก็บรักษา Wallet Key ไว้เบื้องหลังการทดสอบช่องโหว่การเรียกใช้โค้ดที่เป็นอันตรายจากระยะไกล (Remote Code Execution: RCE) ซึ่งหมายความว่าเป้าหมายของผู้เข้าแข่งขันคือการส่งคำสั่งเข้าไปประมวลผลบนเซิร์ฟเวอร์เป้าหมายจากภายนอกให้สำเร็จ

ในระหว่างการทดสอบ เงินรางวัลรวมได้พุ่งขึ้นจาก 500 ดอลลาร์สหรัฐ เป็นมากกว่า 2,000 ดอลลาร์สหรัฐ จากเงินบริจาคสมทบ โดยผู้จัดกิจกรรมระบุว่า สาเหตุที่ความพยายามเจาะระบบในช่วงแรกไม่ประสบผลสำเร็จนั้น เกิดจากการที่เซิร์ฟเวอร์เปิดให้บริการไฟล์แบบ Static ผ่านโหมด Command-Line (CLI) ของ PHP ส่งผลให้คำสั่งไม่ถูกส่งผ่านไปยังส่วนที่มีช่องโหว่ แต่หลังจากที่มีการปรับเปลี่ยนหน้าเว็บไซต์ให้ประมวลผลผ่านไฟล์ PHP จริง การทดสอบเจาะระบบจึงสามารถทำได้สำเร็จ

การโจมตีผ่านช่องโหว่ PHP2Shell

ช่องโหว่ดังกล่าวถูกระบุหมายเลขเป็น CVE-2026-109618 และ CVE-2026-109619 โดยมีชื่อเรียกกลุ่มช่องโหว่นี้ว่า "PHP2Shell" ทั้งสองรายการได้รับคะแนนความรุนแรงตามมาตรฐาน CVSS v4.0 อยู่ที่ 9.2 ซึ่งจัดอยู่ในระดับ Critical โดยช่องโหว่รายการแรกสามารถสร้างความเสียหายต่อหน่วยความจำ ในระหว่างกระบวนการ cleanup ข้อมูลหลังเกิดภาวะหน่วยความจำไม่เพียงพอ ส่วนช่องโหว่รายการที่สองทำให้ข้อมูลที่ตกค้างอยู่จากการทำงานก่อนหน้าในส่วนของ shared worker ถูกนำกลับมาใช้งานซ้ำโดยการทำงานในภายหลังได้

ทางทีมพัฒนา PHP ได้ปล่อยแพตช์แก้ไขช่องโหว่ออกมาเมื่อวันที่ 21 ตุลาคม 2026 ในเวอร์ชัน 8.5.12, 8.4.27, 8.3.36 และ 8.2.35 โดยคำแนะนำด้านความปลอดภัยจาก Google ระบุว่า เวอร์ชันที่ได้รับผลกระทบครอบคลุมตั้งแต่ PHP 5.4 ไปจนถึง 8.5.11 ทั้งนี้ เนื่องจาก PHP เวอร์ชันเก่าตั้งแต่ 8.1 ลงไป สิ้นสุดระยะเวลาการสนับสนุนอย่างเป็นทางการ และไม่มีการออกแพตช์แก้ไขให้อีกต่อไป ดังนั้น เว็บไซต์ที่ยังใช้งานเวอร์ชันดังกล่าวจึงจำเป็นต้องอัปเกรดไปใช้เวอร์ชันที่ยังอยู่ในการสนับสนุนเพื่อความปลอดภัย

สคริปต์ที่เผยแพร่ออกมาสู่สาธารณะนี้อาศัยช่องโหว่ Memory Leak จำนวน 2 จุด โดยจุดแรกจะเปิดเผยตำแหน่ง address ของ Heap Memory ขณะที่จุดที่สองจะเปิดเผย address ของโค้ดโปรแกรม PHP และเมื่อได้ตำแหน่ง address ทั้งสองส่วนแล้วคำขอ (Request) สุดท้ายจะส่งโครงสร้างข้อมูลที่ถูกปลอมแปลงไปยังหน่วยความจำ ซึ่งส่งผลให้ PHP เรียกใช้งานฟังก์ชัน system ของระบบ จากนั้นตัวสคริปต์จะแสดงเครื่องหมายทดสอบแบบสุ่ม, user ID รวมถึงค่าแฮชของโปรแกรมที่เก็บ Flag ออกมา

รายงานสรุปการวิเคราะห์ดังกล่าวยังได้ระบุถึงข้อจำกัดของการทดสอบในครั้งนี้ไว้ด้วย โดยตัวสคริปต์ถูกพัฒนา และทดสอบบนสภาพแวดล้อมจำลอง ไม่ใช่ทดสอบบนเว็บไซต์จริงที่เปิดให้บริการ และมีอัตราความสำเร็จอยู่ที่ประมาณ 7 ใน 10 ครั้งของการทดสอบ นอกจากนี้ ผู้เขียนรายงานยังยอมรับว่าไม่ได้ทำการบันทึกข้อมูล request เต็มที่ส่งไปยังระบบจริงไว้ อีกทั้ง Key ที่กู้คืนออกมาได้ยังไม่ตรงกับ address ของรางวัลที่ระบุไว้ ซึ่งผู้เขียนมองว่าเป็นข้อผิดพลาดจากทางฝั่งของผู้สร้างโจทย์เอง

ปัจจุบันโค้ดสำหรับใช้เจาะระบบได้ถูกเผยแพร่ออกสู่สาธารณะแล้ว ขณะที่ความพยายามในการโจมตีของแฮ็กเกอร์นั้นเริ่มปรากฏขึ้นตั้งแต่ก่อนที่จะมีการแพตช์ความปลอดภัย โดยทาง Amazon เปิดเผยว่า ตรวจพบความพยายามโจมตีย้อนหลังไปตั้งแต่วันที่ 17 ตุลาคม ซึ่งเป็นเวลา 4 วันล่วงหน้าก่อนการปล่อยแพตช์แก้ไข ด้านบริษัทรักษาความปลอดภัยไซเบอร์ Sophos ระบุว่า สามารถ Block ความพยายามในการส่งมัลแวร์ "Potassium" ซึ่งคาดว่าเป็นหนึ่งใน Botnet ของ Mirai เอาไว้ได้ และยังไม่พบหลักฐานการเจาะระบบที่สำเร็จ

การอัปเกรดไปใช้เวอร์ชัน PHP ที่ได้รับการติดตั้งแพตช์ความปลอดภัยแล้ว ถือเป็นวิธีเดียวในการแก้ไขปัญหานี้ได้อย่างสมบูรณ์ แม้การตั้งค่า Rule บน Firewall และการปรับแต่งค่าคอนฟิกของระบบจะช่วยลดความเสี่ยงลงได้บ้าง แต่ก็ไม่สามารถปิดช่องโหว่ดังกล่าวได้อย่างสมบูรณ์ นอกจากนี้ หลังจากการอัปเกรดเสร็จสิ้น ผู้ดูแลระบบจำเป็นต้องรีสตาร์ตเซอร์วิสต่าง ๆ พร้อมทั้งตรวจสอบให้แน่ใจว่าโปรเซสทำงานหลักสลับไปทำงานบนเวอร์ชันใหม่แล้วจริง เนื่องจากชุดรันไทม์ที่ฝังมากับระบบ หรือ Containers อาจยังคงเรียกใช้งานโค้ดของเวอร์ชันเก่าอยู่

ที่มา : Cybersecuritynews