ภัยคุกคามการโจมตีซัพพลายเชนของ CodeQL – เหตุการณ์ด้านความปลอดภัยที่เริ่มจาก GitHub Secret Key ที่ถูกเปิดเผย
(praetorian.com)- GitHub Secret (Secret) ที่ถูกเปิดเผยต่อสาธารณะ ทำให้ CodeQL ซึ่งเป็นเครื่องมือวิเคราะห์แบบสแตติกของ GitHub เสี่ยงต่อการโจมตีแบบซัพพลายเชน
- คีย์ที่เป็นปัญหามีผลใช้งานอยู่เป็นเวลา 1.022 วินาที และภายในช่วงเวลาดังกล่าว ผู้โจมตีสามารถ รันโค้ดตามอำเภอใจใน GitHub Actions workflow ได้
- ช่องโหว่นี้ถูกขึ้นทะเบียนเป็น CVE สาธารณะแล้ว: CVE-2025-24362
สถานการณ์ความเสียหายหลัก
ผู้โจมตีสามารถใช้ช่องโหว่นี้ดำเนินการโจมตีต่อไปนี้ได้:
- ขโมยซอร์สโค้ดจากรีโพซิทอรีที่ใช้ CodeQL (ละเมิดทรัพย์สินทางปัญญา)
- ขโมย Secret ของ GitHub Actions และใช้โจมตีต่อเนื่องในขั้นถัดไปได้
- รันโค้ดผ่าน CodeQL workflow ภายในโครงสร้างพื้นฐานภายในองค์กร
- สามารถขโมย Secret ของ workflow ที่ใช้ GitHub Actions Cache ได้ด้วย
การตรวจจับการโจมตีและกระบวนการทดลอง
- ทีมวิจัยของ Praetorian ได้พัฒนาเครื่องมือสำหรับสแกนหา Secret ที่อยู่ใน workflow artifact ซึ่งถูกสร้างขึ้นจาก GitHub Actions
- พบ debug artifact ที่มี Secret อยู่ภายใน ในรีโพซิทอรีที่เกี่ยวข้องกับ CodeQL
- ได้สร้างและทดสอบ เครื่องมือ PoC
artifact_racer.pyเพื่อพิสูจน์ว่าในช่วงที่คีย์ยังใช้งานได้ ผู้โจมตีสามารถสร้าง branch/tag และ push ไฟล์ได้
ผลการทดลองสำคัญ
- ผู้โจมตีสามารถใช้โทเค็นดังกล่าวเพื่อ:
- สร้าง branch ใหม่
- push ไฟล์
- เพิ่ม tag
- โดยค่าเริ่มต้น CodeQL อ้างอิงแท็ก
v3และผู้โจมตีสามารถเขียนทับแท็กนี้ได้ → สามารถกระจายโค้ดอันตรายไปยังผู้ใช้ CodeQL ทั้งหมดได้
ความเป็นไปได้ในการแพร่กระจาย: ทำไมจึงอันตราย?
- ผู้ใช้ส่วนใหญ่ไม่ได้ตั้งค่า CodeQL ด้วยตนเอง แต่ กดปุ่ม "Enable CodeQL" ในการตั้งค่ารีโพซิทอรีของ GitHub
- workflow ที่ถูกตั้งค่าอัตโนมัติในกรณีนี้จะอ้างอิงรีโพซิทอรี
github/codeql-actionและ อิงตามแท็ก v3 - หากผู้โจมตีเขียนทับแท็ก v3 ด้วยคอมมิตที่เป็นอันตราย ก็จะทำให้ มีการรันโค้ดอันตรายโดยอัตโนมัติในโปรเจกต์จำนวนมาก
ความเป็นไปได้ของการโจมตีเพิ่มเติม: การวางยาพิษแคช (Cache Poisoning)
- CodeQL workflow เริ่มต้น ใช้ GitHub Actions Cache
- ด้วยวิธีนี้ ผู้โจมตีสามารถ ฉีดแคชอันตรายเข้าไปใน build pipeline และใน workflow ถัดไปก็สามารถ ขโมย Secret และเข้าถึงระบบภายในได้
- เป้าหมายความเสียหายที่โดดเด่น:
การตอบสนองและแพตช์ของ GitHub
- หลังจากมีการรายงานช่องโหว่เมื่อ 22 มกราคม 2025 GitHub ได้ดำเนินการภายใน 3 ชั่วโมงดังนี้:
- หยุด workflow ที่มีช่องโหว่
- ส่ง PR เพื่อป้องกันการอัปโหลด Secret
- ปล่อยแพตช์เวอร์ชัน: CodeQL Action v3.28.3
- คำแนะนำด้านความปลอดภัยอย่างเป็นทางการ: GHSA-vqf5-2xx6-9wfm
แนวทางรับมือ
- เมื่อต้องอัปโหลด artifact ใน workflow ควร จำกัดไฟล์ที่จะอัปโหลด
- ระวังการรวมไฟล์จาก environment variable หรือไฟล์ในไดเรกทอรี
.git/config,_temp/ GITHUB_TOKENควร ให้สิทธิ์แบบอ่านอย่างเดียวเท่านั้น- แนะนำให้ สแกนหา Secret ก่อนอัปโหลด (ใช้เครื่องมืออย่าง
Nosey Parker)
บทสรุป
- แม้ใช้การตั้งค่าเริ่มต้นของ CodeQL ก็ยังอาจทำให้ โปรเจกต์จำนวนมากเสี่ยงต่อการโจมตีแบบซัพพลายเชนได้
- ช่องโหว่ด้านความปลอดภัยของ GitHub Actions ยังคงเป็นภัยคุกคามร้ายแรง และชุมชนจำเป็นต้องให้ความสนใจและวางกลยุทธ์ป้องกันอย่างต่อเนื่อง
ข้อมูลที่เกี่ยวข้อง
- ข้อมูล CVE: CVE-2025-24362
- PoC branch: testpoc
- ลิงก์คอมมิต: Commit
- ลิงก์แท็ก: Tag
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News