Guzzle อาจส่งข้อมูลยืนยันตัวตนพร็อกซีผิดปลายทาง CVE-2026-67339
นักพัฒนาและผู้ดูแลระบบที่ใช้ Guzzle พร้อมข้อมูลยืนยันตัวตนพร็อกซีควรตรวจการตั้งค่าและเร่งอัปเดตเป็น 7.14.2 หรือใหม่กว่า
1-minute summary
- Symptom / problem
- เฮดเดอร์ Proxy-Authorization อาจหลุดถึงเซิร์ฟเวอร์ปลายทางและเปิดเผยข้อมูลยืนยันตัวตนของพร็อกซี
- Who should read
- นักพัฒนาและผู้ดูแลระบบที่ดูแลแอป PHP ซึ่งใช้ Guzzle และตั้งค่าข้อมูลยืนยันตัวตนพร็อกซีในเงื่อนไขที่ประกาศระบุ
- Fix in short
- อัปเดต guzzlehttp/guzzle เป็น 7.14.2 หรือใหม่กว่า หรือใช้วิธีส่งข้อมูลยืนยันตัวตนพร็อกซีทดแทนตามคำแนะนำผู้พัฒนาระหว่างรอ
พอดีไล่ฟีด Packagist แล้วเจอประกาศของ Guzzle ไลบรารี HTTP สำหรับ PHP เรื่อง Proxy-Authorization อาจหลุดถึงเซิร์ฟเวอร์ปลายทาง ทั้งที่มีไว้ให้พร็อกซีเท่านั้น ช่องโหว่ CVE-2026-67339 หรือ GHSA-94pj-82f3-465w มีความรุนแรงปานกลาง คะแนน CVSS 3.1 5.3/10 ตาม ประกาศ GitHub Advisory Database
ใครต้องทำอะไร
- นักพัฒนา: หากใช้ Guzzle พร้อมข้อมูลยืนยันตัวตนพร็อกซีตามเงื่อนไขนี้ ให้เร่งตรวจโค้ดและอัปเดตแพ็กเกจ
- ผู้ดูแลระบบ: หากดูแลแอปที่เข้าข่าย ให้ประสานทีมแอปเพื่อตรวจเงื่อนไขและเร่งติดตั้งรุ่นที่แก้
เกิดอะไรขึ้น
CurlHandler และ CurlMultiHandler ใส่เฮดเดอร์ของคำขอลงในรายการที่จะส่งให้เซิร์ฟเวอร์ปลายทางก่อน แล้วค่อยแยก Proxy-Authorization ออกเมื่อคาดว่าจะใช้พร็อกซี HTTP หรือ HTTPS แต่ libcurl อาจเลือกเส้นทางต่างจากที่ Guzzle คาด เฮดเดอร์เลยติดไปกับคำขอที่ต่อตรง ข้ามพร็อกซีตาม NO_PROXY หรือผ่าน SOCKS ได้ การ redirect ไปเส้นทางเหล่านี้ก็เข้าข่าย เฮดเดอร์อาจมาจากค่าเริ่มต้นของ client ตัวเลือกคำขอ หรือ middleware ดูรายละเอียดใน ประกาศช่องโหว่
ผู้โจมตีที่ควบคุมปลายทางอาจเก็บข้อมูลนี้ลงบันทึกคำขอ แล้วนำไปสวมสิทธิ์ใช้พร็อกซีหรือเข้าถึงปลายทางที่พร็อกซีมีสิทธิ์เข้าถึง หากข้อมูลยืนยันตัวตนยังใช้ได้ ตาม ประกาศของผู้พัฒนา
ใครโดนและรุ่นที่แก้
| แพ็กเกจ | รุ่นที่ได้รับผลกระทบ | รุ่นที่แก้ไข |
|---|---|---|
guzzlehttp/guzzle |
ทุกรุ่นก่อน 7.14.2 |
7.14.2 |
Guzzle ไม่ได้สร้างเฮดเดอร์นี้เอง แอปที่ไม่เคยตั้ง Proxy-Authorization เลยไม่เข้าข่ายปัญหาส่วนนี้ การใส่ข้อมูลบัญชีใน URL ของพร็อกซีอย่างเดียวก็ไม่เข้าข่าย แต่ stream handler อาจทำข้อมูลนั้นรั่วได้หากใช้ร่วมกับเฮดเดอร์นี้ หรือเขียนทับ stream_context.http.proxy ภายหลัง ส่วน CURLOPT_PROXYUSERPWD ไม่ได้รับผลกระทบตาม ประกาศผู้พัฒนา
รุ่นที่แก้แยกข้อมูลพร็อกซีออกจากเฮดเดอร์ปลายทาง และปฏิเสธบางการตั้งค่าที่ไม่ปลอดภัยก่อนเชื่อมต่อ ควรทดสอบพร็อกซีหลังอัปเดตด้วย ดู บันทึกรุ่น 7.14.2
ต้องทำอะไร
ตรวจการตั้ง Proxy-Authorization ในโค้ด ค่าเริ่มต้น และ middleware แล้วอัปเดต dependency ด้วย Composer และตรวจรุ่นอีกครั้ง
composer show guzzlehttp/guzzle
composer update guzzlehttp/guzzle --with-all-dependencies
composer show guzzlehttp/guzzle
ต้องได้ 7.14.2 หรือใหม่กว่า หาก composer.json หรือแพ็กเกจอื่นล็อกรุ่นเก่า ต้องแก้ข้อกำหนดและทดสอบความเข้ากันได้ก่อน แล้วนำไฟล์ล็อกและ dependency ที่อัปเดตไปติดตั้งจริง
หากยังอัปเดตไม่ได้ ผู้พัฒนาแนะนำให้ลบ Proxy-Authorization จากเฮดเดอร์คำขอ ค่าเริ่มต้นของ client และ middleware แล้วส่งข้อมูลยืนยันตัวตนผ่าน URL ของพร็อกซีแทน หรือใช้ CURLOPT_PROXYUSERPWD เมื่อใช้ cURL handler อย่าใช้ข้อมูลบัญชีใน URL ร่วมกับเฮดเดอร์นี้ และอย่าเขียนทับ stream_context.http.proxy โดยตรง ตาม วิธีลดความเสี่ยงของผู้พัฒนา
การอัปเดต libcurl อย่างเดียวไม่แก้ปัญหาการแยกเฮดเดอร์ตามเส้นทางของ Guzzle และการปิด redirect ช่วยลดความเสี่ยงแต่ยังไม่ปิดทุกช่องทางรั่ว ตามประกาศผู้พัฒนา
ส่วนตัวผมให้เร่งแพตช์ถ้าแอปตั้งเฮดเดอร์นี้และมีคำขอที่เข้าเงื่อนไขรั่ว ที่มา: Guzzle: Proxy-Authorization headers can be sent to origin servers (GHSA-94pj-82f3-465w) เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ
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