การแจ้งเตือน NPM: ไลบรารี JavaScript สำคัญถูกบุกรุก

  • แคมเปญฟิชชิ่งทำให้สามารถเผยแพร่เวอร์ชันที่เป็นอันตรายบน NPM และโจมตีไลบรารี JavaScript หลักได้
  • มัลแวร์ทำหน้าที่เป็นตัวตัดการเข้ารหัส โดยเข้ามาแทนที่ที่อยู่ในระหว่างการลงนามธุรกรรม
  • ผลกระทบต่อเศรษฐกิจต่ำและการบรรเทาผลกระทบอย่างรวดเร็ว ผู้ให้บริการและกระเป๋าเงินหลายรายไม่ได้รับผลกระทบ
  • คำแนะนำ: ตรวจสอบความสัมพันธ์ แก้ไขเวอร์ชัน บังคับใช้ 2FA และยืนยันธุรกรรมบนกระเป๋าเงินฮาร์ดแวร์

ภาพประกอบเกี่ยวกับ JavaScript

ชุมชนด้านเทคนิคทำการสืบสวน การโจมตีห่วงโซ่อุปทานของ NPM ซึ่งมุ่งเป้าไปที่ไลบรารี JavaScript ที่ใช้งานกันอย่างแพร่หลาย จากข้อมูลของทีมรักษาความปลอดภัยหลายทีม ผู้โจมตีได้แอบแฝงมัลแวร์ที่มีฟังก์ชัน crypto-clipper เข้าไปในแพ็กเกจที่กระจายอยู่ทั่วไป ซึ่งอาจนำไปสู่ เปลี่ยนแปลงธุรกรรมและเปลี่ยนเส้นทางสกุลเงินดิจิทัล.

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

การบุกรุกเกิดขึ้นได้อย่างไร

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

svg มัลแวร์
บทความที่เกี่ยวข้อง:
ผู้โจมตีทางไซเบอร์ใช้ไฟล์ SVG เพื่อติดมัลแวร์

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

ระบบนิเวศแพ็คเกจ JavaScript

แพ็คเกจและขอบเขตที่ได้รับผลกระทบ

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

  • ชอล์ก, แม่แบบชอล์ก, แถบ ansi, แผ่น ansi, ห่อ ansi, รองรับสี
  • แปลงสี, ชื่อสี, สตริงสี
  • ansi-regex, ansi-สไตล์, has-ansi
  • ดีบัก, ตัวอย่างข้อผิดพลาด, อาร์เรย์แบบ is, การสลับแบบง่าย
  • รองรับไฮเปอร์ลิงก์, แบ็กสแลช, โปรโตทิงเกอร์-ดับเบิลยูซี

ชิ้นส่วนซอฟต์แวร์เหล่านี้สะสม ยอดดาวน์โหลดรายสัปดาห์หลายล้านครั้งและบันทึกประวัติศาสตร์มากกว่าพันล้านรายการซึ่งทำหน้าที่เป็นส่วนประกอบพื้นฐานสำหรับเซิร์ฟเวอร์สมัยใหม่ เครื่องมือบรรทัดคำสั่ง และแอปพลิเคชันเว็บ

ความปลอดภัยใน JavaScript

มัลแวร์ทำงานอย่างไร

โค้ดที่เป็นอันตรายทำงานเป็น คลิปเปอร์คริปโต:โดยการตรวจจับสภาพแวดล้อมที่มีกระเป๋าเงินซอฟต์แวร์ (เช่น ส่วนขยายเช่น MetaMask) มันดักจับข้อมูลธุรกรรมก่อนการลงนามและ แทนที่ที่อยู่ปลายทาง โดยอีกคนหนึ่งที่ถูกควบคุมโดยผู้โจมตี

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

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

ผลกระทบที่แท้จริงจนถึงตอนนี้

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

กระเป๋าเงินคริปโตและทีมบริการ เช่น Ledger, Trezor, MetaMask, Phantom หรือ Uniswap พวกเขารายงานว่าไม่ได้รับผลกระทบจากเวอร์ชันที่แก้ไข หรือได้รับการปกป้องด้วยการป้องกันแบบหลายชั้น อย่างไรก็ตาม พวกเขาแนะนำให้ตรวจสอบธุรกรรมที่ลงนามแต่ละรายการอย่างละเอียด และรักษาแนวปฏิบัติด้านการตรวจสอบที่ดี

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

สิ่งที่นักพัฒนาและทีมควรทำ

นอกเหนือจากการแก้ไขทันที องค์กรต่างๆ ควรนำ การควบคุมห่วงโซ่อุปทาน เพื่อลดพื้นที่การโจมตีในสภาพแวดล้อม JavaScript และ Node.js มาตรการสำคัญประกอบด้วย:

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

สำหรับผู้ใช้ปลายทาง คำแนะนำจะผ่าน ตรวจสอบที่อยู่และจำนวนเงินบนอุปกรณ์ ก่อนลงนาม ควรระวังป๊อปอัปที่ไม่คาดคิดและการหยุดการทำงานชั่วคราว หากคุณตรวจพบพฤติกรรมแปลกๆ บนเว็บไซต์ทั่วไปหรือ dApps

ลำดับเหตุการณ์และตัวเอก

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

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

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