กลไกการป้องกันที่ NPM นำมาใช้หลังจากถูกโจมตีแบบซัพพลายเชน ‘Shai-Hulud’ มีจุดอ่อนที่ทำให้ผู้ไม่หวังดีสามารถหลีกเลี่ยงการป้องกันเหล่านั้นได้ผ่านการพึ่งพา Git (Git dependencies) นักวิจัยด้านความปลอดภัยของ Koi ค้นพบช่องโหว่ PackageGate ในเครื่องมือจัดการแพ็กเกจ JavaScript หลายตัว เช่น pnpm, vlt, Bun และ NPM โดย NPM ได้ปฏิเสธรายงานโดยระบุว่า ‘ทำงานได้ตามที่คาดไว้’ แม้ว่าจะมีการค้นพบช่องทางการรันโค้ดที่เป็นอันตรายโดยการเขียนทับพาธของ Git binary
Severity: สูง
System Impact:
- NPM (Node Package Manager)
- pnpm
- vlt
- Bun
- JavaScript ecosystem
- Git repositories
- GitHub
Technical Attack Steps:
- NPM ทำการติดตั้งแพ็กเกจที่เป็น dependency จาก Git repository
- ไฟล์การกำหนดค่าที่เป็นอันตราย เช่น ‘.npmrc’ ภายใน Git repository สามารถทำการเขียนทับ (override) พาธของ Git binary ได้
- การเขียนทับนี้ทำให้สามารถรันโค้ดได้โดยสมบูรณ์ (full code execution) แม้ว่าจะมีการตั้งค่า ‘–ignore-scripts=true’ เพื่อป้องกันการรันสคริปต์ระหว่างการติดตั้งก็ตาม
Recommendations:
Short Term:
- ผู้ใช้ NPM ควรระมัดระวังและตรวจสอบเนื้อหาของแพ็กเกจที่ติดตั้งอย่างละเอียด โดยเฉพาะอย่างยิ่งแพ็กเกจที่มี Git dependencies
- สำหรับผู้ใช้ pnpm, vlt และ Bun ควรตรวจสอบให้แน่ใจว่าได้อัปเดตเป็นเวอร์ชันที่ได้รับการแก้ไขช่องโหว่แล้ว (Bun 1.3.5, pnpm สำหรับ CVE-2025-69263 และ CVE-2025-69264)
- หลีกเลี่ยงการติดตั้งแพ็กเกจจากแหล่งที่ไม่น่าเชื่อถือ
Long Term:
- NPM และ GitHub ควรพิจารณาปรับปรุงกลไกการป้องกันเพิ่มเติมเพื่อป้องกันการหลีกเลี่ยงผ่าน Git dependencies
- โครงการต่างๆ ควรนำการเผยแพร่ที่น่าเชื่อถือ (trusted publishing) และโทเค็นการเข้าถึงแบบละเอียด (granular access tokens) พร้อมบังคับใช้การยืนยันตัวตนแบบสองขั้นตอน (2FA) มาใช้ เพื่อเสริมสร้างความปลอดภัยของซัพพลายเชนซอฟต์แวร์
- ผู้พัฒนาควรตรวจสอบและทำความเข้าใจถึงความเสี่ยงที่เกี่ยวข้องกับการพึ่งพา (dependencies) โดยเฉพาะอย่างยิ่งจากแหล่งภายนอก
Share this content: