กลไกการป้องกันที่ 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:

     

  1. NPM ทำการติดตั้งแพ็กเกจที่เป็น dependency จาก Git repository
  2. ไฟล์การกำหนดค่าที่เป็นอันตราย เช่น ‘.npmrc’ ภายใน Git repository สามารถทำการเขียนทับ (override) พาธของ Git binary ได้
  3. การเขียนทับนี้ทำให้สามารถรันโค้ดได้โดยสมบูรณ์ (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) โดยเฉพาะอย่างยิ่งจากแหล่งภายนอก

      
     

Source: https://www.bleepingcomputer.com/news/security/hackers-can-bypass-npms-shai-hulud-defenses-via-git-dependencies/

   

Share this content:

Leave a Reply

Your email address will not be published. Required fields are marked *