การโจมตี Supply Chain ของ NPM เผยช่องโหว่สำคัญในระบบนิเวศ JavaScript

ทีมชุมชน BigGo
การโจมตี Supply Chain ของ NPM เผยช่องโหว่สำคัญในระบบนิเวศ JavaScript

การโจมตีแบบ phishing ที่ซับซ้อนซึ่งมุ่งเป้าไปที่ผู้ดูแลแพ็กเกจ NPM ได้เปิดเผยจุดอ่อนด้านความปลอดภัยที่ร้ายแรงในหนึ่งในระบบนิเวศซอฟต์แวร์ที่ใช้กันอย่างแพร่หลายที่สุดในโลก การโจมตีนี้สามารถเจาะเข้าไปในแพ็กเกจ JavaScript ยอดนิยมหลายตัวได้สำเร็จ รวมถึงยูทิลิตี้พื้นฐานสำหรับการจัดรูปแบบข้อความใน terminal และการจัดการสี ซึ่งถูกดาวน์โหลดหลายพันล้านครั้งต่อสัปดาห์ในแอปพลิเคชันนับไม่ถ้วน

แพ็กเกจที่ถูกบุกรุกและฟังก์ชันของแพ็กเกจเหล่านั้น:

  • การจัดรูปแบบข้อความพร้อมสีสำหรับใช้งานใน terminal
  • ฐานข้อมูลชื่อสีทั่วไปและค่า RGB
  • ตัวตกแต่งสำหรับดีบักฟังก์ชันสำหรับข้อมูลนำเข้า/ส่งออก
  • ยูทิลิตี้สำหรับตรวจจับอาร์กิวเมนต์ที่มีลักษณะคล้ายอาร์เรย์
  • ยอดดาวน์โหลดรวมต่อสัปดาห์: 2.6 พันล้านครั้ง

วิธีการโจมตี: อีเมล Phishing ที่เกือบสมบูรณ์แบบ

การโจมตีเริ่มต้นด้วยอีเมล phishing ที่ถูกสร้างขึ้นอย่างพิถีพิถันซึ่งหลอกนักพัฒนาที่มีประสบการณ์ให้ยอมมอบข้อมูลรับรองตัวตนของพวกเขา อีเมลดูเหมือนมาจาก npmjs.help และขอให้ผู้ใช้อัปเดตการตั้งค่าการยืนยันตัวตนแบบสองขั้นตอนภายในไม่กี่วันเพื่อหลีกเลี่ยงการระงับบัญชีชั่วคราว สิ่งที่ทำให้อีเมลนี้อันตรายเป็นพิเศษคือรูปลักษณ์ที่ดูเป็นมืออาชีพและแนวทางที่เป็นส่วนตัว - มันเรียกชื่อผู้รับด้วยชื่อผู้ใช้ NPM ของพวกเขาและใช้ภาษาองค์กรที่ดูถูกต้องตามกฎหมาย

การเลือกใช้โดเมนนั้นฉลาดเป็นพิเศษ บริษัทหลายแห่งในปัจจุบันใช้โดเมนระดับบนสุดต่างๆ สำหรับบริการที่แตกต่างกัน ทำให้ npmjs.help ดูเป็นไปได้ว่าเป็นพอร์ทัลสนับสนุน แม้แต่นักพัฒนาที่ใส่ใจเรื่องความปลอดภัยยังพบว่าอีเมลนี้น่าเชื่อถือพอที่จะคลิกและกรอกข้อมูลรับรองตัวตนของพวกเขาบนเว็บไซต์ปลอม

ลักษณะของอีเมลฟิชชิ่ง:

  • โดเมนผู้ส่ง: npmjs.help (ปลอมแต่ดูน่าเชื่อถือ)
  • การปรับแต่งเฉพาะบุคคล: ใช้ชื่อผู้ใช้ NPM จริง
  • ปัจจัยความเร่งด่วน: กำหนดเวลา 2-3 วันสำหรับ "การปฏิบัติตามข้อกำหนด"
  • การยืนยันตัวตน: ผ่านการตรวจสอบ DKIM/SPF/DMARC
  • การกระทำเป้าหมาย: "อัปเดต" ข้อมูลรับรอง 2FA ผ่านลิงก์ที่เป็นอันตราย

ความเสียหายที่จำกัดแม้จะมีการเข้าถึงที่กว้างขวาง

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

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

ไทม์ไลน์การโจมตีและผลกระทบ:

  • ระยะเวลาการโจมตี: หลายชั่วโมงก่อนที่จะถูกตรวจพบ
  • ความเสียหายทางการเงิน: ประมาณ 500 ดอลลาร์สหรัฐ ในสกุลเงินดิจิทัล
  • เป้าหมาย: แอปพลิเคชัน Web3/cryptocurrency โดยเฉพาะ
  • วิธีการตรวจจับ: การติดตามของชุมชนในที่เก็บแพ็กเกจ
  • เวลาในการตอบสนอง: แพ็กเกจที่ถูกบุกรุกได้รับการลบออกภายในไม่กี่ชั่วโมง

ปัญหาระบบในการจัดการแพ็กเกจ

เหตุการณ์นี้ได้จุดประกายการถกเถียงเกี่ยวกับปัญหาพื้นฐานในระบบนิเวศ JavaScript อีกครั้ง แพลตฟอร์ม NPM อนุญาตให้นักพัฒนารายบุคคลดูแลแพ็กเกจที่กลายเป็นโครงสร้างพื้นฐานสำคัญสำหรับแอปพลิเคชันหลายล้านตัว micro-dependencies เหล่านี้ - ไลบรารีเล็กๆ ที่ทำหน้าที่ง่ายๆ เช่น ตรวจสอบว่าสิ่งใดสิ่งหนึ่งสามารถใช้เป็นอาร์เรย์ได้หรือไม่ - สร้างพื้นผิวการโจมตีที่มหาศาล

โครงสร้างพื้นฐานหลักไม่ควรพึ่งพาแพ็กเกจเล็กๆ น้อยๆ ที่ดูแลโดยบุคคลสุ่มคนเดียวจากที่ไหนก็ไม่รู้ที่สามารถส่งอัปเดตโดยไม่ต้องมีการตรวจสอบ มันบ้าระห่ำอย่างแท้จริง

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

บทเรียนสำหรับชุมชนนักพัฒนา

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

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

อ้างอิง: We all dodged a bullet