สรุปสั้น
หน่วยงาน CISA ของสหรัฐฯ ออกคำเตือนเมื่อวันอังคารที่ 25 สิงหาคม 2569 ว่าช่องโหว่ร้ายแรง CVE-2026-60004 ใน Gitea แพลตฟอร์มจัดการซอร์สโค้ดแบบติดตั้งเอง กำลังถูกใช้โจมตีจริง พร้อมเพิ่มช่องโหว่นี้เข้าแคตตาล็อกช่องโหว่ที่ถูกใช้โจมตีแล้ว (Known Exploited Vulnerabilities หรือ KEV) ช่องโหว่ได้คะแนน CVSS 9.8 เป็นการรันโค้ดระยะไกลที่เปิดให้ผู้โจมตีซึ่งมีสิทธิ์เขียน repo ตามปกติ สั่งรันคำสั่งเชลล์ในฐานะบัญชีระบบปฏิบัติการที่ Gitea ใช้งานอยู่ ตัวช่องโหว่ถูกแพตช์ไปตั้งแต่เดือนก่อนในเวอร์ชัน 1.27.1 และกระทบทุกเวอร์ชันตั้งแต่ 1.17 เป็นต้นมา
จุดที่ทำให้ช่องโหว่นี้อันตรายกว่าตัวเลขสิทธิ์ที่ต้องใช้ คือค่าเริ่มต้นของ Gitea เปิดให้สมัครสมาชิกเองได้ ตามคำแนะนำของ Gitea ระบุว่า “endpoint diffpatch ของ Gitea สามารถถูกใช้ในทางที่ผิดเพื่อติดตั้งและรัน Git hook จากเนื้อหาที่ควบคุมโดย repository ได้” และ “เมื่อเปิดการลงทะเบียนแบบเปิดตามค่าเริ่มต้น ผู้เยี่ยมชมที่ไม่ผ่านการยืนยันตัวตนสามารถได้สิทธิ์เขียนที่ต้องใช้ด้วยการสมัครบัญชีและสร้าง repository” เท่ากับคนนอกอินเทอร์เน็ตสมัครบัญชีแล้วโจมตีได้ทันทีโดยไม่ต้องมีข้อมูลรับรองมาก่อน
CISA ไม่ได้เปิดเผยว่าการโจมตีเกิดขึ้นอย่างไรหรือใครอยู่เบื้องหลัง แต่มีกรณีจากนักพัฒนาแบบฟูลสแตกรายหนึ่งที่เผยแพร่บทวิเคราะห์ว่าเซิร์ฟเวอร์ Gitea ของตนถูกโจมตีด้วยช่องโหว่นี้เพื่อวางสคริปต์ปล่อยเพย์โหลดที่มีลักษณะเป็นตัวขุดเหรียญคริปโท จนผู้ให้บริการโฮสต์ต้องส่งอีเมลเตือนเรื่องการใช้ซีพียูเกินและจำกัดทรัพยากรของเครื่องเสมือน ทั้งนี้เว็บไซต์นี้เคยรายงานช่องโหว่ตัวเดียวกันไว้ตั้งแต่ตอนออกแพตช์แล้วใน 298 ข่าวนี้คือพัฒนาการใหม่ที่ยืนยันว่ามีการนำไปใช้โจมตีจริง
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 26 สิงหาคม พ.ศ. 2569 ว่า CISA ได้เพิ่ม CVE-2026-60004 เข้าแคตตาล็อก KEV โดยอธิบายลักษณะช่องโหว่ว่า “Gitea มีช่องโหว่การแทรกโค้ดที่เปิดให้ผู้โจมตีซึ่งมีสิทธิ์เขียน repository ส่ง patch ที่เป็นอันตรายไปยัง endpoint ของ diffpatch API เพื่อวาง Git hook ที่รันได้ แล้วสั่งรันคำสั่งเชลล์ในฐานะบัญชีบริการของ Gitea”
ช่องโหว่นี้ถูกค้นพบและรายงานโดยนักวิจัยความปลอดภัยชื่อ Shai rod หรือที่รู้จักในชื่อ NightRang3r กระทบ Gitea ทุกเวอร์ชันตั้งแต่ 1.17 และได้รับการแก้ไขในเวอร์ชัน 1.27.1 แม้การเรียก API ที่มีช่องโหว่จะต้องผ่านการยืนยันตัวตนและต้องมีสิทธิ์เขียน repository แต่การที่ Gitea เปิดให้ลงทะเบียนเองตามค่าเริ่มต้น ทำให้ผู้โจมตีจากภายนอกสร้างบัญชีและ repository ของตัวเองแล้วกดปุ่มโจมตีได้โดยไม่ต้องพึ่งข้อมูลรับรองที่มีอยู่เดิม
กรณีจริงที่ปรากฏต่อสาธารณะมาจากนักพัฒนาชื่อ Andrey หรือ @Causelof ซึ่งเผยแพร่บทวิเคราะห์บนแพลตฟอร์มบล็อกของรัสเซียชื่อ Habr เมื่อสัปดาห์ก่อน โดยเล่าว่าเรื่องเริ่มจากอีเมลแจ้งเตือนของผู้ให้บริการโฮสต์ HOSTKEY ที่ระบุว่าเซิร์ฟเวอร์เสมือนของเขาใช้กำลังประมวลผลเกิน 70 เปอร์เซ็นต์ต่อเนื่องเป็นเวลานานจนผิดเงื่อนไขการให้บริการ ผู้ให้บริการจึงจำกัดทรัพยากรซีพียูของเครื่องนั้นชั่วคราว
Andrey ระบุว่าค่าตั้งค่าที่เปิดทางให้เกิดเรื่องคือ DISABLE_REGISTRATION = false ซึ่งหมายความว่าใครก็สมัครบัญชีได้เอง, REGISTER_EMAIL_CONFIRM = false ที่ไม่บังคับยืนยันอีเมล, ENABLE_OPENID_SIGNUP = true ที่เปิดให้สมัครผ่าน OpenID และ REQUIRE_SIGNIN_VIEW = false ที่ไม่บังคับให้ล็อกอินก่อนดูหน้าเว็บหรือเรียก API เขาสรุปว่า “การที่เปิดการลงทะเบียนแบบเปิดไว้ที่นี่มีนัยสำคัญ เพราะมันเชื่อมโยงกับตัวช่องโหว่โดยตรง ผู้ใช้ใหม่สามารถสมัคร สร้าง repository ของตัวเอง และได้สิทธิ์เขียนที่จำเป็นภายใน repository นั้น” พร้อมระบุว่า SSH ของ Gitea ไม่ได้เปิดออกสู่ภายนอก เส้นทางโจมตีจึงมาทาง HTTPS
หลังเจาะเข้ามาได้ สคริปต์ปล่อยเพย์โหลดจะเคลียร์ตัวแปร LD_PRELOAD และ LD_LIBRARY_PATH ค้นหาโปรเซสที่ใช้ซีพียูสูง พยายามหยุดโปรเซสคู่แข่ง แล้วดึงเพย์โหลดที่ตรงกับสถาปัตยกรรมของระบบมาเขียนลงดิสก์ รันขึ้นมา และลบไฟล์ทิ้งหลังรันเสร็จ อย่างไรก็ตามยังไม่มีใครยืนยันได้ว่าเพย์โหลดขั้นถัดไปคืออะไร เพราะเจ้าของเครื่องไม่ได้วิเคราะห์เนื้อไฟล์ และระบุเองว่า “ผมไม่มีข้อมูลยืนยันเกี่ยวกับ mining pool กระเป๋าเงิน ตระกูลของตัวขุด หรือผู้ดำเนินการรายใดรายหนึ่ง” สิ่งที่ยืนยันได้จึงมีเพียงพฤติกรรมการใช้ซีพียูที่สอดคล้องกับแคมเปญ cryptojacking ที่เล็ง Gitea ที่มีช่องโหว่
ยังไม่ชัดเจนว่า CISA เพิ่มช่องโหว่นี้เข้า KEV เพราะกรณีดังกล่าวโดยตรง หรือเพราะพบหลักฐานการโจมตีเซิร์ฟเวอร์ Gitea ที่ยังไม่แพตช์ในสหรัฐฯ โดยหน่วยงานรัฐบาลกลางถูกกำหนดให้ต้องแพตช์ภายในวันที่ 28 สิงหาคม 2569 พร้อมจัดลำดับความสำคัญของการอัปเดตตามความเสี่ยง
วิธีการโจมตี
หัวใจของช่องโหว่อยู่ที่ endpoint ของ diffpatch API ซึ่งรับ patch จากผู้ใช้แล้วนำไปใช้กับ repository เมื่อเนื้อหาของ patch ถูกควบคุมโดยผู้โจมตี จึงสามารถวางไฟล์ลงในไดเรกทอรี hook ของ Git ได้ และ Git hook คือสคริปต์ที่ถูกเรียกทำงานอัตโนมัติเมื่อเกิดเหตุการณ์บน repository ผลคือคำสั่งของผู้โจมตีถูกรันด้วยสิทธิ์ของบัญชีระบบปฏิบัติการที่ Gitea ใช้ ไม่ใช่สิทธิ์ของผู้ใช้ในเว็บ
เงื่อนไขที่ต้องมีคือสิทธิ์เขียน repository ซึ่งฟังดูเหมือนกำแพง แต่ในทางปฏิบัติแทบไม่เป็นกำแพงเลย เพราะ Gitea เปิดให้สมัครสมาชิกเองตามค่าเริ่มต้น ผู้โจมตีจึงสมัครบัญชี สร้าง repository ของตัวเอง แล้วได้สิทธิ์เขียนใน repository นั้นครบถ้วนภายในไม่กี่วินาที เส้นทางนี้อธิบายว่าทำไมช่องโหว่ที่ต้องยืนยันตัวตนจึงได้คะแนน CVSS สูงถึง 9.8
ในกรณีที่มีการเปิดเผย ผู้โจมตีไม่ได้ใช้ประโยชน์เพื่อขโมยซอร์สโค้ดหรือฝังตัวระยะยาว แต่เลือกทางที่ให้ผลตอบแทนทันทีคือรันตัวขุดเหรียญ ลำดับการทำงานของสคริปต์สะท้อนพฤติกรรมมาตรฐานของ cryptojacking บนลินุกซ์ ตั้งแต่การล้างตัวแปรที่อาจถูกใช้ดักจับหรือแทรกไลบรารี การไล่ฆ่าโปรเซสคู่แข่งเพื่อผูกขาดกำลังประมวลผลของเครื่อง ไปจนถึงการลบไฟล์ทิ้งหลังรันเพื่อลดร่องรอยบนดิสก์ ซึ่งทำให้การวิเคราะห์ย้อนหลังทำได้ยาก
ผลกระทบ
Gitea เป็นซอฟต์แวร์ที่คนเลือกใช้เพราะต้องการเก็บซอร์สโค้ดไว้กับตัว เซิร์ฟเวอร์เหล่านี้จึงมักอยู่ในมือทีมเล็กหรือผู้ดูแลคนเดียว และมักไม่ได้อยู่ในกระบวนการจัดการแพตช์ที่เป็นทางการเหมือนระบบกลางขององค์กร การที่ช่องโหว่เข้า KEV จึงสำคัญกว่าที่ตัวเลข CVSS บอก เพราะยืนยันว่ามีคนกำลังไล่สแกนหาเป้าหมายอยู่จริง
ความเสียหายที่เห็นในกรณีตัวอย่างคือค่าประมวลผลที่ถูกขโมยและบริการถูกจำกัดโดยผู้ให้บริการโฮสต์ แต่ต้องไม่ลืมว่าผู้โจมตีที่รันคำสั่งด้วยสิทธิ์บัญชีบริการของ Gitea ได้ ก็อยู่ในตำแหน่งที่จะอ่านทุก repository บนเครื่องนั้น รวมถึงกุญแจ โทเคน และไฟล์ตั้งค่าที่นักพัฒนาเผลอคอมมิตลงไป การขุดเหรียญจึงเป็นการใช้สิทธิ์ที่ได้มาแบบเบาที่สุด ไม่ใช่ขีดจำกัดของความเสียหาย
อีกบทเรียนคือค่าเริ่มต้นของซอฟต์แวร์เป็นส่วนหนึ่งของพื้นผิวการโจมตี ตัวเลือกที่ตั้งใจให้ใช้งานง่ายอย่างการเปิดลงทะเบียนเองและไม่บังคับล็อกอินก่อนดูหน้าเว็บ ได้เปลี่ยนช่องโหว่ที่ต้องมีบัญชีให้กลายเป็นช่องโหว่ที่คนนอกใช้ได้ทันที ผู้ดูแลที่ประเมินความเสี่ยงจากคำว่า “ต้องยืนยันตัวตนก่อน” เพียงอย่างเดียวจึงมีโอกาสประเมินต่ำกว่าความจริงมาก
คำแนะนำ
- อัปเดต Gitea เป็นเวอร์ชัน 1.27.1 หรือใหม่กว่าโดยเร็วที่สุด เนื่องจากมีการยืนยันการโจมตีจริงและ CISA กำหนดเส้นตายให้หน่วยงานรัฐบาลกลางสหรัฐฯ ภายใน 28 สิงหาคม 2569
- หากยังอัปเดตไม่ได้ทันที ให้ตั้ง DISABLE_REGISTRATION = true เพื่อปิดการสมัครสมาชิกเอง และพิจารณาเปิด REQUIRE_SIGNIN_VIEW เพื่อไม่ให้คนนอกเรียก API ได้
- ตรวจไดเรกทอรี hook ของทุก repository บนเซิร์ฟเวอร์ว่ามีสคริปต์ที่ไม่ได้ตั้งใจวางไว้หรือไม่ โดยเฉพาะไฟล์ที่ถูกสร้างหรือแก้ไขหลังวันที่ออกแพตช์
- ตรวจสอบการใช้ซีพียูย้อนหลังและโปรเซสแปลกปลอม รวมถึงบัญชีผู้ใช้ที่ถูกสร้างขึ้นใหม่โดยไม่มีที่มา ซึ่งเป็นสัญญาณตรงของการใช้ช่องทางลงทะเบียนแบบเปิด
- หากพบร่องรอยการถูกโจมตี ให้ถือว่าความลับทั้งหมดบนเครื่องนั้นรั่วไหลแล้ว และหมุนเวียนกุญแจ SSH โทเคน API และข้อมูลรับรองที่เก็บอยู่ใน repository ทั้งหมด
- จำกัดการเข้าถึงหน้าเว็บของ Gitea ให้อยู่หลัง VPN หรือรายการอนุญาตไอพี หากไม่มีความจำเป็นต้องเปิดสู่อินเทอร์เน็ตสาธารณะ
