• เกิดการโจมตีแบบ supply chain ในระบบนิเวศ NPM โดยมีการฝัง มัลแวร์แบบแพร่กระจายตัวเอง ลงในแพ็กเกจมากกว่า 40 รายการ รวมถึง @ctrl/tinycolor ที่ได้รับความนิยม ทำให้ซีเคร็ตในสภาพแวดล้อมการพัฒนาและแม้แต่ข้อมูลรับรองของ CI/CD สามารถติดเชื้อแบบลูกโซ่ได้ โดยเวอร์ชันที่ติดเชื้อถูกลบออกจาก npm แล้ว
  • เพย์โหลดของการโจมตีจะรัน Webpack bundle (bundle.js, ~3.6MB) แบบอะซิงก์ระหว่างขั้นตอนติดตั้ง npm และทำ การเก็บรวบรวม credentials ในวงกว้าง ผ่านตัวแปรสภาพแวดล้อม ระบบไฟล์ และ cloud SDK
  • ลอจิกอันตรายใช้ NpmModule.updatePackage เพื่อบังคับแพตช์และเผยแพร่แพ็กเกจอื่น ทำให้เกิด การแพร่กระจายแบบต่อเนื่อง, และฉีดเวิร์กโฟลว์ shai-hulud เข้าไปใน GitHub Actions เพื่อขโมยซีเคร็ตขององค์กรด้วย toJSON(secrets)
  • ข้อมูลที่รวบรวมได้จะถูกส่งออกโดยการสร้าง ที่เก็บ GitHub แบบสาธารณะชื่อ ‘Shai-Hulud’ ทำให้ข้อมูลรั่วไหลภายใต้ภาพลักษณ์ของกิจกรรมการพัฒนาปกติ และมีความสามารถในการหลบเลี่ยงการตรวจจับสูง
  • มีการเข้าถึงโทเค็นและ metadata endpoint ของ AWS/GCP/Azure/NPM/GitHub รวมถึงการค้นหาซีเคร็ตโดยอาศัย TruffleHog อย่างแนบเนียน
  • จำเป็นต้องลบแพ็กเกจทันที ทำความสะอาดรีโพซิทอรี เปลี่ยนข้อมูลรับรองทั้งหมด พร้อมทั้ง ตรวจสอบ CloudTrail/GCP Audit logs, บล็อก webhook, และนำ branch protection/Secret Scanning/นโยบาย cooldown มาใช้

Affected Packages

  • มีรายงานว่าได้รับผลกระทบ รวม 195 แพ็กเกจ/เวอร์ชัน โดยตัวอย่างสำคัญได้แก่ @ctrl/tinycolor(4.1.1, 4.1.2), หลายแพ็กเกจในเนมสเปซ @ctrl/, กลุ่มโมดูล @crowdstrike/, ngx-bootstrap/ngx-toastr/ng2-file-upload/ngx-color ครอบคลุมทั้งระบบนิเวศ Angular/เว็บ UI, สแตกมือถือ @nativescript-community/ และ @nstudio/, ทูลเชนด้านชีววิทยาศาสตร์ของ teselagen/, รวมถึง ember-*, koa2-swagger-ui, pm2-gelf-json, wdio-web-reporter
  • สำหรับ เวอร์ชันที่แน่นอน ของแต่ละแพ็กเกจ ควรอ้างอิงตารางในต้นฉบับและ ตรวจสอบไขว้อย่างละเอียด ว่ามีการใช้งานเวอร์ชันดังกล่าวหรือไม่
    • ตัวอย่าง: @ctrl/ngx-emoji-mart 9.2.1, 9.2.2, @ctrl/qbittorrent 9.7.1, 9.7.2, ngx-bootstrap 18.1.4, 19.0.3–20.0.5, ng2-file-upload 7.0.2–9.0.1 เป็นต้น ซึ่งครอบคลุมในวงกว้าง

Immediate Actions Required

Identify and Remove Compromised Packages

  • ตรวจสอบว่ามีแพ็กเกจที่ติดเชื้อในโปรเจกต์หรือไม่: เช่นใช้ npm ls @ctrl/tinycolor เพื่อตรวจสอบ
  • ลบแพ็กเกจที่ติดเชื้อทันที: เช่นรัน npm uninstall @ctrl/tinycolor
  • ตรวจสอบร่องรอยในเครื่องจากการค้นหาแฮชของ bundle.js ที่ทราบแล้ว: ใช้ sha256sum | grep 46faab8a...

Clean Infected Repositories

  • ลบเวิร์กโฟลว์ GitHub Actions ที่เป็นอันตราย: ลบ .github/workflows/shai-hulud-workflow.yml
  • ตรวจหาและลบบรันช์ shai-hulud ที่ถูกสร้างบนรีโมต: ใช้ git ls-remote ... | grep shai-hulud แล้วตามด้วย git push origin --delete shai-hulud

Rotate All Credentials Immediately

  • จำเป็นต้อง เปลี่ยนข้อมูลรับรองทั้งหมด ได้แก่ NPM token, GitHub PAT/Actions secrets, SSH key, ข้อมูลรับรอง AWS/GCP/Azure, DB connection string, third-party token, CI/CD secrets เป็นต้น
  • ต้อง หมุนเวียนทั้งหมด รวมถึงรายการที่เก็บไว้ใน AWS Secrets Manager/GCP Secret Manager

Audit Cloud Infrastructure for Compromise

  • AWS: ตรวจสอบเวลาและรูปแบบของการเรียก BatchGetSecretValue, ListSecrets, GetSecretValue ใน CloudTrail และใช้ IAM Credential Report เพื่อตรวจหาการสร้างหรือใช้งานคีย์ที่ผิดปกติ
  • GCP: ตรวจสอบบันทึกการเข้าถึง Secret Manager ผ่าน Audit Logs และตรวจดูว่ามีเหตุการณ์ CreateServiceAccountKey หรือไม่

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น