Các gói npm độc hại ẩn các tuyến tải trọng bên trong hợp đồng thông minh Ethereum

Cập nhật lần cuối: 09/04/2025
  • Hai gói npm, colortoolsv2 và mimelib2, đã truy vấn các hợp đồng thông minh Ethereum để lấy URL C2 nhằm tìm phần mềm độc hại giai đoạn hai.
  • Những kẻ tấn công đã tiến hành một chiến dịch dàn dựng bằng cách sử dụng các kho lưu trữ bot giao dịch giả mạo trên GitHub để dụ dỗ các nhà phát triển.
  • Kỹ thuật này kết hợp với lưu lượng blockchain hợp pháp, gây khó khăn cho việc phát hiện và gỡ bỏ.
  • ReversingLabs đã chia sẻ IoC, bao gồm mã băm gói và địa chỉ hợp đồng được sử dụng để cung cấp URL.

Hợp đồng thông minh Ethereum npm

Các nhà nghiên cứu đã trình bày chi tiết một sơ đồ chuỗi cung ứng trên sổ đăng ký npm trong đó hai thư viện JavaScript đã tham khảo Hợp đồng thông minh Ethereum để khám phá vị trí tải xuống cho phần mềm độc hại tiếp theo. Chiến thuật này, được phát hiện vào tháng 2025 năm XNUMX và hiện đã bị xóa khỏi npm, cho thấy cách blockchain công khai có thể bị lạm dụng như một lớp gián tiếp để giữ cơ sở hạ tầng chỉ huy và kiểm soát (C2) khuất khỏi tầm nhìn.

Thay vì nhúng các URL cố định, mã độc đã lấy chúng từ hợp đồng trên Ethereum khi chạy, khiến hoạt động này trông giống như các truy vấn thông thường trên chuỗi. Sự thay đổi này hướng tới việc sử dụng “sổ địa chỉ” phi tập trung để phân phối tải trọng minh họa cách các tác nhân đe dọa đang thích nghi để trốn tránh việc quét thông thường và danh sách chặn đơn giản.

Những gì đã được tải lên npm

Theo ReversingLabs, các gói có tên công cụ màu sắc v2mimelib2 được xuất bản vào tháng 2025 năm XNUMX và sau đó bị gỡ xuống. Mỗi cái hoạt động như một bộ nạp nhỏ: một khi gói hàng được đã cài đặt hoặc nhập khẩu, nó thực thi mã liên lạc với hợp đồng Ethereum, đọc giá trị và sau đó lấy thành phần giai đoạn tiếp theo từ URL trả về.

Trong khi các thư viện npm không làm lu mờ sâu sắc hành vi tải của chúng, độ tin cậy được tạo ra ở nơi khác: các dự án GitHub được liên kết đã áp dụng các mẫu hoạt động và đặt tên quen thuộc để có vẻ hợp pháp, giúp các nhà phát triển dễ dàng hơn chấp nhận sự phụ thuộc trong nháy mắt.

Cách thức hoạt động của trục xoay hợp đồng thông minh

Vị trí tải trọng không được mã hóa cứng. Thay vào đó, trình tải đã truy vấn một hợp đồng tại 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, sử dụng các hàm đọc trả về một chuỗi được diễn giải là URL cho giai đoạn thứ hai. Bằng cách lưu trữ con trỏ trên chuỗi, kẻ tấn công đã đạt được khả năng phục hồi: đó là công khai, có thể truy vấn và có thể cập nhật mà không cần phải tung ra các bản phát hành npm mới hoặc duy trì một máy chủ dễ bị gỡ bỏ.

Vì việc tra cứu blockchain giống như các công cụ mã hóa và phân tích lành tính, những yêu cầu đó có thể hòa nhập vào quy trình làm việc thông thường của nhà phát triển. Cách tiếp cận này gợi nhớ đến những ý tưởng trước đây như EtherHiding, nhưng ở đây nó được kết nối trực tiếp vào thực thi gói npm, biến quá trình cài đặt thông thường thành lộ trình phân phối theo giai đoạn.

Một nỗ lực GitHub rộng rãi hơn để gieo mầm áp dụng

Các gói npm được tham chiếu trên mạng lưới các kho lưu trữ GitHub được định vị là tiện ích giao dịch tiền điện tử. Các ví dụ bao gồm bot-giao-dịch-solana-v2, ethereum-mev-bot-v2, bot chênh lệch giábot giao dịch siêu thanh khoản. Hoạt động xung quanh các kho lưu trữ này—sao, nhánh, người theo dõi và cam kết thường xuyên—được thiết kế để thể hiện tính hợp pháp và động lực.

ReversingLabs liên kết sự khuếch đại này với một cụm phân phối dưới dạng dịch vụ được gọi là Mạng ma Stargazers, nơi các tài khoản được phối hợp thổi phồng tín hiệu phổ biến và đưa các phần mềm độc hại vào các dự án. Tài khoản GitHub liên quan cho một kho lưu trữ hàng đầu sau đó đã bị xóa, nhưng lịch sử cam kết cho thấy nhập khẩu độc hại đã được đưa vào mã theo thời gian.

Dòng thời gian và vòng quay gói

Colortoolsv2 xuất hiện đầu tiên và bị chặn trên npm vào khoảng 7 Tháng Bảy, 2025. Ngay sau đó, các diễn viên đã chuyển sang một sự thay thế gần giống hệt có tên là mimelib2, giữ nguyên tra cứu hợp đồng thông minh cho URL giai đoạn hai. Sự hoán đổi nhanh chóng này nhấn mạnh một mô hình quen thuộc trong các sự cố chuỗi cung ứng: khi một hiện vật được gắn cờ, một gói giống nhau nhanh chóng hoàn thành vai trò của mình.

Các chỉ số thỏa hiệp (IoC)

ReversingLabs đã báo cáo các chỉ số sau đây liên quan đến chiến dịch. Các tổ chức có thể sử dụng những chỉ số này để thúc đẩy phát hiện và săn bắn nỗ lực:

  • Các gói và phiên bản npm:
    • colortoolsv2 1.0.0 (SHA1 678c20775ff86b014ae8d9869ce5c41ee06b6215)
    • colortoolsv2 1.0.1 (SHA1 1bb7b23f45ed80bce33a6b6e6bc4f99750d5a34b)
    • colortoolsv2 1.0.2 (SHA1 db86351f938a55756061e9b1f4469ff2699e9e27)
    • mimelib2 1.0.0 (SHA1 bda31e9022f5994385c26bd8a451acf0cd0b36da)
    • mimelib2 1.0.1 (SHA1 c5488b605cf3e9e9ef35da407ea848cf0326fdea)
  • Hồ sơ giai đoạn hai: SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21
  • Ethereum contract: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b

Tại sao phương pháp này làm phức tạp việc phòng thủ

Bằng cách thuê ngoài quyết định "đi đâu tiếp theo" cho một hợp đồng thông minh, kẻ tấn công tách logic của phần mềm độc hại khỏi một điểm cuối duy nhất. Nếu một URL bị chặn, giá trị hợp đồng có thể được cập nhật và cùng một gói npm sẽ giải quyết một vị trí mới mà không cần thay đổi. Tính năng động đó làm suy yếu chỉ số tĩnh và nâng cao tiêu chuẩn cho việc hạ gục.

Ngoài ra, nhiều môi trường phát triển đã tương tác với các điểm cuối web3, do đó các lệnh gọi EVM có thể không đáng ngờ. Ranh giới giữa lưu lượng blockchain hợp pháp và tín hiệu độc hại làm mờ, gây khó khăn cho cả chiến lược giám sát mạng và phát hiện điểm cuối.

Các bước thực tế dành cho nhà phát triển npm và web3

Các nhóm nên kết hợp kiểm tra mã, người bảo trì và mạng trước khi đưa vào một phần phụ thuộc. Ngoài số lượt tải xuống và số sao, hãy kiểm tra lịch sử người bảo trì, tuổi kho lưu trữ, chất lượng cam kết, nhịp độ phát hành và liệu gói có bất ngờ tiếp cận các hợp đồng trên chuỗi hoặc máy chủ không quen thuộc hay không.

  • Kiểm tra các móc cài đặt và sau cài đặt cũng như các điểm vào cho cuộc gọi mạng hoặc thực thi tiến trình con.
  • Chặn hoặc cảnh báo về các truy vấn EVM RPC bất ngờ từ CI/CD hoặc xây dựng đường ống; xác định đường cơ sở mà công cụ của bạn nên truy cập và phủ nhận phần còn lại.
  • Ghim các phiên bản, sử dụng các tệp khóa và sao chép các gói đã được kiểm tra vào sổ đăng ký nội bộ để giảm thiểu khả năng bị lộ trao đổi gói.
  • Áp dụng chứng thực hiện vật và xác minh chữ ký (ví dụ: nguồn gốc SLSA) để đảm bảo tính toàn vẹn của sự phụ thuộc đã được xác minh tại bản dựng.
  • Liên tục quét các biểu đồ phụ thuộc để tìm các IoC mới được tiết lộ và các bất thường thay đổi người bảo trì.

Đối với các kho lưu trữ bị ảnh hưởng bởi chiến dịch, hãy xem lại các cam kết gần đây để giới thiệu colortoolsv2 hoặc mimelib2, cuộn các khóa và mã thông báo được sử dụng trong quá trình xây dựng bị xâm phạm và xem xét việc tạo lại hình ảnh các hệ thống đã thực thi các gói bị ảnh hưởng để loại bỏ bất kỳ hiện vật giai đoạn hai.

Tập phim nhấn mạnh cách một nền tảng quen thuộc—npm—có thể được tận dụng cùng với Ethereum để che giấu dấu vết giữa một phần phụ thuộc và máy chủ lưu trữ tải trọng của nó. Với dữ liệu trên chuỗi đóng vai trò là một con trỏ linh hoạt, những người bảo vệ được thúc đẩy để tương quan hành vi gói, tín hiệu GitHub và đọc blockchain để phát hiện những gì mà các kiểm tra tĩnh đơn giản bỏ sót.

bài viết liên quan: