Guzzle ส่งคุกกี้เกินขอบเขตโฮสต์ CVE-2026-67355
นักพัฒนาและผู้ดูแลระบบที่ใช้ Guzzle เก็บคุกกี้ร่วมกันระหว่างโฮสต์ที่เชื่อถือไม่เท่ากันควรเร่งอัปเดตเป็น 7.15.1 หรือใหม่กว่า
สรุปใน 1 นาที
- อาการ/ปัญหา
- คุกกี้ที่ตั้งใจให้ใช้เฉพาะโฮสต์ต้นทางอาจถูกส่งต่อไปยังโดเมนย่อยจนข้อมูลลับรั่วไหล
- ใครควรอ่าน
- นักพัฒนาและผู้ดูแลระบบของแอป PHP ที่เปิดใช้คุกกี้ใน Guzzle และใช้ที่เก็บเดียวกันกับโฮสต์แม่และโดเมนย่อย
- ทางแก้แบบสั้น
- อัปเดต Guzzle เป็น 7.15.1 หรือใหม่กว่า พร้อมลบหรือสร้างข้อมูลคุกกี้ถาวรจากรุ่นเก่าขึ้นใหม่ตามคำแนะนำของผู้พัฒนา
พอดีไล่ฟีด Packagist เจอประกาศของ Guzzle เรื่องคุกกี้ที่ควรจำกัดอยู่กับโฮสต์เดียว แต่กลับอาจถูกส่งไปยังโดเมนย่อย ช่องโหว่ CVE-2026-67355 อยู่ในแพ็กเกจ guzzlehttp/guzzle ที่แอป PHP ใช้ส่งคำขอ HTTP ต้องตรวจว่าแอปใช้ที่เก็บคุกกี้ร่วมกับปลายทางใดบ้าง
ใครต้องทำอะไร
- นักพัฒนา: ถ้าแอปใช้ Guzzle เก็บคุกกี้ร่วมกันข้ามโฮสต์ที่เชื่อถือไม่เท่ากัน ให้เร่งอัปเดตเป็น 7.15.1 หรือใหม่กว่าและทดสอบการรับส่งคุกกี้ก่อนนำขึ้นใช้งาน
- ผู้ดูแลระบบ: ถ้าดูแลการติดตั้งแอปที่ใช้งานลักษณะนี้ ให้ประสานอัปเดตแพ็กเกจโดยเร็วและเตรียมสร้างข้อมูลคุกกี้ถาวรใหม่พร้อมการนำรุ่นแก้ไขขึ้นใช้งาน
เกิดอะไรขึ้น
คุกกี้ที่ไม่มี Domain หรือมีค่าว่าง ต้องเป็นแบบ host-only คือส่งกลับให้โฮสต์ที่ตั้งคุกกี้นั้นได้เพียงโฮสต์เดียว แต่ CookieJar รุ่นที่มีปัญหาใส่ชื่อโฮสต์ลงช่อง Domain โดยไม่จำว่าเป็น host-only พอส่งคำขอถัดไป เลยยอมส่งคุกกี้ให้โดเมนย่อยด้วย
เช่น คุกกี้แบบ host-only จาก example.com อาจติดไปกับคำขอถึงโดเมนย่อย ถ้าผู้โจมตีควบคุมโฮสต์ลูกหรือดูข้อมูลที่ส่งถึงโฮสต์นั้นได้ ก็อาจเห็นรหัสเซสชัน โทเคน หรือข้อมูลลับในคุกกี้ ประกาศจัดความรุนแรงไว้ระดับปานกลาง ด้วยคะแนน CVSS 3.1 ที่ 5.9/10 ตาม GitHub Advisory Database
แอปต้องเปิดใช้คุกกี้และใช้ที่เก็บในตัวชุดเดียวกัน จากนั้นรับคุกกี้ host-only จากโฮสต์แม่ แล้วเรียกโฮสต์ลูกที่เชื่อถือน้อยกว่า คุกกี้ยังต้องตรงกับ path และยังไม่หมดอายุ ส่วนคุกกี้ Secure จะส่งผ่านการเชื่อมต่อปลอดภัยเท่านั้น
ใครโดนและรุ่นที่แก้
| แพ็กเกจ | รุ่นที่ได้รับผลกระทบ | รุ่นที่แก้ไข |
|---|---|---|
guzzlehttp/guzzle |
ทุกรุ่นก่อน 7.15.1 | 7.15.1 และใหม่กว่า |
แอปที่ไม่ใช้ระบบคุกกี้ของ Guzzle ไม่ได้รับผลกระทบ ส่วนแอปที่แยกที่เก็บคุกกี้ตามโฮสต์หรือขอบเขตความเชื่อถือ ไม่เรียกโดเมนย่อยที่เชื่อถือน้อยกว่าด้วยที่เก็บร่วม หรือเก็บเฉพาะคุกกี้ที่ระบุ Domain ถูกต้องและไม่ว่าง ก็ไม่เข้าข่ายข้อมูลรั่วจากกรณีนี้
รุ่นแก้ไขเก็บสถานะ host-only และจับคู่คุกกี้ชนิดนี้กับโฮสต์เดิมเท่านั้น ข้อมูลคุกกี้ที่บันทึกไว้จะมี HostOnly เป็นค่า true หรือ false ด้วย รายละเอียดอยู่ใน ประกาศของผู้พัฒนา Guzzle
ต้องทำอะไร
ตรวจรุ่นในโปรเจกต์แล้วอัปเดตผ่าน Composer โดยข้อกำหนดใน composer.json ต้องยอมรับรุ่นที่แก้ไข หากยังล็อกไว้กับรุ่นเก่า ให้ปรับข้อกำหนดพร้อมตรวจความเข้ากันได้ก่อน และตรวจผลหลังอัปเดตว่าได้ 7.15.1 หรือใหม่กว่า
composer show guzzlehttp/guzzle
composer update guzzlehttp/guzzle --with-all-dependencies
composer show guzzlehttp/guzzle
นำไฟล์ล็อกและแพ็กเกจที่ผ่านการทดสอบไปใช้ในการติดตั้งจริง
FileCookieJar และ SessionCookieJar จะโยน RuntimeException เมื่อโหลดข้อมูลคุกกี้ที่ไม่มี HostOnly หลังอัปเกรด ให้ลบหรือสร้างข้อมูลใหม่ เติม HostOnly เองได้เฉพาะเมื่อรู้ว่าคุกกี้ต้นฉบับมี Domain หรือไม่ ห้ามเดาจากชื่อโดเมนที่เก็บไว้
หากยังอัปเดตไม่ได้ ผู้พัฒนาแนะนำให้แยก CookieJar ต่อโฮสต์หรือขอบเขตความเชื่อถือ ปิดการจัดการคุกกี้สำหรับปลายทางที่เชื่อถือน้อยกว่า หรือหลีกเลี่ยงการเรียกปลายทางนั้นผ่านไคลเอนต์ที่ใช้ที่เก็บร่วม โดยเฉพาะการตั้ง cookies เป็น true ซึ่งสร้างที่เก็บเดียวให้ทั้งไคลเอนต์ ตาม แนวทางแก้ขัดและข้อควรระวังตอนอัปเกรด
ส่วนตัวผมให้เร่งแพตช์ถ้าแอปใช้คุกกี้ร่วมกันระหว่างโฮสต์แม่กับโดเมนย่อยที่เชื่อถือไม่เท่ากัน ที่มา: Guzzle: Host-only cookie scope is not preserved เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ
อยากให้เราทำให้ไหม?
ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า
เคยเจองานแบบนี้ไหม? ติดตรงไหน?
มาแลกวิธีกันต่อในบอร์ด LinuxThai



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