EST. 2026 — Notes from real server work SYSADMIN · SECURITY · AI · DIRECTADMIN Issue 01
THE SYSADMIN ALMANAC
Home / Security Notice / league/commonmark เสี่ยง DoS: GHSA-jjv6-8j6v-6j52
Security Notice

league/commonmark เสี่ยง DoS: GHSA-jjv6-8j6v-6j52

by Ton-Or ·2 Sep 2026·4 min read
league/commonmark เสี่ยง DoS: GHSA-jjv6-8j6v-6j52

แอปที่รับ Markdown จากผู้ใช้และเปิด SmartPunct หรือ Attributes ควรเร่งอัปเดตเป็น 2.9.1 หรือใหม่กว่า

1-minute summary

Symptom / problem
Markdown ที่ออกแบบมาเฉพาะทำให้การแปลงใช้ CPU มากผิดสัดส่วนจน PHP workers ไม่ว่างรับงานปกติ
Who should read
แอปที่ใช้ league/commonmark รุ่นที่กระทบและลงทะเบียน SmartPunctExtension หรือ AttributesExtension
Fix in short
อัปเดตเป็น 2.9.1 หรือใหม่กว่า หรือหยุดลงทะเบียนส่วนเสริมที่กระทบระหว่างรอแพตช์
Jump to steps

พอดีไล่ฟีดความปลอดภัยเจอประกาศของ league/commonmark เรื่อง Denial of Service ในส่วนเสริม SmartPunct และ Attributes รหัส GHSA-jjv6-8j6v-6j52 จุดที่ต้องตรวจคือแอปลงทะเบียนส่วนเสริมเหล่านี้ไว้หรือไม่ เพราะการมีแพ็กเกจอยู่ในโปรเจกต์อย่างเดียวไม่ได้แปลว่าเข้าข่ายช่องโหว่นี้ ประกาศให้ระดับ High คะแนน CVSS 3.1 เท่ากับ 7.5 และยังไม่ระบุหมายเลข CVE

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

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

ประกาศผู้พัฒนาเผยแพร่วันที่ 9 สิงหาคม 2026 ส่วนรายการใน GitHub Advisory Database เข้าฐานวันที่ 1 กันยายน 2026 เวลา UTC ซึ่งตรงกับ 2 กันยายน 2026 ตามเวลาไทย

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

ผู้โจมตีที่ส่ง Markdown เข้าแอปที่เข้าข่ายได้อาจไม่ต้องยืนยันตัวตน และใช้คำขอขนาดไม่มากกินเวลา CPU จน PHP workers ติดงาน ส่งผลให้คำขอปกติทำงานไม่สำเร็จ ผลกระทบตามประกาศคือบริการไม่พร้อมใช้งาน ไม่ได้ระบุข้อมูลรั่วหรือการข้ามตัวกรอง ช่องโหว่นี้ยังไม่อยู่ใน KEV ฉบับ 4 พฤศจิกายน 2026

แพตช์เปลี่ยนให้การรวมข้อความต่อข้อมูลโดยไม่คัดลอกข้อความเดิมทั้งก้อน บันทึกชุดโหนด Attributes ที่เดินผ่านแล้ว และรวบรวมแอตทริบิวต์ก่อนรวมรายการ class ในรอบเดียว รายละเอียดการแก้อยู่ใน release notes ของ 2.9.1

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

แพ็กเกจ / ส่วนเสริม รุ่นที่กระทบ รุ่นที่แก้
league/commonmark / SmartPunct ตั้งแต่ 2.0.0 ถึง 2.9.0 2.9.1 หรือใหม่กว่า
league/commonmark / Attributes ตั้งแต่ 1.5.0 ถึง 2.9.0 2.9.1 หรือใหม่กว่า

ต้องลงทะเบียน SmartPunctExtension หรือ AttributesExtension บน Environment ถึงจะเข้าข่าย ทั้งสองไม่ได้เปิดมาพร้อม CommonMarkConverter, GithubFlavoredMarkdownConverter หรือ GithubFlavoredMarkdownExtension โดยอัตโนมัติ รุ่น 2.9.0 ยังไม่แก้ปัญหานี้ครบ ส่วนสาย 1.x หมดการสนับสนุนแล้ว ต้องย้ายไป 2.9.1 หรือใหม่กว่า

ต้องทำอะไร

ตรวจรุ่นที่ติดตั้งและจุดลงทะเบียนส่วนเสริมก่อน สำรอง composer.json และ composer.lock แล้วทดสอบอัปเดตในสภาพแวดล้อมทดสอบ ตัวอย่างนี้ใช้เมื่อข้อกำหนด dependency ของโปรเจกต์ยอมรับรุ่น 2.9.1 แล้ว หากยังล็อกสาย 1.x ต้องวางแผนย้ายรุ่นและตรวจความเข้ากันได้ก่อน

composer show league/commonmark
composer update league/commonmark --with-all-dependencies
composer show league/commonmark
composer audit

คำสั่ง update เลือกรุ่นตามข้อกำหนดใน composer.json หลังอัปเดตให้ตรวจว่าได้รุ่นแก้จริง แล้วทดสอบการแปลงเอกสารและส่วนเสริมก่อน deploy ตาม เอกสาร Composer รุ่น 2.9.1 แก้ปัญหาในประกาศนี้ แต่ยังมี DoS จากแอตทริบิวต์ชื่ออื่นตาม GHSA-8rr7-cvq3-gmfh ซึ่งแก้ใน 2.10.0 หากเปิด Attributes ควรเลือกรุ่นที่แก้ตัวนั้นด้วย

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

ข้อควรระวัง

ค่าตั้ง attributes/allow, max_delimiters_per_line, max_nesting_level, html_input และ allow_unsafe_links ไม่บรรเทาช่องโหว่นี้ อย่าใช้ค่าตั้งเหล่านี้เป็นเหตุผลเลื่อนแพตช์

ส่วนตัวผมให้เร่งแพตช์ถ้ารับ Markdown จากบุคคลภายนอกและเปิดส่วนเสริมที่กระทบ เพราะคำขอเดียวอาจยึดเวลาประมวลผลไปจากงานปกติ ที่มา: GitHub Security Advisory GHSA-jjv6-8j6v-6j52 หากประกาศต้นทางมีรายละเอียดเพิ่มเติม เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ

Want us to set this up?

Get help with server setup, configuration, migration, or troubleshooting. Save time for the work that matters.

Get a quote

Hit something like this? Stuck somewhere?

Come trade notes on the LinuxThai board

→ Continue on the board

Comments 0

No comments yet — be the first