1 คะแนน โดย GN⁺ 2025-04-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ยังคงเป็นภัยคุกคามร้ายแรง และชุมชนจำเป็นต้องให้ความสนใจและวางกลยุทธ์ป้องกันอย่างต่อเนื่อง

ข้อมูลที่เกี่ยวข้อง

1 ความคิดเห็น

 
GN⁺ 2025-04-01
ความคิดเห็นจาก Hacker News
  • มีความเห็นว่าเมื่อ GitHub ออก immutable actions ก็อาจแก้ปัญหาการโจมตีได้มากกว่า 70%
    • คิดว่าปัญหารายสัปดาห์ของ GitHub จะผลักดันให้มีการออกสิ่งนี้
  • ไม่มีการกล่าวถึงว่าทำไมโทเค็นชั่วคราวจึงมีสิทธิ์สร้าง deployment ใหม่และสร้าง artifact attestations ได้
    • แม้จะปิด debug logs เพื่อแก้ปัญหา แต่ก็ไม่มีคำตอบว่าได้ปรับสิทธิ์ของโทเค็นชั่วคราวให้เหมาะกับ code analysis engine มากขึ้นหรือไม่
  • ยิ่งมั่นใจมากขึ้นว่า CI และ CD ควรเป็นสภาพแวดล้อมที่แยกจากกันโดยสิ้นเชิง
    • การถูกเจาะของ CI ไม่ควรนำไปสู่การรั่วไหลของโทเค็นที่เกี่ยวข้องกับ CD
  • เวลาตอบสนองของ GitHub น่าประทับใจมาก
  • มีความเห็นว่าถ้าเป็นคนที่นามสกุล Prater ก็คงอยากเป็นเจ้าของ praetorian.com
  • การใช้ GitHub Actions แบบสาธารณะอาจก่อปัญหาได้ และการใช้งานโดยไม่วิเคราะห์ขั้นตอนของ workflow ยิ่งเสี่ยงกว่าเดิม
    • แนะนำให้ใช้ woodpecker หรือ CI builder ที่ยอดเยี่ยมอื่น ๆ (เช่น circle, travis, gitlab) แล้วโฮสต์เองแทน
  • มีการกล่าวว่าใช้ CodeQL กับ OpenZFS PR และ OpenZFS ไม่ได้รับผลกระทบ
    • โค้ดของ OpenZFS ไม่ใช่ความลับ
  • มีความเห็นว่าสงสัยว่าปัญหาได้รับการแก้ไขแล้วหรือยัง
  • มีคำบ่นว่าประสิทธิภาพของเว็บไซต์แย่มากจนแทบเลื่อนหน้าไม่ได้