
ศูนย์ประสานการรักษาความมั่นคงปลอดภัยระบบคอมพิวเตอร์แห่งชาติ (ThaiCERT) ได้ติดตามสถานการณ์ภัยคุกคามทางไซเบอร์ พบว่าทีมวิจัยด้านความปลอดภัยจาก Kimi K3 Agents เผยแพร่การค้นพบช่องโหว่แบบ Zero-Day หลายจุดบนระบบฐานข้อมูล Redis โดยเปิดโอกาสให้ผู้ไม่หวังดีสามารถโจมตีแบบสั่งการรันโค้ดอันตรายผ่านเครือข่าย (Remote Code Execution) ซึ่งอาจนำไปสู่การถูกยึดสิทธิ์เข้าควบคุมเซิร์ฟเวอร์ได้ ส่งผลให้ข้อมูลสำคัญรั่วไหลหรือถูกโจมตีด้วยมัลแวร์เรียกค่าไถ่ (Ransomware) ได้ [1]
1. รายละเอียดช่องโหว่
1.1 ช่องโหว่กลุ่ม Streams Shared-NACK เกิดจากการจัดการพื้นที่หน่วยความจำผิดพลาดในลักษณะการใช้งานข้อมูลที่ถูกคืนค่าไปแล้ว (Use-After-Free) เมื่อผู้ใช้งาน (Consumers) สองรายชี้ไปยังบันทึกข้อมูลเดียวกัน และถูกลบออกพร้อมกัน ระบบจะเกิดการคืนพื้นที่หน่วยความจำซ้ำซ้อน (Double-Free) ผู้โจมตีสามารถใช้คำสั่ง RESTORE ร่วมกับคำสั่ง EVAL (สั่งรันสคริปต์ภาษา Lua) และ XGROUP (จัดการกลุ่มสตรีม) เพื่อเข้าไปแก้ไขตัวชี้ตำแหน่ง (Pointer) และเข้าควบคุมทิศทางการทำงานของโครงสร้างฟังก์ชันในฐานข้อมูล
1.2 ช่องโหว่กลุ่ม RedisBloom TDigest เป็นปัญหาการเขียนข้อมูลเกินขอบเขตที่ระบบจัดสรรไว้ (Out-of-Bounds Write) ในกระบวนการจองหน่วยความจำของโมดูล TDigest โดยระบบยินยอมรับค่าขนาดความจุที่ส่งมาจากภายนอก ทำให้ผู้โจมตีสามารถสร้างสภาวะการอ่านและเขียนข้อมูลขั้นพื้นฐาน (Read/Write Primitives) เพื่อเจาะทะลุระบบป้องกันของระบบปฏิบัติการ เช่น การสุ่มตำแหน่งหน่วยความจำ (Address Space Layout Randomization หรือ ASLR) และส่งคำสั่งเรียกใช้งานระบบ (System Command) ได้ในที่สุด
2. ลักษณะการโจมตี
2.1 การโจมตีทั้งสองรูปแบบจำเป็นต้องใช้คำสั่ง RESTORE ซึ่งเป็นคำสั่งที่ใช้สร้าง Key ขึ้นมาใหม่จากการนำเข้าข้อมูลเซรียลไลซ์ (Serialized Payload/RDB) ที่ผู้โจมตีสร้างขึ้นมาเป็นพิเศษ
2.2 กรณี Streams ผู้โจมตีใช้คำสั่ง RESTORE ร่วมกับคำสั่ง EVAL (สั่งรัน Lua script) และ XGROUP (จัดการ Stream Group) เพื่อกระตุ้นให้เกิดสภาวะ Double-Free จากนั้นจะเข้าไปแก้ไข Pointer ในหน่วยความจำ และเขียนทับโครงสร้าง Hash Function ของฐานข้อมูลเพื่อควบคุมทิศทางการทำงาน
2.3 กรณี RedisBloom ผู้โจมตีใช้คำสั่ง RESTORE ร่วมกับคำสั่ง EVAL และโมดูล RedisBloom ส่งข้อมูลที่ปลอมแปลงค่าความจุ เพื่อสร้างสภาวะ Read/Write Primitives ซึ่งเปิดทางให้สามารถแอบอ่านตำแหน่งหน่วยความจำของ Redis และไลบรารีระบบ (libc) เพื่อหลบหลีกระบบป้องกันของระบบปฏิบัติการ (เช่น ASLR) ได้
2.4 เมื่อเข้าควบคุมทิศทางหน่วยความจำได้สำเร็จ ผู้โจมตีจะส่งคำสั่ง GET ที่เตรียมไว้เป็นพิเศษ เพื่อกระตุ้นให้โปรเซสเรียกใช้ฟังค์ชัน system() บนระบบปฏิบัติการทันที
3. ผลกระทบ
3.1 เกิดการยึดครองสิทธิ์ ทำให้ผู้โจมตีสามารถสั่งรันคำสั่งใด ๆ บนระบบปฏิบัติการ (Arbitrary System Commands) ได้ด้วยสิทธิ์เดียวกับโปรเซสของ Redis Server
3.2 สร้างความเสียหายต่อธุรกิจ เพราะอาจเกิดการรั่วไหลของข้อมูลความลับและข้อมูลของลูกค้า เกิดการสูญหายหรือถูกลบฐานข้อมูล รวมถึงการใช้เครื่องเซิร์ฟเวอร์เป็นฐานในการโจมตีขยายผลไปยังระบบอื่นภายในเครือข่าย หรือการถูกติดตั้งมัลแวร์เรียกค่าไถ่ (Ransomware)
3.3 ระดับความเสี่ยง แม้ปัจจุบันยังไม่พบรายงานการนำโค้ดโจมตี (Exploit) นี้ไปใช้ในการโจมตีจริง (No In-The-Wild Exploitation) แต่เนื่องจากมีโค้ดทดสอบการเจาะระบบ (PoC) เผยแพร่สู่สาธารณะแล้ว จึงมีความเสี่ยงสูงมากที่จะถูกนำมาใช้โจมตีในอนาคต
4. ผลิตภัณฑ์ที่ได้รับผลกระทบ [2]
4.1 Redis 6.2.22
4.2 Redis 7.4.9
4.3 Redis 8.6.4
4.4 Redis 8.8.0
5. ข้อเสนอแนะและแนวทางการแก้ไข
5.1 ดำเนินการอัปเกรดซอฟต์แวร์ Redis ให้เป็นเวอร์ชันล่าสุดที่มีการแพตช์แก้ไขช่องโหว่เรียบร้อยแล้วโดยเร็วที่สุด
5.2 หากยังไม่สามารถระงับการทำงานเพื่ออัปเกรดระบบได้ ให้เพิกถอนสิทธิ์การเรียกใช้คำสั่ง RESTORE จากบัญชีผู้ใช้งานที่ไม่มีความจำเป็น และตั้งค่า Firewall เพื่อจำกัดการเข้าถึงพอร์ตของ Redis โดยให้เชื่อมต่อได้เฉพาะจาก IP Address ภายในเครือข่ายที่เชื่อถือได้เท่านั้น
แหล่งอ้างอิง
1. https://dg.th/w1mzrf7pbv
2. https://dg.th/go2ruhe1xa
