สรุปสั้น

แคมเปญ supply chain attack ใหม่ชื่อ Miasma ฝัง backdoor ลงใน npm packages กลุ่ม @redhat-cloud-services อย่างน้อย 32 รายการ 96 เวอร์ชัน ซึ่งมียอดดาวน์โหลดรวมกว่า 117,000 ครั้งต่อสัปดาห์ Miasma เป็น variant ใหม่ของมัลแวร์ Mini Shai-Hulud ที่กลุ่มอาชญากร TeamPCP ปล่อยเป็น open-source จน threat actor รายอื่นนำ tooling ไปใช้ได้ ผู้โจมตีไม่ได้ใช้ typosquatting แต่เจาะระบบจริงของ Red Hat ผ่านบัญชีพนักงานและ GitHub Actions OIDC commit อันตรายจึงขึ้นสถานะ verified และ signed เหมือนของจริงทุกประการ

มัลแวร์ซ่อนอยู่ใน preinstall hook ของ package.json และทำงานทันทีที่ npm install เพื่อขโมย credentials จาก environment variables, ~/.npmrc, SSH keys, GitHub tokens และ CI/CD secrets จากนั้นใช้ token ที่ขโมยมาไล่หา repository ที่เข้าถึงได้ แล้วฝัง workflow อันตรายผ่าน GitHub API เพื่อแพร่ต่อ Red Hat ถอน packages ที่ได้รับผลกระทบแล้ว และยืนยันว่าการบุกรุกจำกัดอยู่ที่ internal development tooling

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 1 มิถุนายน พ.ศ. 2569 ว่าแคมเปญ supply chain ชื่อ Miasma โจมตี npm packages ทางการภายใต้ namespace @redhat-cloud-services เพื่อขโมย credentials และปล่อย worm ที่แพร่ตัวเองได้ นักวิจัยจาก Aikido Security, JFrog, Microsoft, OX Security, SafeDep, StepSecurity และ Wiz พบโค้ดอันตรายในหลาย packages ที่ใช้เป็น frontend components, API clients และ developer tooling ของ Red Hat Hybrid Cloud Console

การบุกรุกครั้งนี้เป็นการเจาะระบบจริง ไม่ใช่ typosquatting หลักฐานชี้ว่าจุดเริ่มต้น (patient zero) คือ บัญชี GitHub ของพนักงาน Red Hat ที่ถูกยึด แล้วถูกใช้ push orphan commits อันตรายเพื่อเลี่ยง code review packages ที่ปนเปื้อนถูก publish ผ่าน GitHub Actions OIDC ทำให้ Wiz Research สรุปว่า CI/CD pipeline ถูกบุกรุก ไม่ใช่บัญชีนักพัฒนาโดยตรง และ commit ที่ขึ้น verified กับ signed ทำให้ตรวจจับได้ยาก ส่วน OX Security พบ string “Miasma: The Spreading Blight” ครั้งแรกใน commit เมื่อวันที่ 29 พฤษภาคม พ.ศ. 2569 ซึ่งบ่งชี้ว่าผู้โจมตีอาจทดสอบมาก่อนหน้านั้น Red Hat ถอน packages ที่ได้รับผลกระทบออกจาก npm เกือบทั้งหมดภายในวันเดียวกัน

วิธีการโจมตี

การเจาะระบบ:

  • เจาะ GitHub Actions OIDC token ของพนักงาน Red Hat
  • Push malicious commits โดยหลีกเลี่ยง code review
  • Commit ปรากฏเป็น verified, signed — ยากต่อการตรวจจับ

Preinstall Hook:

  • ฝัง obfuscated script ใน scripts.preinstall ของ package.json
  • รันทันทีเมื่อมีการ npm install หรือ npm ci
  • ไม่ต้องการการกระทำใด ๆ จากผู้ใช้เพิ่มเติม

ข้อมูลที่ขโมย:

  • Environment variables ทั้งหมดใน CI/CD
  • ~/.npmrc tokens
  • SSH keys
  • GitHub tokens และ CI/CD secrets
  • GCP และ Azure cloud identities (variant ใหม่)

การแพร่กระจายตัวเอง:

  • Enumerate repositories ที่ token ที่ขโมยมาสามารถ write ได้
  • อ่าน action.yml ผ่าน GraphQL
  • Inject malicious workflow ผ่าน GitHub’s createCommitOnBranch API — ปรากฏเป็น signed commit
  • สร้าง persistence ผ่าน ~/.claude/settings.json และ .vscode/tasks.json

การตรวจจับ endpoint protection:

  • Miasma ตรวจหา CrowdStrike, SentinelOne, Carbon Black และ StepSecurity Harden-Runner ก่อนทำงาน

ผลกระทบต่อไทย

Supply chain attack ผ่าน npm เป็นภัยคุกคามที่ส่งผลต่อนักพัฒนาซอฟต์แวร์ไทยโดยตรง โดยเฉพาะทีมที่ใช้ Red Hat technologies หรือ OpenShift ในการพัฒนา cloud-native applications

CI/CD pipelines ที่รัน npm install กับ @redhat-cloud-services packages ในช่วง 1 มิถุนายน 2569 ควรถือว่า credentials ทั้งหมดถูก compromise และดำเนินการ rotate ทันที

สำหรับองค์กรไทยที่ใช้ Kubernetes/OpenShift ที่ขับเคลื่อนด้วย Red Hat cloud tooling ความเสี่ยงอาจขยายไปถึง cloud credentials ที่ CI/CD runner ถืออยู่ เช่น AWS, GCP หรือ Azure service accounts

เหตุการณ์นี้ยังเน้นย้ำความสำคัญของ software supply chain security ซึ่งยังเป็นจุดอ่อนของหลายองค์กรในไทยที่ยังไม่มีการ scan dependencies อย่างจริงจัง

คำแนะนำ

  1. Rotate credentials ทันที — หากติดตั้ง @redhat-cloud-services package ใด ๆ ตั้งแต่วันที่ 1 มิถุนายน 2569 ให้ rotate ทั้ง CI secrets, cloud credentials, SSH keys และ npm tokens ทันที
  2. ตรวจสอบ package versions — ดู lock files เพื่อตรวจว่ามีการใช้ versions ที่ได้รับผลกระทบหรือไม่
  3. ตรวจสอบ GitHub Actions workflows — ตรวจหา commits ที่เพิ่ม workflows ใหม่โดยไม่คาดคิด หรือ commits ที่มี description “Miasma: The Spreading Blight”
  4. ตรวจสอบ persistence — ตรวจหา ~/.claude/settings.json และ .vscode/tasks.json ที่ถูกสร้างขึ้นโดยไม่ทราบสาเหตุ
  5. ใช้ lock files และ integrity checks — เปิดใช้ npm ci แทน npm install และตรวจสอบ integrity ด้วย tools เช่น Socket.dev หรือ Snyk
  6. จำกัด OIDC token permissions — ลด scope ของ GitHub Actions OIDC tokens ให้น้อยที่สุดเท่าที่จำเป็น

แหล่งอ้างอิง