Một tấn công mạng chuỗi cung ứng có sự phối hợp tinh vi đã nhắm vào cộng đồng nhà phát triển vào ngày 16 tháng 3 năm 2026. Tác nhân đe dọa được biết đến với tên gọi Glassworm đã cài đặt backdoor vào hai gói npm React Native được sử dụng rộng rãi, biến chúng thành công cụ đánh cắp thông tin đăng nhập và tiền điện tử một cách âm thầm.
Các gói bị ảnh hưởng bao gồm [email protected] và [email protected]. Cả hai gói được phát hành chỉ trong vài phút bởi cùng một nhà xuất bản, AstrOOnauta. Tổng cộng, chúng đã đạt hơn 134.887 lượt tải xuống trong tháng trước khi cuộc tấn công xảy ra.
Phân tích Mối đe dọa Mạng chuỗi cung ứng React Native
Mục tiêu và Phương thức xâm nhập
Hai gói npm này đảm nhiệm các tác vụ giao diện người dùng di động quan trọng như nhập số điện thoại và chọn quốc gia. Điều này khiến chúng trở thành các thành phần tin cậy trong nhiều dự án phát triển, mở rộng bề mặt tấn công tiềm năng.
Cuộc tấn công mạng không yêu cầu bất kỳ hành động đặc biệt nào từ mục tiêu. Bất kỳ nhà phát triển, công cụ chạy CI (Continuous Integration), hoặc build agent nào chạy lệnh npm install tiêu chuẩn đều đủ để kích hoạt mã độc.
Cả hai bản phát hành độc hại đều đưa vào một hook preinstall mới. Hook này thực thi một tệp JavaScript bị làm rối mã (obfuscated) có tên install.js ngay cả trước khi gói hoàn tất quá trình cài đặt trên máy chủ.
Thiết kế này giúp quá trình lây nhiễm gần như vô hình. Các nhà phát triển không có lý do để nghi ngờ rằng một bản cập nhật gói thông thường lại âm thầm triển khai một payload Windows nhiều giai đoạn trực tiếp vào máy của họ.
Các gói npm bị ảnh hưởng và Quy mô tiếp xúc
Các nhà nghiên cứu tại Aikido đã xác định cả hai gói có backdoor và theo dõi toàn bộ chuỗi thực thi. Họ đã phục hồi và giải mã các payload giai đoạn hai và giai đoạn ba trực tiếp mà không cần thực thi.
Phân tích của họ xác nhận tệp loader có byte-identical trên cả hai gói, chia sẻ cùng một mã băm SHA-256.
Các thay đổi phiên bản cũng rất sạch sẽ. Hành vi độc hại chỉ được đưa vào thông qua một tệp install.js mới và một mục nhập preinstall tương ứng trong package.json. Điều này cho thấy một sự sửa đổi có chủ đích và có mục tiêu, chứ không phải là lỗi xây dựng.
Quy mô phơi nhiễm tiềm năng là nghiêm trọng. Chỉ trong tuần xảy ra cuộc tấn công mạng, hai gói này đã có tổng cộng 29.763 lượt tải xuống, và 134.887 lượt tải xuống trong tháng trước đó.
Các phiên bản sạch ngay trước các bản phát hành độc hại, cụ thể là @0.3.9 và @0.11.7, không chứa hook độc hại và đã được phát hành chỉ ba ngày trước đó vào ngày 13 tháng 3 năm 2026.
Các nhà phát triển xây dựng ứng dụng di động với tính năng nhập số điện thoại hoặc chọn quốc gia có nguy cơ trực tiếp. Ngoài ra, bất kỳ dự án nào kéo các gói này dưới dạng phụ thuộc gián tiếp cũng phải đối mặt với cùng một nguy hiểm.
Chuỗi lây nhiễm và Cơ chế ẩn danh trong tấn công mạng
Chuỗi lây nhiễm được phân lớp cẩn thận, sử dụng nhiều giai đoạn và các dịch vụ bên thứ ba hợp pháp để duy trì ẩn danh.
Kiểm tra Ngôn ngữ và Vị trí Địa lý
Một khi install.js được thực thi trên máy Windows, nó sẽ quét hệ thống để tìm các dấu hiệu ngôn ngữ tiếng Nga. Điều này bao gồm các biến được đặt thành ru_RU, ru-RU hoặc Russian. Mã độc cũng kiểm tra các múi giờ liên quan đến Nga.
Nếu các tín hiệu này xuất hiện, mã độc sẽ ngừng hoạt động mà không thực hiện bất kỳ hành động nào. Đây là một chiến thuật thường thấy trong mã độc của các tác nhân đe dọa nói tiếng Nga.
Sử dụng Blockchain Solana làm Cơ chế C2
Nếu kiểm tra vị trí địa lý được thông qua, trình cài đặt sẽ truy vấn một tài khoản blockchain Solana. Nó sử dụng phương thức getSignaturesForAddress RPC để truy xuất một URL được mã hóa base64 ẩn trong một memo giao dịch.
Việc sử dụng tài khoản blockchain công khai làm relay phân phối khiến địa chỉ giai đoạn hai rất khó bị chặn thông qua các phương pháp lọc miền hoặc mạng thông thường.
Kịch bản giai đoạn hai được trả về sau đó cung cấp các khóa giải mã để mở khóa payload giai đoạn ba. Đây là một trình đánh cắp dữ liệu (stealer) hoàn chỉnh nhắm vào Windows. Thông tin chi tiết về nghiên cứu có thể được tìm thấy tại Aikido Security Blog.
Cơ chế duy trì và Payload cuối cùng
Giai đoạn thứ ba thiết lập tính bền vững thông qua Windows Task Scheduler và khóa registry Run. Sau đó, nó sử dụng một liên kết Google Calendar làm relay bổ sung trước khi kéo các thành phần khác từ máy chủ do kẻ tấn công kiểm soát.
Payload cuối cùng quét dữ liệu ví từ MetaMask, Exodus, Atomic, Guarda, Coinomi, Trust Wallet và OKX Wallet. Đồng thời, nó cũng thu thập các npm tokens và thông tin đăng nhập GitHub đã lưu trữ thông qua các lệnh xác thực gốc.
Đây là một sự cố nghiêm trọng dẫn đến nguy cơ rò rỉ dữ liệu nhạy cảm và tài sản tiền điện tử.
Chỉ số xâm nhập (IOCs)
Các chỉ số xâm nhập liên quan đến tấn công mạng này bao gồm:
- Các gói npm độc hại:
- Địa chỉ IP C2 (Command and Control):
45[.]32[.]150[.]251217[.]69[.]3[.]152
Các biện pháp phòng ngừa và Khắc phục
Để bảo vệ hệ thống khỏi các cuộc tấn công mạng tương tự và giảm thiểu rủi ro, các nhà phát triển và tổ chức cần thực hiện các biện pháp sau:
- Kiểm tra ngay lập tức: Kiểm tra các tệp khóa (lock files) để tìm sự hiện diện của
[email protected]hoặc[email protected]. Bất kỳ máy nào đã cài đặt một trong hai phiên bản này nên được coi là đã bị xâm phạm. - Xoay vòng thông tin đăng nhập: Xoay vòng tất cả các npm tokens, thông tin đăng nhập GitHub và khóa ví tiền điện tử đã có thể truy cập trên các hệ thống bị ảnh hưởng.
- Xem xét nhật ký mạng: Kiểm tra nhật ký mạng đi (outbound network logs) để tìm các kết nối đến các địa chỉ IP
45[.]32[.]150[.]251và217[.]69[.]3[.]152. - Kiểm tra script vòng đời gói: Kiểm tra các script vòng đời gói và gắn cờ các hook
preinstallbất thường trong môi trường xây dựng. Điều này giúp giảm khả năng phơi nhiễm với các cuộc tấn công chuỗi cung ứng tương tự. - Cập nhật hệ thống: Đảm bảo rằng tất cả các thư viện và công cụ đều được cập nhật lên bản vá bảo mật mới nhất.










