มัลแวร์ PhantomRaven
นักวิจัยด้านความปลอดภัยไซเบอร์ได้ค้นพบการโจมตีซัพพลายเชนซอฟต์แวร์ที่มีประสิทธิภาพสูง ซึ่งมุ่งเป้าไปที่ระบบนิเวศ npm พบแพ็กเกจอันตรายกว่า 100 รายการ ซึ่งสามารถขโมยข้อมูลประจำตัวนักพัฒนาที่ละเอียดอ่อนได้โดยตรงจากเครื่องที่ถูกบุกรุก รวมถึงโทเค็นการตรวจสอบสิทธิ์ ความลับ CI/CD และข้อมูลประจำตัว GitHub
แคมเปญที่มีชื่อรหัสว่า PhantomRaven เกิดขึ้นครั้งแรกในเดือนสิงหาคม พ.ศ. 2568 นับตั้งแต่นั้นมา ก็ได้ขยายไปยังไลบรารี npm จำนวน 126 ไลบรารี และได้รับการติดตั้งมากกว่า 86,000 ครั้ง ซึ่งแสดงให้เห็นถึงการแพร่กระจายและการนำแพ็คเกจที่เป็นอันตรายเหล่านี้ไปใช้อย่างรวดเร็ว
สารบัญ
แพ็คเกจอันตรายที่บินอยู่ใต้เรดาร์
แพ็คเกจที่ถูกทำเครื่องหมายไว้หลายรายการมีดังนี้:
- op-cli-installer – ดาวน์โหลด 486 ครั้ง
- การนำเข้าที่ไม่ได้ใช้ – ดาวน์โหลด 1,350 ครั้ง
- badgekit-api-client – ดาวน์โหลด 483 ครั้ง
- polyfill-corejs3 – ดาวน์โหลด 475 ครั้ง
- eslint-comments – ดาวน์โหลด 936 ครั้ง
สิ่งที่ทำให้ PhantomRaven อันตรายอย่างยิ่งคือการใช้ Remote Dynamic Dependencies (RDD) แทนที่จะดึงโค้ดจากรีจิสทรี npm อย่างเป็นทางการ แพ็กเกจอันตรายจะชี้ไปที่ HTTP URL ที่กำหนดเอง (packages.storeartifact.com) ซึ่งทำให้ npm สามารถดึงข้อมูล dependencies จากแหล่งภายนอกที่ไม่น่าเชื่อถือ ซึ่งหลีกเลี่ยงการป้องกันของ npmjs.com ได้อย่างมีประสิทธิภาพ
เครื่องสแกนความปลอดภัยแบบดั้งเดิมและเครื่องมือวิเคราะห์การอ้างอิงล้มเหลวในการตรวจจับ RDD เหล่านี้ เนื่องจากระบบอัตโนมัติมองว่าแพ็คเกจมี 'การอ้างอิง 0'
การโจมตีทำงานอย่างไร
ห่วงโซ่การโจมตีเริ่มต้นทันทีที่นักพัฒนาติดตั้งแพ็กเกจที่ดูเหมือนจะไม่เป็นอันตราย องค์ประกอบสำคัญประกอบด้วย:
ติดตั้งการดำเนินการ Hook ล่วงหน้า : แพ็คเกจนี้ประกอบด้วยสคริปต์วงจรชีวิตการติดตั้งล่วงหน้าที่ดำเนินการโหลดหลักโดยอัตโนมัติ
การดึงข้อมูลเพย์โหลดระยะไกล : สคริปต์ดึงการอ้างอิงที่เป็นอันตรายจากเซิร์ฟเวอร์ที่ควบคุมโดยผู้โจมตี
การแยกข้อมูล : เมื่อดำเนินการแล้ว มัลแวร์จะสแกนสภาพแวดล้อมของนักพัฒนาเพื่อหาที่อยู่อีเมล รวบรวมรายละเอียดสภาพแวดล้อม CI/CD บันทึกลายนิ้วมือระบบ (รวมถึง IP สาธารณะ) และส่งข้อมูลไปยังเซิร์ฟเวอร์ระยะไกล
ผู้โจมตีสามารถปรับเปลี่ยนเพย์โหลดได้ตามต้องการ โดยในขั้นต้นจะส่งโค้ดที่ไม่เป็นอันตรายเพื่อหลีกเลี่ยงการตรวจจับก่อนที่จะส่งการอัปเดตที่เป็นอันตรายเมื่อแพ็คเกจได้รับการยอมรับ
การใช้ประโยชน์จากจุดบอดของมนุษย์และ AI
การเลือกใช้ชื่อแพ็กเกจนั้นขึ้นอยู่กับเจตนา ผู้กระทำการคุกคามใช้กลยุทธ์ที่เรียกว่า slopsquatting ซึ่งโมเดลภาษาขนาดใหญ่ (LLM) จะเห็นภาพหลอนว่าเป็นชื่อแพ็กเกจที่ไม่มีอยู่จริงแต่ฟังดูน่าเชื่อถือ นักพัฒนาอาจเชื่อถือแพ็กเกจเหล่านี้เนื่องจากชื่อที่สมจริง โดยไม่รู้ถึงภัยคุกคามที่ซ่อนอยู่
ดังที่นักวิจัยสังเกต PhantomRaven เน้นย้ำถึงความซับซ้อนที่เพิ่มมากขึ้นของผู้โจมตี:
- การอ้างอิงแบบไดนามิกระยะไกลหลีกเลี่ยงการวิเคราะห์แบบคงที่
- ชื่อแพ็คเกจที่สร้างโดย AI ใช้ประโยชน์จากความไว้วางใจของนักพัฒนา
- สคริปต์วงจรชีวิตจะดำเนินการโดยอัตโนมัติโดยไม่ต้องมีการโต้ตอบจากผู้ใช้
แคมเปญนี้เน้นให้เห็นว่าผู้ไม่ประสงค์ดีได้ค้นพบวิธีใหม่ๆ ในการซ่อนโค้ดในระบบนิเวศโอเพนซอร์ส โดยใช้ประโยชน์จากช่องว่างในเครื่องมือความปลอดภัยแบบดั้งเดิม
เหตุใด npm จึงเป็นเป้าหมายหลัก
ระบบนิเวศ npm ที่มีข้อจำกัดในการเผยแพร่แพ็กเกจ ประกอบกับการดำเนินการสคริปต์ก่อนติดตั้ง ติดตั้ง และหลังติดตั้งโดยอัตโนมัติ ทำให้กลายเป็นเป้าหมายหลัก ผู้โจมตีสามารถซ่อนพฤติกรรมที่เป็นอันตรายไว้ในสคริปต์วงจรชีวิต โดยบ่อยครั้งที่นักพัฒนาไม่รู้ตัว ซึ่งแสดงให้เห็นถึงความจำเป็นในการเฝ้าระวังอย่างเข้มงวดและแนวปฏิบัติด้านความปลอดภัยที่แข็งแกร่งในสภาพแวดล้อมการพัฒนาสมัยใหม่