EST. 2026 — บันทึกงานเซิร์ฟเวอร์จริง SYSADMIN · SECURITY · AI · DIRECTADMIN เล่มที่ 01
THE SYSADMIN ALMANAC
หน้าหลัก / Security Notice / phpseclib เสี่ยง DoS จาก PBKDF — GHSA-w3p9-g4p2-h3rr
Security Notice

phpseclib เสี่ยง DoS จาก PBKDF — GHSA-w3p9-g4p2-h3rr

โดย Ton-Or ·2 พ.ย. 2026·อ่าน 4 นาที
phpseclib เสี่ยง DoS จาก PBKDF — GHSA-w3p9-g4p2-h3rr

นักพัฒนาและผู้ดูแลระบบที่เปิดรับไฟล์กุญแจเข้ารหัสหรือ PFX จากภายนอกควรเร่งอัปเดต phpseclib ตามสายรุ่นที่ใช้

สรุปใน 1 นาที

อาการ/ปัญหา
ไฟล์เข้ารหัสที่กำหนดจำนวนรอบ PBKDF สูงผิดปกติทำให้ PHP ใช้ CPU ต่อเนื่องจนบริการไม่พร้อมใช้งาน
ใครควรอ่าน
นักพัฒนาและผู้ดูแลระบบของแอปที่ใช้ phpseclib อ่านกุญแจเข้ารหัส PFX หรือ CMS จากแหล่งที่ไม่เชื่อถือพร้อมรหัสผ่าน
ทางแก้แบบสั้น
อัปเดตเป็น 4.0.3, 3.0.58, 2.0.56 หรือ 1.0.31 ตามสายรุ่น และตรวจรุ่นที่นำขึ้นใช้งานจริง
ข้ามไปขั้นตอน

พอดีไล่ฟีด Packagist เจอประกาศของ phpseclib ลงวันที่ 2 พฤศจิกายน 2026 เรื่องไฟล์เข้ารหัสที่ทำให้ PHP ใช้ CPU จนบริการล่มได้ หมายเลขประกาศคือ GHSA-w3p9-g4p2-h3rr แอปที่ต้องตรวจคือแอปที่ใช้ phpseclib/phpseclib เปิดกุญแจหรือข้อมูลเข้ารหัสจากภายนอกด้วยรหัสผ่าน

phpseclibไลบรารีที่กระทบ
02/11/2026วันที่ประกาศ
Highระดับความรุนแรง
7.5/10คะแนน CVSS 3.1

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

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

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

PBKDF ใช้สร้างกุญแจจากรหัสผ่าน โดยคำนวณซ้ำหลายรอบเพื่อให้เดารหัสผ่านได้ยากขึ้น ปัญหาคือ phpseclib อ่านจำนวนรอบ iterationCount จากข้อมูล ASN.1 ในไฟล์โดยไม่จำกัดค่าสูงสุด ผู้โจมตีเลยใส่จำนวนรอบสูงมากได้ PHP worker จะติดอยู่กับการคำนวณจนรับงานอื่นไม่ได้

ประกาศระบุไฟล์กุญแจส่วนตัว PKCS#8 ที่เข้ารหัส ไฟล์ PKCS#12 หรือ PFX และข้อมูล CMS แบบใช้รหัสผ่าน เงื่อนไขคือแอปส่งไฟล์จากผู้โจมตีเข้า loader พร้อมรหัสผ่านที่ไม่เป็น null ตัวไลบรารีคำนวณกุญแจก่อนลองถอดรหัส แม้ข้อมูลเข้ารหัสจะใช้ไม่ได้ ก็ยังเสียเวลาคำนวณเต็มจำนวนรอบ

ผลที่รายงานคือ denial of service หรือ DoS จากการใช้ CPU ต่อเนื่อง ไฟล์ขนาดเล็กก็ยึด worker ไว้ได้ และคำขอหลายรายการอาจใช้ worker จนหมด ประกาศระบุว่าไม่มีผลต่อความลับหรือความถูกต้องของข้อมูล จัดระดับ High และให้คะแนน CVSS 3.1 ที่ 7.5 ช่อง CVE ยังระบุว่าไม่มีหมายเลขที่ทราบ ตาม ประกาศความปลอดภัยของ phpseclib

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

ตาราง Affected versions และ Patched versions ในประกาศระบุรุ่นของแพ็กเกจ phpseclib/phpseclib ดังนี้

สายรุ่น รุ่นที่ได้รับผลกระทบ รุ่นที่แก้
4.x 4.0.0–4.0.2 4.0.3
3.x 3.0.0–3.0.57 3.0.58
2.x 2.0.0–2.0.55 2.0.56
1.x 1.0.0–1.0.30 1.0.31

ข้อมูลในหน้าเดียวกันยังไม่ตรงกันทั้งหมด ส่วนรายละเอียดเก่ายังเขียนว่า “Fix status: not fixed” แต่ตารางด้านบนมีรุ่นแก้แล้ว Release note ของ 4.0.3, 3.0.58, 2.0.56 และ 1.0.31 ยืนยันว่าเพิ่มเพดานจำนวนรอบ PBKDF แล้ว ตารางนี้เลยยึดรุ่นแก้ตามข้อมูลดังกล่าว

ต้องทำอะไร

ตรวจรุ่นในโครงการ แล้วอัปเดตในสภาพแวดล้อมทดสอบก่อนนำขึ้นใช้งาน ตัวอย่างสำหรับโครงการ Composer ที่ติดตั้งแพ็กเกจนี้โดยตรงคือ

composer show phpseclib/phpseclib
composer update phpseclib/phpseclib --with-dependencies
composer show phpseclib/phpseclib

คำสั่ง update ของ Composer ยังเลือกได้เฉพาะรุ่นที่เงื่อนไขใน composer.json ยอมรับ ถ้าตรึงรุ่นเก่าไว้ ให้แก้เงื่อนไขเพื่อรับรุ่นแก้ในสายเดิม แล้วตรวจ composer.lock ทดสอบการนำเข้าไฟล์ตามปกติ โดยเฉพาะกุญแจ PFX หรือ CMS ที่แอปใช้งาน จากนั้นนำแอปพร้อมไลบรารีที่อัปเดตแล้วขึ้นใช้งานจริง

ระหว่างรออัปเดต

ประกาศเสนอให้จำกัด CPU หรือเวลาประมวลผลต่อคำขอเพื่อลดผลกระทบชั่วคราว แต่คำขอยังยึด worker จนถูกหยุด ขีดจำกัดของคำขอเว็บไม่ได้ป้องกันงาน CLI หรือ worker เบื้องหลังด้วย

ส่วนตัวผมให้เร่งแพตช์หากเปิดรับไฟล์เข้ารหัสจากภายนอก เพราะไฟล์ขนาดเล็กก็ทำให้ worker เสียเวลาคำนวณได้ ที่มา: phpseclib Security Advisory GHSA-w3p9-g4p2-h3rr (https://github.com/phpseclib/phpseclib/security/advisories/GHSA-w3p9-g4p2-h3rr) เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ

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

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

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

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

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

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

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

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