EST. 2026 — บันทึกงานเซิร์ฟเวอร์จริง SYSADMIN · SECURITY · AI · DIRECTADMIN เล่มที่ 01
THE SYSADMIN ALMANAC
หน้าหลัก / Security Notice / "league/commonmark เสี่ยง DoS: GHSA-g2gp-3wwq-f4ph"
Security Notice

"league/commonmark เสี่ยง DoS: GHSA-g2gp-3wwq-f4ph"

โดย Ton-Or ·3 ส.ค. 2026·อ่าน 3 นาที
"league/commonmark เสี่ยง DoS: GHSA-g2gp-3wwq-f4ph"

"ผู้ดูแลระบบและนักพัฒนาที่เปิด AttributesExtension รับ Markdown จากภายนอกควรเร่งอัปเดต league/commonmark เป็น 2.9.0 หรือรุ่นใหม่กว่าที่มีแพตช์"

สรุปใน 1 นาที

อาการ/ปัญหา
บล็อกแอตทริบิวต์ในบรรทัดที่วางติดกันอาจทำให้การแปลง Markdown ใช้เวลาสูงจนบริการไม่พร้อมใช้งาน
ใครควรอ่าน
ผู้ดูแลระบบและนักพัฒนาที่ใช้ league/commonmark รุ่นได้รับผลกระทบ พร้อมเปิด AttributesExtension ประมวลผลข้อมูลที่ไม่น่าเชื่อถือ
ทางแก้แบบสั้น
อัปเดตเป็น 2.9.0 หรือรุ่นใหม่กว่าที่มีแพตช์ หากยังทำไม่ได้ให้ปิดส่วนขยายนี้สำหรับข้อมูลภายนอกหรือจำกัดความยาวก่อนแปลงอย่างเข้มงวด
ข้ามไปขั้นตอน

พอดีไล่ฟีดความปลอดภัยเจอประกาศ league/commonmark วันที่ 3 สิงหาคม 2026 ไลบรารี PHP ตัวนี้แปลง Markdown เป็น HTML ได้ แต่บล็อกแอตทริบิวต์ที่เรียงติดกันอาจทำให้ใช้ CPU สูงจนบริการสะดุด หรือ DoS ต้องตรวจว่าแอปเปิด AttributesExtension และรับข้อความจากผู้ใช้ภายนอกหรือไม่

Highระดับความรุนแรง
7.5คะแนน CVSS 3.1
2.9.0รุ่นที่แก้ไข

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

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

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

ส่วนขยาย Attributes ใช้กำหนดแอตทริบิวต์ให้ส่วนต่างๆ ของเอกสาร ปัญหาอยู่ที่ AttributesListener::findTargetAndDirection() ซึ่งต้องหาว่าแอตทริบิวต์แต่ละตัวเป็นของส่วนไหน หากมีบล็อกแอตทริบิวต์เรียงติดกันที่ต้นบล็อก ตัวแปลงจะไล่ค้นรายการข้างเคียงซ้ำจากแต่ละจุด ก่อนกลับมาใช้บล็อกแม่

งานรวมเพิ่มแบบกำลังสอง หรือ Θ(N²) ตามจำนวนบล็อก พอบล็อกเพิ่ม เวลาประมวลผลเลยเพิ่มเร็วกว่าเนื้อหาที่ส่งเข้าไป ผู้โจมตีที่ไม่ต้องยืนยันตัวตนอาจใช้ข้อความที่จัดรูปแบบมาเฉพาะทำให้การแปลงกิน CPU และกระทบความพร้อมใช้งานของบริการ ประกาศจัดระดับ High ด้วย CVSS 3.1 ที่ 7.5 และระบุผลกระทบด้านความพร้อมใช้งานเท่านั้น ไม่ได้ระบุผลต่อความลับหรือความถูกต้องของข้อมูล รหัสอ้างอิงคือ GHSA-g2gp-3wwq-f4ph และยังไม่มี CVE ระบุไว้ในประกาศ

การตั้ง attributes/allow หรือ allow_unsafe_links ไม่ได้หยุดเส้นทางนี้ เพราะการเดินตรวจโหนดระหว่าง parse ไม่ได้ถูกควบคุมด้วยค่าตั้งเหล่านั้น การเปิดตัวกรองลิงก์เลยไม่ได้ป้องกัน DoS รายการนี้

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

ตาม GitHub Advisory Database ช่วงรุ่นที่ได้รับผลกระทบเป็นดังตาราง โดยต้องเปิด AttributesExtension ด้วย การพบแพ็กเกจอยู่ในโครงการอย่างเดียว ยังไม่พอจะสรุปว่าเส้นทางที่มีปัญหาถูกใช้งาน

แพ็กเกจและรุ่นที่ได้รับผลกระทบ รุ่นที่แก้ไข
league/commonmark ตั้งแต่ 1.5.0 แต่ต่ำกว่า 2.9.0 2.9.0

ช่วงรุ่นในสองหน้าไม่ตรงกัน: หน้า advisory ใน repository ระบุ <2.8.4 แต่ระบุรุ่นแก้เป็น 2.9.0 เช่นกัน บทความนี้ยึดช่วงรุ่นจากฐานข้อมูลตามลิงก์ประกาศหลัก และไม่ถือว่า 2.8.4 เป็นรุ่นแก้ไข ส่วน release notes ของ 2.9.0 ยืนยันการแก้ปัญหาการเดินค้นหาแอตทริบิวต์รายการนี้

ต้องทำอะไร

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

สำหรับโครงการที่ประกาศ dependency นี้โดยตรงและพร้อมใช้สาย 2.x ให้สำรอง composer.json กับ composer.lock แล้วรันในสภาพแวดล้อมทดสอบก่อน คำสั่งนี้กำหนดขั้นต่ำเป็น 2.9 และอนุญาตให้ Composer ขยับ dependency ที่เกี่ยวข้องได้ตาม เอกสารคำสั่ง require

composer show league/commonmark
composer require "league/commonmark:^2.9" --with-all-dependencies
composer show league/commonmark

ตรวจ lock file และทดสอบ Markdown ที่ใช้จริงก่อน deploy หากอยู่สาย 1.x ให้ตรวจความเข้ากันได้ก่อนข้ามรุ่นหลัก หากใช้ผ่านแพ็กเกจแม่ให้อัปเดตตามข้อกำหนดของแพ็กเกจนั้น และตรวจรุ่นที่ให้บริการจริงหลัง deploy อีกครั้ง

หากยังอัปเดตไม่ได้

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

ส่วนตัวผมให้เร่งแพตช์ถ้าเปิดส่วนขยายนี้รับ Markdown จากภายนอก และใช้มาตรการชั่วคราวระหว่างรอทดสอบ ที่มา: GitHub Security Advisory GHSA-g2gp-3wwq-f4ph หากมีข้อมูลแก้ไขเพิ่มเติมจากผู้พัฒนา เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ

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

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

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

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

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

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

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

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