Laravel แทรกผลลัพธ์ Concurrency ได้: CVE-2026-128083
นักพัฒนาและผู้ดูแลระบบ Laravel ควรตรวจรุ่นแพ็กเกจและเร่งอัปเดตหากงาน Concurrency พิมพ์ข้อมูลที่ผู้ใช้ควบคุมได้
สรุปใน 1 นาที
- อาการ/ปัญหา
- ผู้โจมตีอาจปลอมข้อความผลลัพธ์ภายในของ Concurrency Process และทำให้รันโค้ดจากระยะไกลได้เมื่อเข้าเงื่อนไข
- ใครควรอ่าน
- นักพัฒนาและผู้ดูแลระบบที่ใช้ laravel/framework ในช่วงรุ่นที่ได้รับผลกระทบ โดยเฉพาะแอปที่เรียก Concurrency::run() ผ่าน process driver
- ทางแก้แบบสั้น
- อัปเดตเป็น 12.71.0 หรือ 13.40.0 ขึ้นไปตามสายรุ่น พร้อมตรวจโค้ดที่ส่งข้อมูลผู้ใช้ลง stdout ของงาน
พอดีเห็นประกาศของ Laravel เรื่อง Task Output Injection ใน Concurrency Process หมายเลข CVE-2026-128083 เลยหยิบมาอธิบายสำหรับคนดูแลเว็บ PHP ข้อความที่งานพิมพ์ออกมาอาจถูกอ่านเป็นผลลัพธ์ของเฟรมเวิร์ก ผู้โจมตีอาจใช้ช่องนี้รันโค้ดจากระยะไกลได้ แต่แอปต้องมีโค้ดที่เข้าเงื่อนไขก่อน
ใครต้องทำอะไร
- นักพัฒนา: ตรวจรุ่น Laravel และงานที่ใช้ Concurrency แล้วเร่งอัปเดตหากมีการพิมพ์ข้อมูลจากผู้ใช้ภายในงานเหล่านั้น
- ผู้ดูแลระบบ: ให้ทีมพัฒนาอัปเดต Laravel แล้วเร่งนำรุ่นแก้ขึ้นใช้งานหากแอปพิมพ์ข้อมูลจากผู้ใช้ในงาน Concurrency
เกิดอะไรขึ้น
Laravel มีระบบ Concurrency สำหรับเรียกงานพร้อมกัน เมื่อใช้ process driver เฟรมเวิร์กจะรับผลจากโพรเซสลูกผ่าน stdout ซึ่งเป็นช่องทางเดียวกับข้อความที่งานพิมพ์ออกมา ผู้โจมตีอาจปลอมข้อความให้ดูเหมือนผลลัพธ์ที่เฟรมเวิร์กส่งกลับเองได้
แอปต้องมีเส้นทางที่เรียก Concurrency::run() และงานต้องพิมพ์ข้อมูลที่ผู้ใช้ควบคุมได้ลง stdout เช่น ใช้ echo, print หรือ dd กับข้อมูลรับเข้า ผู้โจมตียังต้องวางข้อมูลนั้นไว้ต้น stdout ให้เป็น JSON ที่สมบูรณ์ ตามด้วยไบต์ \x1f\x8b เงื่อนไขทั้งหมดขึ้นกับโค้ดของแอป แค่ติดตั้ง Laravel ยังไม่ทำให้ถูกโจมตีได้ ตาม ประกาศของผู้พัฒนา
รุ่นเดิมส่งฟิลด์ผลลัพธ์เข้า unserialize() ข้อมูลปลอมเลยอาจทำให้รันโค้ดในโพรเซสเว็บได้ รุ่นแก้ใช้ HMAC ตรวจว่าข้อความผลลัพธ์มาจากเฟรมเวิร์กจริง ก่อนรับไปใช้ ตาม แพตช์ Laravel #62297
ใครโดนและรุ่นที่แก้
GitHub Advisory Database และ ระเบียน CVE ระบุระดับ Low และคะแนน CVSS 4.0 เท่ากับ 2.3/10 แต่ควรดูโค้ดของแอปประกอบด้วย เพราะเมื่อเงื่อนไขครบ ผลกระทบอาจถึงขั้นรันโค้ดจากระยะไกล
| แพ็กเกจและช่วงรุ่นที่ได้รับผลกระทบ | รุ่นที่แก้ |
|---|---|
| laravel/framework ต่ำกว่า 12.71.0 | 12.71.0 |
| laravel/framework ตั้งแต่ 13.0.0 แต่ต่ำกว่า 13.40.0 | 13.40.0 |
ข้อมูลช่วงรุ่นในสองหน้าไม่ตรงกัน: ประกาศของ Laravel ยังระบุรวมว่าได้รับผลกระทบต่ำกว่า 13.40.0 และบอกว่ามีแพตช์สาย 12.x ด้วย ส่วน GitHub Advisory Database และระเบียน CVE แยกสองสายตามตารางนี้ โดยระบุรุ่นแก้สาย 12 เป็น 12.71.0
CVE นี้ยังไม่อยู่ใน KEV ฉบับ 13 พฤศจิกายน 2026 ตาม KEV JSON ของ CISA ข้อมูลนี้ไม่ได้แปลว่าไม่มีการโจมตีเกิดขึ้น
ต้องทำอะไร
ตรวจรุ่นในโครงการและข้อกำหนดใน composer.json ก่อน ว่าอัปเดตถึงรุ่นแก้ของสายที่ใช้ได้หรือไม่ จากนั้นรันในสภาพแวดล้อมทดสอบ คำสั่งนี้ใช้ตรวจรุ่น อัปเดตแพ็กเกจพร้อม dependency และตรวจประกาศความปลอดภัยตาม เอกสาร Composer
composer show laravel/framework
composer update laravel/framework --with-all-dependencies
composer show laravel/framework
composer audit
หลังอัปเดตให้ตรวจว่ารุ่นที่ได้เป็น 12.71.0 หรือ 13.40.0 ขึ้นไปตามสายที่ใช้ หาก dependency ล็อกไว้ต่ำกว่านั้น ต้องแก้ข้อจำกัดและทดสอบก่อน นำ composer.lock ที่อัปเดตแล้วไปใช้ตอนติดตั้งด้วย
ทดสอบงาน Concurrency ทั้งตอนทำงานปกติและตอนเกิดข้อผิดพลาด ตรวจจุดพิมพ์ข้อมูลผู้ใช้และข้อความ debug ด้วย ประกาศไม่ได้ให้ขั้นตอน workaround แยกไว้ ให้ใช้การอัปเดตเป็นแนวทางหลัก
ส่วนตัวผมให้เร่งแพตช์ถ้ามีงาน Concurrency ที่พิมพ์ข้อมูลจากผู้ใช้ ส่วนแอปที่ตรวจแล้วไม่เข้าเงื่อนไขให้จัดอัปเดตในรอบบำรุงรักษาถัดไป ที่มา: Laravel: Task Output Injection - Concurrency Process (GitHub Advisory Database) เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ
อยากให้เราทำให้ไหม?
ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า
เคยเจองานแบบนี้ไหม? ติดตรงไหน?
มาแลกวิธีกันต่อในบอร์ด LinuxThai



ความคิดเห็น 0
ยังไม่มีความคิดเห็น — เป็นคนแรกเลย