EST. 2026 — บันทึกงานเซิร์ฟเวอร์จริง SYSADMIN · SECURITY · AI · DIRECTADMIN เล่มที่ 01
THE SYSADMIN ALMANAC
หน้าหลัก / Security Notice / Guzzle ข้ามการตรวจโฮสต์ได้ CVE-2026-69246
Security Notice

Guzzle ข้ามการตรวจโฮสต์ได้ CVE-2026-69246

โดย Ton-Or ·26 ก.ค. 2026·อ่าน 4 นาที
Guzzle ข้ามการตรวจโฮสต์ได้ CVE-2026-69246

นักพัฒนาและผู้ดูแลระบบที่ใช้ Guzzle ดึง URL จากภายนอกพร้อมตรวจโฮสต์ควรเร่งอัปเดตและทบทวนการตรวจปลายทาง

สรุปใน 1 นาที

อาการ/ปัญหา
ชื่อโฮสต์ที่แอปตรวจอาจต่างจากปลายทางที่ตัวส่งคำขอเชื่อมต่อจริง ทำให้ข้ามข้อจำกัดตามโฮสต์ได้
ใครควรอ่าน
นักพัฒนาและผู้ดูแลระบบของแอป PHP ที่ใช้ Guzzle รับ URL ที่ผู้ใช้ควบคุมได้และตรวจโฮสต์ก่อนส่งคำขอ
ทางแก้แบบสั้น
อัปเดต guzzlehttp/guzzle เป็นรุ่นแก้ 7.15.2 หรือ 8.0.1 ตามสายรุ่น และตรวจที่อยู่ปลายทางหลัง resolve ชื่อโฮสต์
ข้ามไปขั้นตอน

พอดีไล่ฟีด Packagist เจอประกาศของ Guzzle ไลบรารีส่ง HTTP request สำหรับ PHP เรื่อง CVE-2026-69246 ชื่อโฮสต์ที่เขียนในรูปแบบไม่มาตรฐานอาจผ่านการตรวจของแอป แล้วพาไปยังปลายทางที่แอปห้ามไว้ได้ ผู้พัฒนาเผยแพร่ประกาศวันที่ 26 กรกฎาคม 2026 และให้คะแนน CVSS 3.1 ที่ 7.2 ระดับ High

Guzzleไลบรารี HTTP สำหรับ PHP
7.2/10CVSS 3.1 ระดับ High
7.15.2รุ่นแก้สาย 7
8.0.1รุ่นแก้สาย 8

ใครต้องทำอะไร

  • นักพัฒนา: ถ้าแอปรับ URL จากผู้ใช้แล้วตรวจโฮสต์ก่อนส่งให้ Guzzle ให้เร่งอัปเดตไลบรารีและตรวจว่าบล็อกปลายทางต้องห้ามได้จริง
  • ผู้ดูแลระบบ: ถ้าดูแลแอปที่มีเงื่อนไขนี้ ให้ประสานทีมพัฒนานำรุ่นแก้ขึ้นใช้งานโดยเร็วและตรวจรุ่นในชุดที่ติดตั้งจริง

เกิดอะไรขึ้น

Guzzle ส่ง URI เป็นข้อความให้ตัวส่งคำขอ และกำหนดส่วนหัว Host แยกไว้ แต่ libcurl อาจถอดรหัสหรือแปลงชื่อโฮสต์ก่อนเชื่อมต่อ ชื่อที่แอปตรวจเลยอาจต่างจากปลายทางที่เชื่อมต่อจริง ปัญหาครอบคลุมทั้งตัวส่งผ่าน cURL และ StreamHandler

ถ้าผู้โจมตีกำหนด URI ได้ ก็อาจหลอกให้เซิร์ฟเวอร์ส่งคำขอไปยังโฮสต์ที่แอปห้ามไว้ นี่คือความเสี่ยง SSRF ผู้โจมตีอาจอ่านข้อมูลจากคำตอบได้เท่าที่แอปส่งกลับมาให้ ความต่างของชื่อยังกระทบการเลือก proxy การส่งข้อมูลยืนยันตัวตนเมื่อ redirect และการเก็บ cookie

แอปเข้าข่ายเมื่อรับข้อมูลจากภายนอกมาสร้าง URI แล้วตรวจโฮสต์ก่อนส่งให้ Guzzle แอปที่ดึงเฉพาะ URI ที่สร้างเองไม่รับผลกระทบ การอนุญาตเฉพาะชื่อมาตรฐานที่ตรงกันมักปฏิเสธชื่อผิดรูปได้ ส่วนการบล็อกชื่อบางรายการหรือกรอง IP ภายในเสี่ยงถูกข้าม

ใครโดนและรุ่นที่แก้

ประกาศ GHSA-v5mv-p594-2x33 ระบุช่วงรุ่นของแพ็กเกจ guzzlehttp/guzzle ดังนี้

แพ็กเกจ / ช่วงรุ่นที่ได้รับผลกระทบ รุ่นที่แก้
guzzlehttp/guzzle ทุกรุ่นต่ำกว่า 7.15.2 7.15.2
guzzlehttp/guzzle ตั้งแต่ 8.0.0 แต่ต่ำกว่า 8.0.1 8.0.1

แพตช์เพิ่มการตรวจโฮสต์ในตัวส่งคำขอที่มากับ Guzzle ทั้งสามตัวก่อนเชื่อมต่อเครือข่าย และแก้การสร้าง Host เมื่อไคลเอนต์เขียน URI ใหม่

ต้องทำอะไร

ตรวจ composer.lock ว่ามีแพ็กเกจนี้หรือไม่ รวมถึงกรณีที่ไลบรารีอื่นดึงเข้ามา เลือกรุ่นแก้ให้ตรงสายและตรวจข้อกำหนดใน composer.json ว่าอนุญาตให้อัปเดตได้ แล้วรันในพื้นที่พัฒนาหรือทดสอบ ตัวเลือกด้านล่างเปิดให้อัปเดตแพ็กเกจที่เกี่ยวข้องด้วย ตามคู่มือ Composer

composer update guzzlehttp/guzzle --with-all-dependencies
composer show guzzlehttp/guzzle

ตรวจรุ่นที่ได้ ทดสอบการดึง URL และการเปลี่ยนเส้นทาง แล้วนำ composer.lock กับชุดแอปขึ้นใช้งาน หากข้อกำหนดรุ่นขัดกัน ต้องแก้ข้อกำหนดหรือแพ็กเกจต้นทางก่อน

หากยังอัปเดตไม่ได้ ผู้พัฒนาแนะนำให้ตรวจโฮสต์และส่วนหัว Host แยกกันทุกครั้งที่เปลี่ยนเส้นทาง โดยจำกัดอักขระและปฏิเสธรูปแบบต้องห้ามตามตัวอย่างในประกาศ หากรับ UriInterface จากภายนอกให้แปลงกลับผ่าน GuzzleHttp\Psr7\Uri ก่อนใช้กฎนั้น

ยังต้องป้องกัน SSRF

แพตช์ยังยอมรับ IP แบบย่อ การเทียบข้อความโฮสต์อย่างเดียวเลยยังไม่พอ ผู้พัฒนาแนะนำให้ resolve แล้วตรวจที่อยู่ปลายทาง และแยก cookie jar สำหรับต้นทางที่ไม่เชื่อถือ การเปิด idn_conversion ไม่ใช่การควบคุมสิทธิ์เข้าถึง

ส่วนตัวผมให้เร่งแพตช์ถ้าแอปรับ URL จากภายนอกและใช้การตรวจโฮสต์คุมปลายทาง พร้อมทบทวนกฎป้องกัน SSRF ควบคู่กัน ที่มา: Guzzle: Noncanonical host can bypass host-based checks และประกาศผู้พัฒนา Guzzle หากมีรายละเอียดจากผู้พัฒนาเพิ่มเติม เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ

อยากให้เราทำให้ไหม?

ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า

คุยเรื่องงานกับเรา

เคยเจองานแบบนี้ไหม? ติดตรงไหน?

มาแลกวิธีกันต่อในบอร์ด LinuxThai

→ คุยต่อในบอร์ด

ความคิดเห็น 0

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