การโจมตี Phishing บุกรุกแพ็กเกจพัฒนา JavaScript ยอดนิยม ติดตั้งมัลแวร์ในระบบ Windows

ทีมชุมชน BigGo
การโจมตี Phishing บุกรุกแพ็กเกจพัฒนา JavaScript ยอดนิยม ติดตั้งมัลแวร์ในระบบ Windows

การโจมตีแบบ phishing ที่ซับซ้อนได้บุกรุกแพ็กเกจพัฒนา JavaScript ที่ใช้กันอย่างแพร่หลายหลายตัวสำเร็จ ส่งผลกระทบต่อนักพัฒนาหลายพันคนทั่วโลก การโจมตีครั้งนี้มุ่งเป้าไปที่ JounQin ผู้ดูแลเครื่องมือจัดรูปแบบโค้ดยอดนิยม ผ่านอีเมลหลอกลวงที่นำไปสู่การเผยแพร่แพ็กเกจเวอร์ชันที่มีมัลแวร์สำหรับ Windows

เหตุการณ์นี้เริ่มต้นเมื่อ JounQin ตกเป็นเหยื่อของอีเมล phishing ที่ดูเหมือนมาจาก npm ซึ่งเป็นรีจิสทรีแพ็กเกจ JavaScript ผู้โจมตีสามารถเข้าถึงบัญชี npm ของเขาได้สำเร็จ และเผยแพร่เวอร์ชันที่ถูกบุกรุกของเครื่องมือพัฒนาที่จำเป็นหลายตัว รวมถึง eslint-config-prettier และ eslint-plugin-prettier ซึ่งเป็นแพ็กเกจที่ถือว่าจำเป็นสำหรับโปรเจ็กต์ JavaScript และ TypeScript ส่วนใหญ่

แพ็กเกจและเวอร์ชันที่ได้รับการยืนยันว่าถูกบุกรุก:

  • eslint-config-prettier: 8.10.1, 9.1.1, 10.1.6, 10.1.7
  • eslint-plugin-prettier: 4.2.2, 4.2.3
  • snyckit: 0.11.9
  • @pkgjs/core: 0.2.8
  • napi-postinstall: 0.3.1

การติดตั้งมัลแวร์เฉพาะ Windows ทำให้เกิดความกังวลด้านความปลอดภัย

แพ็กเกจที่มีมัลแวร์มุ่งเป้าไปที่ผู้ใช้ Windows โดยเฉพาะ ด้วยการติดตั้งไฟล์ DLL ที่มีฟังก์ชันการทำงานที่ไม่ทราบแน่ชัด แนวทางการโจมตีแบบเจาะจงนี้บ่งบอกว่าผู้โจมตีมีกลยุทธ์ที่ชัดเจนสำหรับการส่งมอบ payload ผู้ใช้ที่ได้รับผลกระทบรายหนึ่งรายงานว่ามัลแวร์ปิดใช้งานคุณสมบัติความปลอดภัยในเบราว์เซอร์ Chrome ซึ่งบ่งชี้ถึงความเป็นไปได้ของการบุกรุกระบบอย่างร้ายแรง

ผลกระทบของการโจมตีถูกขยายโดยเครื่องมือจัดการ dependency อัตโนมัติอย่าง Dependabot และ Renovate Bot ซึ่งสร้าง pull request อัตโนมัติเพื่ออัปเกรดโปรเจ็กต์ไปยังเวอร์ชันที่ถูกบุกรุก การอัปเดตอัตโนมัติเหล่านี้หลายรายการถูก merge โดยไม่มีการตรวจสอบด้วยตนเอง ทำให้โค้ดที่มีมัลแวร์แพร่กระจายไปยัง repository จำนวนมาก

ผลกระทบด้านความปลอดภัย:

  • มัลแวร์มุ่งเป้าไปที่ระบบ Windows เท่านั้น
  • ติดตั้งไฟล์ DLL ที่มีฟังก์ชันการทำงานไม่ทราบแน่ชัด
  • ปิดการใช้งานคุณสมบัติความปลอดภัยของเบราว์เซอร์ Chrome
  • แพร่กระจายผ่านเครื่องมือจัดการ dependency อัตโนมัติ
  • เวอร์ชันที่เป็นอันตรายทั้งหมดได้ถูกยกเลิกและแทนที่แล้ว

ชุมชนเรียกร้องมาตรการความปลอดภัยที่ดีขึ้น

ชุมชนนักพัฒนาตอบสนองด้วยการเรียกร้องให้มีมาตรการความปลอดภัยที่ดีขึ้น ผู้เชี่ยวชาญหลายคนแนะนำว่า npm ควรใช้ provenance statement บังคับสำหรับแพ็กเกจยอดนิยม ซึ่งจะช่วยป้องกันการโจมตีครั้งนี้ได้โดยต้องมีการพิสูจน์ว่าเวอร์ชันใหม่มาจากแหล่งที่ถูกต้อง

สิ่งหนึ่งที่ Npm ควรใช้ (อย่างน้อยสำหรับแพ็กเกจยอดนิยม) คือการปฏิเสธการเผยแพร่เวอร์ชันใหม่ที่ไม่มี provenance หากเวอร์ชันก่อนหน้ามี สิ่งนี้จะหยุดการโจมตีครั้งนี้ได้

เหตุการณ์นี้ยังกระตุ้นให้เกิดการอภิปรายเกี่ยวกับแนวทางการพัฒนาที่ปลอดภัยยิ่งขึ้น สมาชิกชุมชนบางคนแนะนำให้ปิดใช้งาน installation script โดยค่าเริ่มต้น และใช้ package manager ที่ต้องการการอนุมัติอย่างชัดเจนสำหรับ script เหล่านั้น คนอื่นๆ แนะนำให้เปลี่ยนจากเครื่องมือที่ซับซ้อนซึ่งมี dependency หลายร้อยตัว ไปใช้ทางเลือกที่ง่ายกว่าอย่าง Biome หรือ linter ในตัวของ Deno

กราฟเส้นที่แสดงการเติบโตขาขึ้นสามารถแสดงถึงการผลักดันของชุมชนนักพัฒนาเพื่อปรับปรุงมาตรการรักษาความปลอดภัยหลังจากการโจมตี
กราฟเส้นที่แสดงการเติบโตขาขึ้นสามารถแสดงถึงการผลักดันของชุมชนนักพัฒนาเพื่อปรับปรุงมาตรการรักษาความปลอดภัยหลังจากการโจมตี

จุดอ่อนด้านความปลอดภัยของอีเมลถูกเปิดเผย

การโจมตี phishing สำเร็จได้บางส่วนเนื่องจากข้อบกพร่องทั่วไปในการออกแบบ email client ที่ให้ความสำคัญกับความสวยงามมากกว่าความปลอดภัย ผู้โจมตีใช้ชื่อที่แสดงซึ่งดูถูกต้องในขณะที่ซ่อนที่อยู่อีเมลที่เป็นอันตรายจริง ซึ่งเป็นเทคนิคที่ email client หลายตัวทำให้ตรวจจับได้ยาก

ผู้เชี่ยวชาญด้านความปลอดภัยชี้ให้เห็นว่านี่แสดงถึงปัญหาที่กว้างขึ้นกับ interface ของ email client ซึ่งมักซ่อนข้อมูลความปลอดภัยที่สำคัญ เช่น ที่อยู่ผู้ส่งแบบเต็มและปลายทางของลิงก์ เหตุการณ์นี้เป็นการเตือนใจว่าแม้แต่นักพัฒนาที่มีประสบการณ์ก็สามารถตกเป็นเหยื่อของความพยายาม phishing ที่สร้างขึ้นอย่างดี โดยเฉพาะเมื่อเหนื่อยล้าหรือไม่ตั้งใจ

ผู้ดูแลได้ลบ npm token ที่เป็นอันตรายแล้ว ยกเลิกการใช้งานเวอร์ชันที่ได้รับผลกระทบทั้งหมด และเผยแพร่ตัวทดแทนที่สะอาด อย่างไรก็ตาม เหตุการณ์นี้เน้นย้ำถึงช่องโหว่ที่ยังคงมีอยู่ของ software supply chain และความจำเป็นในการมีแนวทางความปลอดภัยที่ดีขึ้นทั่วทั้งระบบนิเวศการพัฒนา

อ้างอิง: Supply Chain Security Alert: eslint-config-prettier Package Shows Signs of Compromise