ตัวแก้ไขธีม



Security advisory: Critical remote code execution vulnerabilities, update now

คําเตือน ข่าว Security advisory: Critical remote code execution vulnerabilities, update now

thxf.org thxf.org is verified member.

Administrator
สมาชิกทีมงาน
Admin
เจ้าของกระทู้
  • ปักหมุดในสถิติ
  • #1

PHP 8.5.12, 8.4.27, 8.3.36 และ 8.2.35 ได้แก้ไขช่องโหว่ระดับวิกฤตสองรายการที่อาจอนุญาตให้มีการรันโค้ดจากระยะไกลโดยไม่ต้องผ่านการตรวจสอบสิทธิ์ (unauthenticated remote code execution) ขอแนะนำให้ผู้ใช้ PHP ทุกท่านอัปเดตทันที

ใครที่มีความเสี่ยง:
การติดตั้ง PHP ทั้งหมดที่ให้บริการคำขอผ่านเว็บ รวมถึง PHP-FPM, Apache ที่มี mod_php, php-cgi, FrankenPHP และ LiteSpeed เราถือว่าความเสี่ยงสูงสุดอยู่ที่ mod_php โดยมีการสาธิตการโจมตีที่คำขอซึ่งไม่มีการตรวจสอบสิทธิ์สามารถกระตุ้นการโจมตีได้ก่อนที่โค้ดของแอปพลิเคชันจะทำงาน

ช่องโหว่ต่างๆ:

  • RCE ผ่านความเสียหายของ OOM, CVE-2026-109618 (GHSA-w8hw-w9fx-j79w): การจัดการหน่วยความจำไม่เพียงพอ (out-of-memory) สามารถขัดจังหวะ PHP ในขณะที่ข้อมูลคำขอภายในถูกกำหนดค่าเพียงบางส่วนเท่านั้น จากนั้นการล้างข้อมูลคำขอ (Request cleanup) อาจถือว่าข้อมูลที่ไม่ถูกต้องนั้นเป็นข้อมูลที่ถูกต้อง
  • RCE ผ่านสถานะโกลบอลที่ล้าสมัย, CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp): สถานะภายในที่เป็นของคำขอสามารถคงอยู่ได้หลังจากหน่วยความจำที่รองรับถูกคืนไปแล้ว (freed) คำขอในภายหลังที่ถูกจัดการโดยเวิร์กเกอร์ (worker) เดียวกันอาจใช้สถานะที่ล้าสมัยนั้นก่อนที่การเริ่มต้นระบบตามปกติจะรีเซ็ตมัน
วิธีอัปเดต:

  • อัปเดตเป็น PHP 8.5.12, 8.4.27, 8.3.36 หรือ 8.2.35 ดาวน์โหลดซอร์สโค้ดได้ที่ downloads page สำหรับซอร์สโค้ดและไฟล์ไบนารีของ Windows อยู่ที่ on the same page
  • การแจกจ่าย Linux (Linux distributions) และผู้จำหน่าย LTS ได้รับแพตช์ล่วงหน้าแล้ว ดังนั้นโปรดตรวจสอบแพ็คเกจที่อัปเดตจากผู้จำหน่ายของคุณ
  • PHP 8.1 และรุ่นเก่ากว่า จะไม่ได้รับการอัปเดตจากโปรเจกต์ PHP อีกต่อไป การแจกจ่ายบางรุ่นและผู้จำหน่าย LTS อาจมีการจัดทำแพตช์ย้อนหลัง (backported fixes) ให้ ดังนั้นโปรดติดต่อผู้จำหน่ายของคุณเพื่อขอรายละเอียด หรืออัปเกรดเป็นเวอร์ชันที่ยังได้รับการสนับสนุน
  • หากคุณพึ่งพา rpms.remirepo.net ที่ดูแลโดยอาสาสมัคร เราขอแนะนำให้คุณเปลี่ยนไปใช้แพ็คเกจจากการแจกจ่ายหลักหรือสร้างจากซอร์สโค้ด เพื่อให้คุณสามารถใช้การอัปเดตได้ทันที โดยในวันนี้ที่เก็บข้อมูล (repo) ดังกล่าวจะยังไม่มีการอัปเดต
  • เนื่องจากความรุนแรงของช่องโหว่เหล่านี้ ทีมรักษาความปลอดภัยของ PHP จึงได้จัดเตรียมการพอร์ตโค้ดย้อนหลัง (source-backports) ขั้นต่ำสำหรับ PHP 7.4, PHP 8.0, และ PHP 8.1 เพื่อช่วยเหลือผู้ที่สร้างจากซอร์สโค้ดหรือผู้ที่ไม่สามารถเข้าถึงผู้จำหน่าย LTS ได้
หากคุณไม่สามารถอัปเดตได้ทันที: แม้ว่าการอัปเดตจะเป็นทางแก้เดียวที่สมบูรณ์ แต่มาตรการต่อไปนี้จะช่วยลดความเสี่ยงต่อเส้นทางการโจมตีเฉพาะบางอย่างได้ แต่ไม่ได้ทำให้การติดตั้งปลอดภัยอย่างสมบูรณ์

RCE ผ่านความเสียหายของ OOM (CVE-2026-109618):

  • ตั้งค่า memory_limit=-1 โดยควรทำในลักษณะที่แอปพลิเคชันไม่สามารถเขียนทับได้ เช่น การใช้ php_admin_value ใน FPM pool หรือการตั้งค่า Apache และตรวจสอบว่าไม่มีการตั้งค่า pool, ไดเรกทอรี หรือแอปพลิเคชันใดๆ ที่กำหนดขีดจำกัดกลับมาอีก วิธีนี้จะช่วยขจัดความล้มเหลวของขีดจำกัดหน่วยความจำ PHP ที่ควบคุมได้ แต่ความล้มเหลวในการจัดสรรหน่วยความจำพื้นฐานก็ยังอาจเข้าสู่เส้นทางที่มีช่องโหว่ได้
  • ตั้งค่า post_max_size ให้ต่ำ สำหรับแอปพลิเคชันที่ไม่จำเป็นต้องอัปโหลดไฟล์ ให้ตั้งค่า post_max_size = 8M หากจำเป็นต้องอัปโหลดไฟล์ ให้ตั้งค่า post_max_size = 32M และกำหนดให้ upload_max_filesize ต่ำกว่า post_max_size พิจารณาการบังคับใช้ขีดจำกัดที่ระดับเว็บเซิร์ฟเวอร์หรือพร็อกซีสำหรับขนาดคำขอที่ถอดรหัสแล้ว, จำนวนฟิลด์อินพุต, จำนวนส่วนของ multipart, จำนวนส่วนหัว (header count) และระดับความลึกในการซ้อนกัน (nesting depth) ขีดจำกัดเหล่านี้ต้องครอบคลุมถึงคำขอที่ไม่มี Content-Length ที่ใช้งานได้ด้วย
  • ใช้ขีดจำกัดคอนเทนเนอร์หรือ cgroup เป็นขอบเขตความพร้อมใช้งาน โดยควรใช้นโยบายที่ระงับ (kill) เฉพาะเวิร์กเกอร์ที่ได้รับผลกระทบ ห้ามใช้ RLIMIT_AS หรือ RLIMIT_DATA ทดแทน เนื่องจากสิ่งเหล่านี้อาจทำให้เกิดความล้มเหลวในการจัดสรรหน่วยความจำที่มีช่องโหว่ได้
RCE ผ่านสถานะโกลบอลที่ล้าสมัย (CVE-2026-109619):

  • ตั้งค่า session.upload_progress.enabled=0 และรีสตาร์ทเวิร์กเกอร์ทุกตัว ใช้ php.ini, FPM pool หรือการตั้งค่าเซิร์ฟเวอร์ที่ทำงานก่อนการวิเคราะห์คำขอ (request parsing) อย่าพึ่งพา ini_set() หรือ FPM .user.ini วิธีนี้จะบล็อกเส้นทางเซสชันที่ได้รับการยืนยันแล้ว แต่ไม่รวมถึงรูปแบบอื่นๆ
  • สำหรับ PHP 8.5 ให้ตั้งค่า fatal_error_backtraces=0 และรีสตาร์ทเวิร์กเกอร์ทุกตัว วิธีนี้จะบล็อกเฉพาะเส้นทาง fatal backtrace ที่ได้รับการยืนยันแล้วเท่านั้น
  • ลบการตั้งค่าที่ไม่ถูกต้องหรือถูกยกเลิกการใช้งานแล้ว (deprecated) ที่ใช้ต่อคำขอซึ่งมีการส่งการวินิจฉัย (diagnostics) ออกมาก่อนการเริ่มต้นระบบ การซ่อนการวินิจฉัยด้วย error_reporting, display_errors หรือ @ ไม่ได้ช่วยแก้ปัญหา
  • แก้ไขข้อผิดพลาดร้ายแรง (fatal errors) และการหมดเวลาการทำงาน (execution timeouts) ที่ผู้โจมตีสามารถเข้าถึงได้ รวมถึงความล้มเหลวใน callbacks, การประมวลผลการอัปโหลดหรือนำเข้า และการล้างข้อมูล
คำแนะนำที่ลิงก์ไว้ด้านบนมีรายละเอียดทางเทคนิคที่ครบถ้วน
 




กลับ
ยอดนิยม ด้านล่าง