สรุปสั้น
บริษัท GitLab ออกแพตช์ความปลอดภัยเร่งด่วนเมื่อวันที่ 12 ตุลาคม 2569 เพื่อแก้ช่องโหว่ CVE-2026-97229 ซึ่งมีคะแนน CVSS สูงสุด 10.0 กระทบทั้ง GitLab Community Edition (CE) และ Enterprise Edition (EE) ช่องโหว่เป็น integer overflow ในตัวคอมไพล์ regular expression (regex) ของระบบ CI/CD ซึ่งตรวจสอบ regex ไม่เพียงพอ ทำให้ผู้โจมตีที่ไม่ต้องยืนยันตัวตนสามารถรันโค้ดบนเซิร์ฟเวอร์ GitLab ได้ผ่าน regex ที่สร้างขึ้นเฉพาะในค่าตั้ง CI/CD ภายใต้เงื่อนไขบางอย่าง ซึ่งเป็นการรันโค้ดฝั่งเซิร์ฟเวอร์ ไม่ใช่ JavaScript ในเบราว์เซอร์ของผู้ใช้
ช่องโหว่กระทบ GitLab เวอร์ชัน 19.2 ก่อน 19.2.8, 19.3 ก่อน 19.3.4 และ 19.4 ก่อน 19.4.2 ผู้ดูแลระบบ GitLab แบบ self-managed ต้องอัปเดตทันที ส่วน GitLab.com ใช้เวอร์ชันที่แพตช์แล้ว และลูกค้า GitLab Dedicated ไม่ต้องดำเนินการ GitLab ยังไม่ได้ระบุว่ามีการโจมตีจริง และไม่ได้เปิดเผยเงื่อนไขที่ต้องมีเพื่อโจมตีสำเร็จ แต่ช่องโหว่นี้ตามหลังช่องโหว่ regex ใน CI/CD ระดับวิกฤตที่ GitLab เพิ่งแพตช์เมื่อเดือนกันยายน ซึ่งครั้งนั้นต้องยืนยันตัวตนก่อน ขณะที่ครั้งนี้ไม่ต้องมีบัญชีเลย
รายละเอียดข่าว
เว็บไซต์ Cyber Security News รายงานเมื่อวันที่ 12 ตุลาคม 2569 ว่า GitLab ออกอัปเดตความปลอดภัยเร่งด่วนเพื่อแก้ช่องโหว่ระดับวิกฤตที่อาจเปิดให้ผู้โจมตีรันโค้ดใดก็ได้บนเซิร์ฟเวอร์ที่ได้รับผลกระทบโดยไม่ต้องล็อกอิน ช่องโหว่ CVE-2026-97229 มีคะแนน CVSS 10.0 และกระทบทั้งรุ่น CE และ EE
ตามประกาศของ GitLab ช่องโหว่เกิดจาก integer overflow ในตัวคอมไพล์ regex ของ CI/CD การตรวจสอบ regex ที่ไม่เพียงพออาจทำให้ผู้โจมตีที่ไม่ได้ยืนยันตัวตนรันโค้ดได้ผ่าน regex ที่สร้างขึ้นเฉพาะภายในค่าตั้ง CI/CD GitLab ระบุว่าการโจมตีทำได้ “ภายใต้เงื่อนไขบางอย่าง” แต่คำอธิบายที่เผยแพร่ไม่ได้ให้ลำดับการโจมตีครบถ้วนหรือระบุเงื่อนไขที่แน่ชัด
อย่างไรก็ดี CVSS vector ระบุว่าโจมตีผ่านเครือข่ายได้ ความซับซ้อนต่ำ ไม่ต้องใช้สิทธิ์ และไม่ต้องให้ผู้ใช้โต้ตอบ และให้ผลกระทบระดับสูงทั้งด้านความลับ ความถูกต้อง และความพร้อมใช้งานของข้อมูล ประกาศไม่ได้ระบุว่าช่องโหว่นี้ถูกใช้โจมตีจริงแล้ว
GitLab ให้เครดิตนักวิจัยที่ใช้ชื่อ joaxcar ซึ่งรายงานช่องโหว่ผ่านโครงการ bug bounty บน HackerOne บริษัทเคยแพตช์ช่องโหว่ regex ใน CI/CD ระดับวิกฤตมาแล้วเมื่อเดือนกันยายน ช่องโหว่ชุดก่อนต้องยืนยันตัวตน แต่ช่องโหว่ใหม่นี้โจมตีได้โดยไม่ต้องมีบัญชี ประกาศไม่ได้ยืนยันว่าทั้งสองชุดมีต้นเหตุเดียวกันหรือไม่
แพตช์รอบนี้ยังแก้ช่องโหว่อื่น ทั้ง cross-site scripting ปัญหาการตรวจสิทธิ์ และปัญหาเกี่ยวกับ prompt ใน GitLab Duo Agent Platform GitLab เตือนด้วยว่าเวอร์ชัน 19.3.4 มีบั๊กที่ทราบแล้วซึ่งกระทบหน้า merge request เมื่อเปิดใช้การเชื่อมต่อ Ona และมีแผนแก้ในเวอร์ชัน 19.3.5
รายละเอียดช่องโหว่
| รายการ | รายละเอียด |
|---|---|
| CVE | CVE-2026-97229 |
| CVSS | 10.0 (วิกฤต) — AV:N / AC:L / PR:N / UI:N |
| ประเภท | Integer overflow ในตัวคอมไพล์ regex ของ CI/CD → รันโค้ดบนเซิร์ฟเวอร์ |
| ผลิตภัณฑ์ | GitLab CE และ EE (self-managed) |
| เวอร์ชันที่กระทบ | 19.2 ถึงก่อน 19.2.8 · 19.3 ถึงก่อน 19.3.4 · 19.4 ถึงก่อน 19.4.2 |
| เวอร์ชันที่แก้ไข | 19.2.8 · 19.3.4 · 19.4.2 |
| ผู้ค้นพบ | joaxcar (HackerOne) |
| สถานะการโจมตี | ยังไม่มีรายงาน |
integer overflow คือการที่ค่าตัวเลขในโปรแกรมเกินขอบเขตที่ชนิดข้อมูลรองรับแล้ววนกลับไปเป็นค่าเล็ก ในตัวคอมไพล์ regex ค่าที่ผิดเพี้ยนนี้อาจถูกใช้คำนวณขนาดหน่วยความจำหรือขอบเขตข้อมูล จนนำไปสู่การเขียนข้อมูลเกินพื้นที่ที่จองไว้และควบคุมการทำงานของโปรแกรมได้ GitLab ไม่ได้ระบุว่าตัวคอมไพล์ regex ที่มีปัญหาเป็นไลบรารีใด และการ overflow นำไปสู่การรันโค้ดอย่างไร รายละเอียดทางเทคนิคจึงยังมีน้อย
ประเด็นที่ยังไม่ชัดคือผู้โจมตีที่ไม่มีบัญชีส่ง regex เข้าไปในค่าตั้ง CI/CD ได้อย่างไร เพราะปกติการแก้ไฟล์ .gitlab-ci.yml ต้องมีสิทธิ์ในโปรเจกต์ เงื่อนไขที่ GitLab ระบุว่า “บางอย่าง” อาจเกี่ยวกับการตั้งค่าอินสแตนซ์ เช่น การเปิดให้ลงทะเบียนผู้ใช้หรือโปรเจกต์สาธารณะ แต่ยังไม่ได้รับการยืนยัน
ผลกระทบ
GitLab แบบ self-managed เป็นศูนย์กลางของซอร์สโค้ด pipeline CI/CD และความลับที่ใช้ deploy ระบบขององค์กร การรันโค้ดบนเซิร์ฟเวอร์ GitLab ได้จึงหมายถึงการเข้าถึงซอร์สโค้ดทุกโปรเจกต์ ตัวแปรลับของ CI/CD เช่น คีย์คลาวด์และโทเค็น deploy รวมถึงโอกาสแก้ไขโค้ดหรือ pipeline เพื่อโจมตีห่วงโซ่อุปทานซอฟต์แวร์ต่อไปยังลูกค้าหรือระบบ production
ความเสี่ยงสูงสุดตกอยู่กับอินสแตนซ์ที่เปิดสู่อินเทอร์เน็ต เพราะช่องโหว่ไม่ต้องยืนยันตัวตน และ GitLab เป็นเป้าหมายที่ผู้โจมตีให้ความสำคัญต่อเนื่อง ช่องโหว่ CVSS 10 ของ GitLab เมื่อเดือนกันยายน (CVE-2026-85706) ก็ถูกใช้โจมตีจริงมาแล้ว (ดูโพสต์ 2026/09/116 ) จึงควรถือว่าช่องโหว่นี้มีโอกาสถูกนำไปสร้าง exploit จากการวิเคราะห์แพตช์ได้ในเวลาไม่นานเช่นกัน
คำแนะนำ
- อัปเดต GitLab CE/EE แบบ self-managed เป็น 19.4.2, 19.3.4 หรือ 19.2.8 ตามสายเวอร์ชันที่ใช้ทันที หากใช้เวอร์ชันเก่ากว่า 19.2 ให้ตรวจประกาศของ GitLab ว่าได้รับผลกระทบหรือไม่ และวางแผนอัปเกรดสายเวอร์ชันที่ยังได้รับการสนับสนุน
- ผู้ที่เปิดใช้การเชื่อมต่อ Ona ให้ทราบบั๊กหน้า merge request ใน 19.3.4 แต่อย่าเลื่อนการแพตช์ความปลอดภัยเพื่อรอ 19.3.5
- ระหว่างรอแพตช์ จำกัดการเข้าถึงอินสแตนซ์ GitLab ให้อยู่หลัง VPN หรือ allowlist IP ปิดการลงทะเบียนผู้ใช้แบบเปิด และทบทวนโปรเจกต์ที่ตั้งเป็นสาธารณะ
- หลังแพตช์ ตรวจล็อกของ GitLab และ runner หาไฟล์ CI/CD ที่มี regex ผิดปกติ process ลูกที่ไม่คาดคิดจากบริการ GitLab และการเข้าถึงตัวแปรลับของ CI/CD ที่ผิดปกติ
- หากสงสัยว่าถูกเจาะ ให้หมุนเวียนความลับทั้งหมดที่เก็บใน CI/CD variables, deploy key และ personal access token เพราะผู้โจมตีที่ยึดเซิร์ฟเวอร์ได้จะเข้าถึงความลับเหล่านี้ทั้งหมด
- ทำตามแนวทางเสริมความปลอดภัยของ GitLab เช่น จำกัดสิทธิ์ runner แยก runner ของโปรเจกต์สำคัญ และเปิด audit event
