Các nhà nghiên cứu an ninh mạng đã phát hiện ba gói npm độc hại được thiết kế để phân phối một loại mã độc chưa từng được ghi nhận trước đây có tên là NodeCordRAT.
Tên của các gói này, tất cả đều đã bị gỡ xuống vào tháng 11 năm 2025, được liệt kê dưới đây. Chúng được tải lên bởi người dùng có tên "wenmoonx."
- bitcoin-main-lib (2.300 lượt tải xuống)
- bitcoin-lib-js (193 lượt tải xuống)
- bip40 (970 lượt tải xuống)
"Các gói bitcoin-main-lib và bitcoin-lib-js thực thi một script postinstall.cjs trong quá trình cài đặt, sau đó cài đặt bip40, gói chứa payload độc hại," các nhà nghiên cứu Satyam Singh và Lakhan Parashar từ Zscaler ThreatLabz cho biết. "Payload cuối cùng này, được ThreatLabz đặt tên là NodeCordRAT, là một trojan truy cập từ xa (RAT) có khả năng đánh cắp dữ liệu."
NodeCordRAT có tên gọi từ việc sử dụng npm làm vector lây lan và máy chủ Discord để liên lạc C2. Mã độc này được trang bị để đánh cắp thông tin đăng nhập Google Chrome, API tokens và các cụm từ hạt giống (seed phrases) từ các ví tiền điện tử như MetaMask.
Theo công ty an ninh mạng, tác nhân đe dọa đằng sau chiến dịch này được đánh giá là đã đặt tên các gói theo các kho lưu trữ thực tế được tìm thấy trong dự án bitcoinjs hợp pháp, chẳng hạn như bitcoinjs-lib, bip32, bip38 và bip38.
Cả "bitcoin-main-lib" và "bitcoin-lib-js" đều bao gồm một tệp "package.json" với "postinstall.cjs" là một script postinstall, dẫn đến việc thực thi "bip40" chứa payload NodeCordRAT.
Mã độc, ngoài việc thu thập dấu vân tay của máy chủ bị lây nhiễm để tạo ra một định danh duy nhất trên các hệ thống Windows, Linux và macOS, còn lợi dụng một máy chủ Discord được mã hóa cứng để mở một kênh liên lạc bí mật nhằm nhận và thực thi các lệnh -
!run, để thực thi các lệnh shell tùy ý bằng cách sử dụng hàmexeccủa Node.js!screenshot, để chụp ảnh màn hình đầy đủ và gửi tệp PNG đến kênh Discord!sendfile, để tải lên một tệp được chỉ định đến kênh Discord
"Dữ liệu này được gửi đi bằng API của Discord với một token được mã hóa cứng và được gửi đến một kênh riêng tư," Zscaler cho biết. "Các tệp bị đánh cắp được tải lên dưới dạng tệp đính kèm tin nhắn thông qua endpoint REST của Discord /channels/{id}/messages."