- เกิดการโจมตีแบบ 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 หรือไม่
ยังไม่มีความคิดเห็น