3 คะแนน โดย GN⁺ 2025-03-16 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • GitHub Action ยอดนิยมที่ใช้ติดตามการเปลี่ยนแปลงของแต่ละ branch ถูกใช้โจมตีผ่านคอมมิตที่ถูกแฮ็ก โดยมีความพยายาม รั่วไหล CI/CD secrets
  • มี Repo ได้รับผลกระทบ 23,000 แห่ง และ GitHub ได้ลบแอ็กชันนี้ออกไปแล้ว จึงไม่สามารถใช้งานได้อีกต่อไป
  • ควร เปลี่ยนไปใช้แอ็กชันทดแทน และเนื่องจากมี ความเป็นไปได้ที่ secrets จะถูกเปิดเผย ใน workflow log แบบสาธารณะ จึงต้องตรวจสอบและ หมุนเวียนคีย์ทันที
  • Harden-Runner ของ StepSecurity เป็นผู้ค้นพบ และกำลังแจกจ่ายแอ็กชันทดแทนที่เสริมความปลอดภัย step-security/changed-files ให้ใช้ฟรี

สรุปเหตุการณ์

  • tj-actions/changed-files ถูกใช้งานใน repository มากกว่า 23,000 แห่ง และเกิดการแฮ็กขึ้น
    • ผู้โจมตีแก้ไขโค้ดของแอ็กชันและชี้แท็กเวอร์ชันใหม่ไปยังคอมมิตอันตราย
    • ส่งผลให้ CI/CD secrets ถูกพิมพ์ออกมาใน GitHub Actions build log
  • มีความเป็นไปได้ว่า secrets จะถูกเปิดเผยใน workflow log ที่เปิดสาธารณะ
  • พบปัญหานี้หลังจาก Harden-Runner ตรวจพบ endpoint ที่ไม่คาดคิด
  • สคริปต์ Python อันตรายทำให้เกิดการ dump secrets จากกระบวนการ Runner Worker
  • ทุกแท็กถูกชี้ไปยัง malicious commit hash เดียวกัน (0e58ed8671d6b60d0890c21b07f8835ace038e67)

มาตรการตอบสนองของ GitHub

  • GitHub ได้ลบแอ็กชัน tj-actions/changed-files และหยุดการใช้งานแล้ว
  • CVE อย่างเป็นทางการคือ CVE-2025-30066

วิธีดำเนินการกู้คืน

  • 1. ใช้แอ็กชันทดแทนด้านความปลอดภัยที่ StepSecurity จัดเตรียมไว้

    • เปลี่ยนแอ็กชัน tj-actions/changed-files เป็น step-security/changed-files@v45
  • 2. ลบการอ้างอิง tj-actions/changed-files ทั้งหมด

    • ค้นหาและลบการอ้างอิง tj-actions/changed-files ใน codebase:
      git grep -l "tj-actions/changed-files"  
      
  • 3. ตรวจสอบ log การรันของ GitHub Actions workflow

    • ต้องตรวจสอบ log การรันล่าสุดว่า secrets รั่วไหลหรือไม่
    • หากพบ secrets ที่รั่วไหล ต้องหมุนเวียน (รีเซ็ต) ทันที
  • 4. ตั้งค่า allowlist ของ GitHub Actions

  • กำหนด allowlist ให้รันเฉพาะ GitHub Actions ที่เชื่อถือได้:
    • สามารถตั้งค่าได้ใน GitHub Settings:
      • Settings → Actions → Allow select actions
  • 5. ตั้งค่า StepSecurity Harden-Runner

    • สามารถตั้งค่าให้ Harden-Runner ตรวจสอบ network traffic และการรัน workflow ได้

ขั้นตอนถัดไป

  • รายงานปัญหาไปยัง GitHub เรียบร้อยแล้ว → GitHub issue: #2463
  • repository tj-actions/changed-files ถูกลบแล้ว
  • ได้รับการลงทะเบียนอย่างเป็นทางการเป็น CVE-2025-30066
  • สามารถตรวจจับและป้องกันปัญหาความปลอดภัยลักษณะคล้ายกันได้ผ่าน StepSecurity Harden-Runner
  • แนะนำให้ตั้งค่า Harden-Runner เพื่อเสริมความแข็งแกร่งด้านความปลอดภัยและทำ monitoring แบบเรียลไทม์

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

 
dl57934 2025-03-16

เมื่อคืนยังใช้ไม่ได้อยู่เลย แต่ตอนนี้กลับมาใช้ได้อีกแล้ว

 
GN⁺ 2025-03-16
ความเห็นจาก Hacker News
  • ผู้สร้างและผู้ดูแล Renovate อธิบายสถานการณ์การโจมตี

    • ผู้โจมตีมีสิทธิ์เขียนในรีโพซิทอรี tj-actions/changed-files
    • ผู้โจมตีปลอมแปลงคอมมิตของ Renovate เพื่ออำพรางคอมมิตล่าสุด
    • การปลอมแปลงนี้ไม่ได้มีไว้เพื่อหลอก PR แต่เป็นเพียงการสร้างความสับสน
    • คอมมิตถูกแสดงเป็น Unverified และคนส่วนใหญ่ก็ไม่ได้บังคับให้ใช้เฉพาะคอมมิตที่มีลายเซ็น
    • Renovate Bot ตัวจริงจะเสนอ PR เพื่ออัปเดต dependency
    • บางคนเปิดใช้การรวมอัตโนมัติไว้ แต่ไม่ใช่ค่าตั้งต้น
    • เหตุการณ์นี้เตือนอีกครั้งว่าหลายคนเข้าใจผิดว่า git tag เป็นสิ่งที่เปลี่ยนแปลงไม่ได้
  • ในช่วงไม่กี่ปีที่ผ่านมา ความเชื่อถือต่อ dependency และส่วนขยายของบุคคลที่สามลดลง

    • ถ้าแพ็กเกจ npm มี dependency จำนวนมากก็จะไม่ติดตั้ง
    • ไม่ติดตั้งส่วนขยายของ vscode หรือ chrome
    • มักมีการแทรกมัลแวร์หรือเปลี่ยนไลเซนส์เกิดขึ้นบ่อย
    • เมื่อดู dependency tree ของ eslint ก็ทำให้สงสัยว่าควรเชื่อถือทุกอย่างได้จริงหรือไม่
  • รีโพซิทอรีกลับมาออนไลน์อีกครั้งแล้ว และนักพัฒนาได้ให้คำอธิบาย

    • การโจมตีเกิดจากโทเค็น PAT ของบัญชี @tj-actions-bot
    • มีการเพิ่มความปลอดภัยของบัญชีแล้ว และ GitHub ได้เพิกถอน PAT ที่ถูกเจาะ
  • มีการตรวจสอบ github_events ใน Clickhouse เพื่อยืนยันบัญชีที่ถูกใช้ในการโจมตี

    • บัญชี "2ft2dKo28UazTZ", "mmvojwip" น่าสงสัย
  • เป็นเรื่องน่าตกใจที่วิธีรัน CI/CD คือการอ้างอิงรีโพซิทอรีตามอำเภอใจบน GitHub

    • ปัญหานี้ยิ่งรุนแรงขึ้นจากการเพิ่มขึ้นของ LLMs
    • งานสำคัญควรรันด้วยตนเอง
  • ผู้ร่วมก่อตั้ง StepSecurity อธิบายวิธีที่ตรวจพบเหตุการณ์ด้านความปลอดภัย

    • Harden-Runner ตรวจจับความผิดปกติได้ด้วยการมอนิเตอร์ network call ของเวิร์กโฟลว์ GitHub Actions
  • ปัญหาคือรูปแบบการใช้งาน GitHub Actions ตามปกติอาศัย git tag ที่ไม่คงสภาพ

    • อัลกอริทึมแฮช SHA-1 สามารถเกิด collision ได้ จึงจำเป็นต้องรองรับ SHA-256
  • กำลังจะมีการนำ GitHub Actions แบบ immutable มาใช้

    • ควร fork Actions หรือใช้ commit hash
  • โปรเจกต์ maven-lockfile อธิบาย PR ที่ถูกรวมอัตโนมัติ

    • Renovate Bot ตัวจริงรวมคอมมิตของ Renovate Bot ปลอมโดยอัตโนมัติ
  • GitHub Actions ควรใช้ lockfile สำหรับ dependency

    • รูปแบบ Semver เป็นทางออกที่ดีในการแก้ปัญหา