
พบช่องโหว่ระดับ Critical ใน PHP ที่อาจทำให้ผู้โจมตีสามารถโจมตีแบบ SQL Injection และ Denial of Service (DoS) ได้
ช่องโหว่สองรายการนี้หมายเลข CVE-2025-1735 และ CVE-2025-6491 โดยส่งผลกระทบต่อ PHP หลายในเวอร์ชัน และจำเป็นต้องได้รับการอัปเดตแพตช์โดยทันที
ช่องโหว่เหล่านี้ส่งผลกระทบต่อ PHP เวอร์ชันก่อนหน้า 8.1.33, 8.2.29, 8.3.23 และ 8.4.10 โดยปัจจุบันมีการออกแพตช์อัปเดตสำหรับเวอร์ชันที่ได้รับผลกระทบทั้งหมดแล้ว
ช่องโหว่ PostgreSQL Extension
ช่องโหว่แรก CVE-2025-1735 ส่งผลกระทบต่อ PostgreSQL extension ของ PHP โดยมีสาเหตุมาจากการตรวจสอบ error ที่ไม่เพียงพอระหว่างกระบวนการ string escaping
ช่องโหว่นี้เกิดขึ้นเมื่อ PHP ใช้งานฟังก์ชัน escape โดยไม่มีการจัดการ error parameter อย่างเหมาะสม โดยเฉพาะอย่างยิ่งคือการไม่ได้ส่ง error parameter ไปยังฟังก์ชัน PQescapeStringConn()
การขาดการตรวจสอบ error ดังกล่าวอาจส่งผลให้เกิดช่องโหว่ SQL Injection และทำให้แอปพลิเคชันขัดข้องได้ (crashes) เนื่องจากเกิดการอ้างอิงถึง pointer ที่เป็นค่าว่าง (null pointer dereference)
ช่องโหว่นี้มีความเกี่ยวข้องโดยตรงกับช่องโหว่ CVE-2025-1094 ของ PostgreSQL ซึ่งเป็นช่องโหว่ที่ถูกรายงานไปยังโครงการ PostgreSQL ตั้งแต่แรก
นักวิจัยด้านความปลอดภัยพบว่า การทำงานของ PHP ไม่สามารถรายงาน error ได้อย่างเหมาะสมในระหว่างกระบวนการ escape ซึ่งอาจทำให้แอปพลิเคชันยังคงมีความเสี่ยง แม้ว่า PostgreSQL จะพยายามแจ้ง error จากเซิร์ฟเวอร์ (server-side errors) เมื่อเจอการเข้ารหัส string ที่ไม่ถูกต้องแล้วก็ตาม
นอกจากนี้ยังพบว่า การเรียกใช้ฟังก์ชัน PQescapeIdentifier() ซ้ำ ๆ ไม่ได้ทำการตรวจสอบค่าที่ถูกส่งกลับมาว่าเป็น NULL หรือไม่ ซึ่งค่า NULL นี้ถือเป็นวิธีการรายงาน error ตามที่มีการระบุไว้ในเอกสาร
การมองข้ามจุดนี้อาจนำไปสู่พฤติกรรมที่ไม่สามารถคาดเดาได้ (Undefined Behavior) หรือทำให้แอปพลิเคชันเกิดการขัดข้อง (crashes) ในการทำงานต่าง ๆ ของโค้ดได้
ช่องโหว่ SOAP Extension
ช่องโหว่ที่สอง CVE-2025-6491 ส่งผลกระทบต่อ SOAP extension ของ PHP และอาจทำให้เกิด segmentation faults ซึ่งนำไปสู่การโจมตีแบบ Denial of Service ได้
ช่องโหว่ดังกล่าวเกิดขึ้นเมื่อมีการสร้าง SoapVar instance ที่มีชื่อแบบ fully qualified name ยาวเกิน 2GB ทำให้เกิด null pointer dereference ซึ่งจะส่งผลให้แอปพลิเคชันหยุดทำงานทันที
สาเหตุของช่องโหว่ดังกล่าวเกิดจากข้อจำกัดของไลบรารี libxml2 ในเวอร์ชันก่อนหน้า 2.13 ซึ่งไม่สามารถจัดการกับการเรียกใช้ฟังก์ชัน xmlNodeSetName() ที่มีชื่อยาวเกิน 2GB ได้อย่างถูกต้อง
ปัญหานี้ทำให้ XML node objects ตกอยู่ในสถานะที่ไม่ถูกต้องโดยมีชื่อเป็นค่า NULL และจะส่งผลให้แอปพลิเคชันขัดข้อง (crashes) ในระหว่างกระบวนการแปลงข้อมูลเป็นรูปแบบ message serialization
ช่องทางการโจมตีนี้เกี่ยวข้องกับการสร้าง SoapVar object ที่เป็นอันตราย โดยใช้ namespace prefix ที่มีขนาดใหญ่เกินไป ตามที่แสดงให้เห็นใน proof-of-concept ว่าสามารถทำให้เกิด segmentation fault ผ่านการทำงานของฟังก์ชัน xmlBuildQName() ได้
ช่องโหว่ดังกล่าวมีคะแนน CVSS อยู่ที่ 5.9 คะแนน มีความรุนแรงระดับปานกลาง แต่ก็มีโอกาสที่จะทำให้บริการสามารถหยุดชะงักได้

Ahmed Leksa จาก Qatar Computing Research Institute เป็นผู้ค้นพบช่องโหว่ดังกล่าว ซึ่งส่งผลกระทบต่อ PHP ทุกระบบที่เปิดใช้งาน SOAP extension
ขอแนะนำให้ผู้ดูแลระบบอัปเดตเป็นเวอร์ชันที่มีการแก้ไขแล้วโดยทันที ได้แก่ 8.1.33, 8.2.29, 8.3.23 หรือ 8.4.10 โดยการอัปเดตเหล่านี้จะช่วยแก้ไขช่องโหว่ทั้งสองรายการ และยังทำให้ระบบการจัดการ error ใน extensions ต่าง ๆ กลับมาทำงานได้อย่างถูกต้องอีกครั้ง
ที่มา : cybersecuritynews

You must be logged in to post a comment.