Git เร่งออกอัปเดตด่วน อุด 6 ช่องโหว่ความปลอดภัยร้ายแรง

วันนี้โปรเจกต์ Git ได้ประกาศปล่อยเวอร์ชันใหม่เพื่อแก้ไขช่องโหว่ด้านความปลอดภัย 6 รายการ ซึ่งรวมถึงความเสี่ยงในการถูกรันโค้ดตามอำเภอใจ (arbitrary code execution) เมื่อทำ recursive clone ใน repository ที่เป็นอันตราย รวมถึงปัญหาการเขียนไฟล์ไปยังตำแหน่งที่ไม่ถูกต้อง และความเสียหายของหน่วยความจำ (memory corruption) ระหว่างการประมวลผลการ merges หรือ binary patches
การแก้ไขครั้งนี้ครอบคลุมใน Git 2.56.1 และมีการพอร์ตย้อนกลับ (backports) ไปยังเวอร์ชันเก่า ได้แก่ Git 2.55.1, 2.54.1, 2.53.1, 2.52.1, 2.51.3 และ 2.50.2 ผู้ใช้งานควรอัปเดตเป็น Git 2.56.1 หรือเวอร์ชันที่ได้รับการแก้ไขในซีรีส์ที่ใช้งานอยู่ทันที รวมถึงอัปเดตแอปพลิเคชันที่มีการรวม Git ไว้ภายในด้วย
Vulnerabilities ใน Git
CVE-2026-111760: การรันโค้ดระหว่าง recursive clones โดยปกติ Git จะตรวจสอบพาธ (paths) ก่อนเขียนไฟล์ลงใน working tree เพื่อป้องกันการเขียนทับ metadata ของ repository อย่างไรก็ตาม พบว่าการตัดทอนเลขจำนวนเต็ม (integer truncation) ในการจัดการ index ของ Git อาจทำให้พาธที่ยาวมากผ่านการตรวจสอบในชื่อหนึ่ง แต่กลับถูกเขียนลงระบบด้วยชื่อที่สั้นกว่า
ผู้โจมตีสามารถใช้ช่องโหว่นี้แทนที่ไฟล์ .git ของ submodule ด้วย symbolic link ที่ชี้ไปยังไดเรกทอรีที่มีการตั้งค่าอันตรายหรือ hooks ซึ่งเมื่อ Git เรียกใช้ไดเรกทอรีดังกล่าวในภายหลัง จะส่งผลให้โค้ดที่ผู้โจมตีควบคุมถูกรันระหว่างการทำ recursive clone โดยการแก้ไขจะใช้วิธีปฏิเสธพาธของ index entry ที่ยาวเกินไปก่อนการตัดทอนค่าความยาว
[Advisory]
CVE-2026-113408: การทำ Path traversal ผ่าน HEAD ที่เซิร์ฟเวอร์ประกาศ
เมื่อทำการ clone repository ที่ว่างเปล่าด้วย Git protocol v2 เซิร์ฟเวอร์สามารถประกาศ HEAD symref ที่ชี้ไปยัง unborn branch ได้ ซึ่งเดิม Git ไม่ได้ตรวจสอบเป้าหมายของ symref ก่อนจัดเก็บในเครื่อง ทำให้เซิร์ฟเวอร์อันตรายสามารถระบุชื่อที่มีส่วนประกอบของ path-traversal เพื่อเขียนไฟล์ออกนอกไดเรกทอรีที่กำหนดได้
การแก้ไขในเวอร์ชันใหม่จะเพิ่มการตรวจสอบเป้าหมายที่ประกาศก่อนตอบรับ และตรวจสอบชื่อ reference รวมถึง symbolic-reference อื่นๆ ที่ได้รับผ่าน protocol v2 อย่างเข้มงวด
[Advisory]
CVE-2026-114467: Stack corruption เมื่อนำลายเซ็นออก
Git มีสมมติฐานเดิมว่าจะพบข้อความลายเซ็น GPG อย่างมากเพียงสองรายการ แต่หากเจอข้อความที่สร้างขึ้นพิเศษซึ่งมีลายเซ็นมากกว่านั้น อาจทำให้เกิดการเขียนข้อมูลเกินขอบเขตของ stack array ที่มีขนาดคงที่ ส่งผลให้เกิด memory corruption หรือการปฏิเสธการให้บริการ (denial of service) โดยเฉพาะในบริการโฮสติ้งที่ทำหน้าที่ merge ในนามผู้ใช้
การแก้ไขคือการเปลี่ยนจาก array ขนาดคงที่มาเป็นการจัดการข้อความที่มีจำนวนลายเซ็นเท่าใดก็ได้แทน
[Advisory]
CVE-2026-114469: การอ่านข้อมูลเกินขอบเขต (Out-of-bounds reads) เมื่อใช้ binary patches
แม้ Git จะปฏิเสธ patch ที่มีขนาดใหญ่เกิน 1 GiB แต่การตรวจสอบเดิมพิจารณาเพียงขนาดของไฟล์ที่ส่งมาเท่านั้น ซึ่ง binary patches ที่ถูกบีบอัดและเข้ารหัสอาจขยายตัวจนเกินขีดจำกัดเมื่อถูกนำไปใช้งานจริง จนทำให้เกิดการอ่านข้อมูลเกินขอบเขตและโปรแกรมแครชได้ ปัจจุบัน Git ได้เพิ่มการตรวจสอบขนาดที่ประกาศไว้ทันทีที่คลายบีบอัดก่อนเริ่มประมวลผล
[Advisory]
CVE-2026-105437: Heap corruption ระหว่างการ merges ขนาดใหญ่
กลไกการ merge ของ Git อาจเกิดการ overflow ของตัวเลขเมื่อต้องคำนวณหน่วยความจำสำหรับผลลัพธ์การ merge ขนาดใหญ่ หรือเมื่อมีข้อขัดแย้ง (conflicts) จำนวนมาก ซึ่งส่งผลให้การจัดสรรบัฟเฟอร์เล็กลงเกินไปและเกิดการเขียนข้อมูลทับ heap memory การแก้ไขได้เปลี่ยนไปใช้ประเภทข้อมูลที่รองรับขนาดใหญ่ขึ้นและตรวจสอบการคำนวณอย่างละเอียด
[Advisory]
CVE-2026-114466: การเข้าถึงระบบไฟล์ผ่าน fast-import streams
คำสั่ง git fast-import บางคำสั่งสามารถเข้าถึงไฟล์ภายนอก repository ได้ ซึ่งเดิมมีฟีเจอร์อย่าง rewrite-submodules-from, rewrite-submodules-to และ export-pack-edges ที่ขาดการป้องกัน ทำให้เสี่ยงต่อการถูกอ่านไฟล์หรือสร้างไฟล์โดยไม่ได้รับอนุญาต ตอนนี้ Git จะปฏิเสธการใช้ฟีเจอร์เหล่านี้ใน input stream เว้นแต่จะระบุ --allow-unsafe-features อย่างชัดเจน
[Advisory]
การเพิ่มความปลอดภัยเพิ่มเติม
นอกจากการอุดช่องโหว่ข้างต้นแล้ว เวอร์ชันนี้ยังเพิ่มการตรวจสอบ overflow ในการจัดสรร index entry ระหว่างกระบวนการ checkout และการประมวลผล tree เพื่อป้องกันไม่ให้ขนาดการจัดสรรถูกตัดทอนก่อนที่จะคัดลอกพาธลงสู่หน่วยความจำ
การปกป้องผู้ใช้ GitHub
GitHub ได้ดำเนินการปรับใช้การแก้ไขในทุกส่วนงาน ดังนี้:
- อัปเดตเรียบร้อยแล้วบน github.com และ GitHub Enterprise Cloud ทุกรูปแบบ
- ผู้ดูแลระบบ GitHub Enterprise Server ควรอัปเกรดเป็นเวอร์ชัน 3.19.15, 3.20.11, 3.21.9 หรือ 3.22.4 โดยเร็วที่สุด
- อยู่ระหว่างการประสานงานอัปเดตใน GitHub Desktop, GitHub Copilot, Codespaces และ Actions
อัปเดต Git
ผู้ใช้ควรติดตั้ง Git เวอร์ชันล่าสุดผ่านระบบปฏิบัติการหรือตัวแทนจำหน่ายทันที หากยังไม่สามารถอัปเดตได้ ควรหลีกเลี่ยงการทำ recursive clone, การ merge เนื้อหา หรือการประมวลผล binary patches จากแหล่งที่ไม่น่าเชื่อถือเพื่อลดความเสี่ยงเบื้องต้น
ความคิดเห็น (0)
เข้าสู่ระบบเพื่อร่วมแสดงความเห็น
สมัครสมาชิกมาเป็นคนแรกที่แสดงความเห็นกันเลยโบร
