Mối đe dọa mạng CanisterWorm: cảnh báo nghiêm trọng

CanisterWorm là một mối đe dọa supply chain trong hệ sinh thái npm, trong đó các phiên bản gói hợp lệ bị thay thế bằng mã độc để phát tán qua chính chuỗi cung ứng phần mềm. Nhiều gói thuộc namespace Namastex.ai đã bị phát hiện chứa payload backdoor tự phát tán, làm tăng rủi ro bảo mật cho môi trường phát triển và CI/CD.
CanisterWorm trong hệ sinh thái npm
Cuộc tấn công diễn ra bằng cách ghi đè nội dung gói hợp lệ bằng mã độc, sau đó phát hành lại dưới cùng tên package đáng tin cậy. Các phiên bản bị ảnh hưởng trông giống bản cập nhật thông thường, có README sao chép và metadata quen thuộc, khiến việc phát hiện trở nên khó khăn đối với nhà phát triển và công cụ quét tự động.
Theo các báo cáo phân tích, chiến dịch đã mở rộng lên hơn 135 artifact độc hại trên hơn 64 package duy nhất vào cuối tháng 3/2026. Thông tin kỹ thuật chi tiết có thể tham khảo tại nguồn gốc nghiên cứu: Socket.dev.
Cơ chế lây nhiễm và chuỗi thực thi
Mã độc sử dụng postinstall hook để kích hoạt ngay sau khi package được cài đặt, chạy nền mà không hiển thị cảnh báo trên terminal. Đây là đặc điểm quan trọng của lỗ hổng zero-day theo góc nhìn vận hành chuỗi cung ứng, khi gói độc hại có thể tự chèn vào môi trường mục tiêu mà không cần tương tác thêm.
Tiến trình chính thực hiện hàm findNpmTokens() nhằm thu thập token xác thực npm từ nhiều nguồn khác nhau, sau đó chuyển cho script phụ deploy.js để tiếp tục lan truyền sang các package khác mà token bị đánh cắp có quyền xuất bản.
Vị trí thu thập token npm
- ~/.npmrc
- .npmrc ở cấp dự án
- biến môi trường như NPM_TOKEN
- truy vấn cấu hình npm đang hoạt động
Với token hợp lệ, mã độc liệt kê toàn bộ package mà token có thể publish, tăng phiên bản patch, chèn payload CanisterWorm và phát hành lại bằng cờ –tag latest. Người dùng không pin phiên bản chính xác sẽ vô tình cài đặt bản nhiễm độc và trở thành một mắt xích mới trong chuỗi lan truyền.
Hành vi của CanisterWorm và ảnh hưởng hệ thống
Khác với malware chỉ đánh cắp thông tin, CanisterWorm có hành vi worm rõ rệt. Sau khi được cài đặt, nó không chỉ lấy dữ liệu mà còn tự mở rộng sang các namespace/package khác mà credential bị đánh cắp cho phép truy cập, tạo ra tấn công mạng theo kiểu dây chuyền.
Backdoor không dùng máy chủ điều khiển truyền thống mà truy vấn một Internet Computer Protocol (ICP) canister đóng vai trò dead-drop command and control channel. Thiết kế này cho phép thay đổi payload giai đoạn hai mà không cần can thiệp vào implant đang chạy trên máy bị nhiễm, làm tăng khả năng tồn tại trước các nỗ lực vô hiệu hóa thông thường.
Dữ liệu bị nhắm đến
- biến môi trường
- SSH keys
- cloud credentials cho AWS, Azure, GCP
- Kubernetes service account tokens
- Docker registry credentials
- TLS private keys
- Browser login storage
- Crypto wallet files liên quan đến MetaMask và Phantom
Dữ liệu thu thập được exfiltrate qua HTTPS tới endpoint ICP canister. Trong trường hợp không có RSA public key trên hệ thống đích, malware chuyển sang gửi dữ liệu ở dạng plaintext. Cơ chế này làm giảm khả năng phát hiện xâm nhập nếu chỉ dựa vào kiểm tra luồng dữ liệu mã hóa.
IOC và dấu hiệu cần rà soát
Các IOC dưới đây được trích xuất từ hành vi kỹ thuật của chiến dịch CanisterWorm và nên được dùng để hunt trong phát hiện tấn công cũng như kiểm tra chuỗi CI/CD:
- postinstall hook bất thường trong package npm
- deploy.js chạy nền dạng detached process
- RSA public key fingerprint xuất hiện trong artifact hoặc cache CI/CD
- file hashes gắn với campaign
- phiên bản package có bump patch không giải thích được
- publish history bất thường từ cùng maintainer token
Khuyến nghị phản ứng và kiểm tra môi trường
Các hệ thống đã cài package thuộc namespace Namastex.ai nên được xem là có nguy cơ bảo mật. Cần xoay vòng ngay npm tokens, GitHub tokens, cloud credentials và SSH keys trên mọi máy đã cài các package liên quan.
Đồng thời, cần kiểm tra lịch sử publish package để tìm các lần tăng phiên bản không có lý do rõ ràng, đặc biệt khi cùng maintainer token được dùng cho nhiều package. Quét thêm artifact cache trong CI/CD để tìm RSA public key fingerprint và các hash đã biết gắn với chiến dịch.
Lệnh và kiểm tra CLI liên quan npm
npm config get registrynpm config listcat ~/.npmrcfind . -name .npmrc -o -name package.jsonVới môi trường build, nên bật phân tích script khi cài đặt để phát hiện postinstall hooks trước khi chúng chạy. Nếu các hệ thống chia sẻ cùng credential với môi trường Python, cần rà soát thêm để loại trừ hành vi cross-ecosystem propagation đã được ghi nhận trong hoạt động liên quan.
Trong bối cảnh cảnh báo CVE không phải là trọng tâm chính của sự cố này, trọng tâm cần ưu tiên là kiểm soát lỗ hổng CVE theo hướng supply chain, quản trị credential, và giám sát cài đặt package để giảm mối đe dọa từ các bản phát hành bị chèn mã độc.







