Guzzle ส่งคุกกี้เกินขอบเขตโฮสต์ CVE-2026-67355
นักพัฒนาและผู้ดูแลระบบที่ใช้ Guzzle เก็บคุกกี้ร่วมกันระหว่างโฮสต์ที่เชื่อถือไม่เท่ากันควรเร่งอัปเดตเป็น 7.15.1 หรือใหม่กว่า
1-minute summary
- Symptom / problem
- คุกกี้ที่ตั้งใจให้ใช้เฉพาะโฮสต์ต้นทางอาจถูกส่งต่อไปยังโดเมนย่อยจนข้อมูลลับรั่วไหล
- Who should read
- นักพัฒนาและผู้ดูแลระบบของแอป PHP ที่เปิดใช้คุกกี้ใน Guzzle และใช้ที่เก็บเดียวกันกับโฮสต์แม่และโดเมนย่อย
- Fix in short
- อัปเดต 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 เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ
Want us to set this up?
Get help with server setup, configuration, migration, or troubleshooting. Save time for the work that matters.
Hit something like this? Stuck somewhere?
Come trade notes on the LinuxThai board



Comments 0
No comments yet — be the first