พบช่องโหว่ใน PostgreSQL ที่ถูกใช้งานร่วมกับช่องโหว่ Zero-Day ของ BeyondTrust ในการโจมตีแบบกำหนดเป้าหมาย

นักวิจัยจาก Rapid7 ค้นพบช่องโหว่ SQL injection ที่มีระดับความรุนแรงสูง (CVE-2025-1094) ในเครื่องมือ psql ของ PostgreSQL โดยพบช่องโหว่นี้ระหว่างการตรวจสอบการโจมตีด้วยการเรียกใช้โค้ดที่เป็นอันตรายจากระยะไกลของช่องโหว่ CVE-2024-12356

โดย BeyondTrust ได้แก้ไขช่องโหว่ CVE-2024-12356 ในเดือนธันวาคม 2024 ซึ่งช่วยให้สามารถปิดช่องโหว่ทั้งสองรายการ อย่างไรก็ตาม CVE-2025-1094 ยังคงเป็นช่องโหว่ Zero-Day จนกระทั่ง Rapid7 รายงานให้กับ PostgreSQL ทราบ

การสอบสวนการโจมตีทางไซเบอร์ของ BeyondTrust ทำให้พบช่องโหว่ Zero-Day (CVE-2024-12356 และ CVE-2024-12686) โดยผู้ไม่หวังดีได้ใช้ประโยชน์จากช่องโหว่เหล่านี้เพื่อยึดการควบคุมระบบ Remote Support SaaS รวมถึงระบบของกระทรวงการคลังสหรัฐฯ

คำแนะนำที่เผยแพร่โดย Rapid7 ระบุว่า "Rapid7 พบว่าในการทดสอบทั้งหมด การโจมตีช่องโหว่ CVE-2024-12356 ให้สำเร็จจะต้องใช้ร่วมกับช่องโหว่ CVE-2025-1094 เพื่อให้สามารถเรียกใช้โค้ดที่เป็นอันตรายจากระยะไกลได้ แม้ว่า CVE-2024-12356 จะถูกแพตช์โดย BeyondTrust ในเดือนธันวาคม 2024 และการแพตช์นี้สามารถบล็อกการโจมตีจากทั้ง CVE-2024-12356 และ CVE-2025-1094 ได้ แต่การแพตช์นี้ไม่ได้แก้ไขสาเหตุที่แท้จริงของ CVE-2025-1094 ซึ่งยังคงเป็นช่องโหว่ Zero-Day จนกระทั่ง Rapid7 ค้นพบ และรายงานให้ PostgreSQL ทราบ"

ช่องโหว่ CVE-2025-1094 (คะแนน CVSS: 8.1) เป็นช่องโหว่การโจมตีแบบ SQL injection ใน PostgreSQL ที่เกิดจากการทำงานของ Quoting Syntax ไม่ถูกต้องในฟังก์ชัน libpq (PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), และ PQescapeStringConn()) ช่องโหว่นี้เกิดขึ้นเมื่อแอปพลิเคชันใช้ผลลัพธ์จากฟังก์ชันเหล่านี้ในการสร้างคำสั่ง SQL สำหรับ psql ซึ่งเป็นเทอร์มินัลโต้ตอบของ PostgreSQL

ช่องโหว่นี้ส่งผลกระทบกับ PostgreSQL ก่อนเวอร์ชัน 17.3, 16.7, 15.11, 14.16, และ 13.19 ซึ่งอาจทำให้ผู้ไม่หวังดีสามารถแทรกคำสั่ง SQL ที่เป็นอันตรายในการใช้งานบนระบบที่มีช่องโหว่ได้

CVE-2025-1094 ใช้ประโยชน์จากวิธีที่ PostgreSQL จัดการกับอักขระ UTF-8 ที่ไม่ถูกต้อง ซึ่งทำให้เกิดการโจมตีแบบ SQL injection ใน psql ได้ โดยผู้ไม่หวังดีสามารถใช้คำสั่ง meta-commands ของ psql โดยเฉพาะคำสั่งเครื่องหมายอัศเจรีย์ '!' ซึ่งใช้ในการเรียกคำสั่ง shell ของระบบปฏิบัติการ และอาจนำไปสู่การควบคุมระบบทั้งหมดได้

"เนื่องจากวิธีที่ PostgreSQL จัดการ Escape อักขระที่ไม่ถูกต้องใน UTF-8 เมื่อรวมกับวิธีการประมวลผลลำดับไบต์ที่ไม่ถูกต้องภายในอักขระ UTF-8 ที่ถูกประมวลผลโดย psql ทำให้ผู้ไม่หวังดีสามารถใช้ประโยชน์จากช่องโหว่ CVE-2025-1094 เพื่อสร้างการโจมตีแบบ SQL injection ได้" รายงานระบุเพิ่มเติมว่า "ผู้ไม่หวังดีที่สามารถสร้างการโจมตีแบบ SQL injection ผ่านช่องโหว่ CVE-2025-1094 ได้ จะสามารถเรียกใช้โค้ดตามที่ต้องการได้ โดยการใช้ความสามารถของเครื่องมือ interactive ในการเรียกใช้ meta-commands ซึ่งช่วยเพิ่มฟังก์ชันการทำงานของเครื่องมือ interactive โดยจะดำเนินการเพิ่มเติมหลายอย่างที่เครื่องมือ interactive สามารถทำได้ คำสั่ง meta-command ที่ระบุด้วยเครื่องหมายอัศเจรีย์ ‘!’ จะช่วยให้สามารถเรียกใช้คำสั่ง shell ของระบบปฏิบัติการได้ ผู้ไม่หวังดีสามารถใช้ช่องโหว่ CVE-2025-1094 เพื่อทำการเรียกคำสั่ง meta-command นี้ และควบคุมคำสั่ง shell ของระบบปฏิบัติการได้

PostgreSQL แก้ไขช่องโหว่ดังกล่าว โดยการปล่อยอัปเดตเวอร์ชันดังนี้

  • PostgreSQL 17.3
  • PostgreSQL 16.7
  • PostgreSQL 15.11
  • PostgreSQL 14.16
  • PostgreSQL 13.19

Stephen Fewer นักวิจัยด้านความปลอดภัยของ Rapid7 ได้รับเครดิตจากการค้นพบช่องโหว่นี้

ที่มา : securityaffairs