ReversingLabs พบว่าผู้โจมตีใช้สัญญาอัจฉริยะของ Ethereum เพื่อซ่อนมัลแวร์ npm

การปรับปรุงครั้งล่าสุด: 09/05/2025
  • แพ็กเกจ npm ที่เป็นอันตราย colortoolsv2 และ mimelib2 ดึง URL C2 จากสมาร์ทคอนแทรคต์ Ethereum เพื่อหลีกเลี่ยงการตรวจจับ
  • การอ้างอิงทางอ้อมแบบออนเชนช่วยให้ผู้ปฏิบัติงานสามารถหมุนเวียนจุดสิ้นสุดได้โดยไม่ต้องเผยแพร่แพ็คเกจซ้ำ colortoolsv2 ถูกลบออกเมื่อวันที่ 7 กรกฎาคม ก่อนที่จะเปลี่ยนไปใช้ mimelib2
  • การผลักดัน GitHub แบบประสานงานใช้ที่เก็บข้อมูลการซื้อขายปลอม ดาวที่พองโต และสคริปต์คอมมิทเพื่อปกปิดการอ้างอิงที่เป็นอันตราย
  • IoC ประกอบด้วยเวอร์ชันแพ็คเกจ แฮช SHA1 และสัญญา 0x1f171a1b07c108eae05a5bccbe86922d66227e2b นอกจากนี้ยังมีคำแนะนำสำหรับผู้ป้องกันอีกด้วย

สัญญาอัจฉริยะของ Ethereum ถูกใช้เพื่อซ่อนมัลแวร์ npm

ผู้ก่อภัยคุกคามหันมาใช้กลวิธีใหม่: การกำหนดเส้นทางโครงสร้างพื้นฐานที่เป็นอันตรายผ่าน สัญญาอัจฉริยะ Ethereum เพื่อปกปิดตัวชี้คำสั่งและการควบคุม (C2) ใช้โดยแพ็กเกจ npm ตามข้อมูลของ ReversingLabs แพ็กเกจสองรายการ คือ colortoolsv2 และ mimelib2 ได้เข้าถึงบล็อกเชนอย่างเงียบๆ เพื่อดึง URL สำหรับเพย์โหลดขั้นที่สอง โดยหลีกเลี่ยงการตรวจสอบตามปกติที่ค้นหาโดเมนแบบฮาร์ดโค้ด

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

จากการติดตั้ง npm ไปจนถึงการค้นหาบนเชน: วิธีการทำงานของการเลี่ยงทาง

แพ็คเกจ npm เรียกว่าสัญญา Ethereum ได้อย่างไร

ภายใน colortoolsv2 ตัวโหลดขั้นต่ำ (index.js) ทำหน้าที่เป็นตัวกระจายที่ เรียกใช้คำสั่งภายนอกและดึงเป้าหมายจากสัญญาอัจฉริยะ แทนสคริปต์ภายในเครื่องหรือการกำหนดค่าแบบคงที่ Etherscan แสดงสัญญาที่ 0x1f171a1b07c108eae05a5bccbe86922d66227e2b ซึ่งฟังก์ชันการอ่านจะส่งคืน URL ที่ใช้เข้าถึงบริการ C2

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

เมื่อดำเนินการระหว่างการติดตั้งหรือรันไทม์ ตัวโหลดจะดึงข้อมูล second-stage component (SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21)ซึ่งจัดการกิจกรรมที่ตามมา เลียนแบบพฤติกรรมของ colortoolsv2 โดย mimelib2 นำคอนแทร็กต์เดียวกันมาใช้ซ้ำเพื่อจุดประสงค์เดียวกัน โดยมีเส้นทางโค้ดที่เกือบจะเหมือนกัน

ReversingLabs อธิบายแนวทางนี้ว่าไม่ธรรมดาในระบบนิเวศ npm: URL ที่เป็นอันตรายได้รับการโฮสต์ผ่านสถานะของสัญญาอัจฉริยะไม่ใช่บริการเว็บแบบดั้งเดิมที่มักพบเห็นในแคมเปญห่วงโซ่อุปทานในอดีต (เช่น การจัดเก็บข้อมูลบนคลาวด์หรือ Gist)

GitHub หลอกลวง: คลังข้อมูลบอทซื้อขายปลอมเป็นข้ออ้าง

ที่เก็บข้อมูล GitHub ใช้เพื่อปกปิดการอ้างอิง npm ที่เป็นอันตราย

แพ็กเกจ npm ไม่ได้ปรากฏแยกเดี่ยว ผู้ดำเนินการได้จัดตั้งเครือข่ายโครงการ GitHub ที่นำเสนอเป็นยูทิลิตี้การซื้อขายคริปโต—ที่เก็บข้อมูลเช่น solana-trading-bot-v2—แล้วจึงเชื่อมโยงมันเข้ากับ dependency ที่เป็นอันตราย สำหรับผู้สังเกตการณ์ทั่วไป ที่เก็บเหล่านี้ดูเหมือน "มีชีวิต" อวดอ้างการ commit หลายพันครั้ง ผู้ดูแลระบบหลายราย ดารา และผู้เฝ้าดูหลายคน

เมื่อพิจารณาอย่างใกล้ชิด พบว่ากิจกรรมส่วนใหญ่เป็นเพียงสคริปต์และผิวเผิน รวมถึงการเปลี่ยนแปลงไฟล์ใบอนุญาตซ้ำๆ และ บัญชีที่เพิ่งสร้างใหม่ซึ่งมีเนื้อหาเบาบาง (บางไฟล์สร้างขึ้นราววันที่ 10 กรกฎาคม โดยใช้ไฟล์ README เพียงเล็กน้อย เช่น "Hello") ชื่อผู้ใช้ที่ปรากฏในประวัติการคอมมิต ได้แก่ slunfuedrac, cnaovalles และ pasttimerles ปรากฏซ้ำๆ กันในโครงการที่จัดลำดับไว้

การคอมมิตแสดงให้เห็นอย่างชัดเจนว่าแพ็กเกจถูกเธรดลงในฐานโค้ดตรงไหนเพิ่ม colortoolsv2 และ mimelib2 ในภายหลังเป็นการอ้างอิง ใน bot.ts และการนำเข้าที่เกี่ยวข้องปรากฏใน src/index.ts หลักฐานทางสังคมที่สร้างขึ้นทำให้การแทรกการอ้างอิงนั้นไม่ชัดเจนมากนักในระหว่างการตรวจสอบแบบผิวเผิน

ในทางปฏิบัติ GitHub จะขยายสัญญาณความน่าเชื่อถือในขณะที่ จุดตัดสินใจที่แท้จริงสำหรับการเคลื่อนไหวครั้งต่อไปของมัลแวร์อยู่บน Ethereumการแยกวิศวกรรมสังคม (GitHub) ออกจากการควบคุม (สัญญาอัจฉริยะ) ทำให้ผู้ดำเนินการสามารถตรวจพบและขัดขวางแคมเปญได้ยากขึ้น

IoCs และขั้นตอนที่เป็นรูปธรรมสำหรับผู้พิทักษ์

IoC สำหรับมัลแวร์ npm ที่ใช้สัญญา Ethereum

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

  • npm packages: colortoolsv2 1.0.0 (SHA1 678c20775ff86b014ae8d9869ce5c41ee06b6215), 1.0.1 (1bb7b23f45ed80bce33a6b6e6bc4f99750d5a34b), 1.0.2 (db86351f938a55756061e9b1f4469ff2699e9e27)
  • npm packages: mimelib2 1.0.0 (bda31e9022f5994385c26bd8a451acf0cd0b36da), 1.0.1 (c5488b605cf3e9e9ef35da407ea848cf0326fdea)
  • Second stage: SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21
  • สัญญาอัจฉริยะที่ใช้สำหรับการอ้างอิงทางอ้อม C2: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b

บริบทเพิ่มเติมจากขั้นตอนการถอดออก: colortoolsv2 ถูกลบออกจาก npm เมื่อวันที่ 7 กรกฎาคมหลังจากนั้น ผู้ดำเนินการจะเปลี่ยนไปใช้ mimelib2 โดยมีการอ้างอิงแบบออนเชนแบบเดียวกันและพฤติกรรมการโหลดที่เกือบจะเหมือนกัน

การดำเนินการที่แนะนำสำหรับทีมวิศวกรรมและความปลอดภัย ได้แก่: การค้นหาแบบออนเชนที่ดำเนินการโดยสคริปต์ติดตั้งบล็อกหรือเตือนการดำเนินการ child_process ในวงจรชีวิตของแพ็คเกจ ปฏิเสธการออกเครือข่ายระหว่างการติดตั้ง npm ใน CI บังคับใช้รายการอนุญาตสำหรับรีจิสทรีและผู้ดูแลระบบ ล็อคเวอร์ชันสกรรมกริยา และตรวจสอบคำขอที่เชื่อมโยงกับที่อยู่สัญญาด้านบน

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

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

สัญญาอัจฉริยะ Ethereum ใน npm
บทความที่เกี่ยวข้อง:
แพ็กเกจ npm ที่เป็นอันตรายซ่อนเส้นทางโหลดไว้ในสัญญาอัจฉริยะของ Ethereum
กระทู้ที่เกี่ยวข้อง: