Axios – một trong những thư viện HTTP client được sử dụng rộng rãi nhất trong hệ sinh thái JavaScript, từ các framework frontend, dịch vụ backend cho đến các ứng dụng doanh nghiệp với hơn 83 triệu lượt tải hàng tuần – vừa trở thành nạn nhân của một chiến dịch tấn công chuỗi cung ứng được chuẩn bị cực kỳ tinh vi. Theo báo cáo từ chuyên gia an ninh mạng, tin tặc chiếm quyền tài khoản npm của duy trì viên chính (tên là: jasonsaayman), tin tặc đã phát hành các phiên bản nhiễm độc 1.14.1 và 0.30.4 nhằm vượt qua hoàn toàn quy trình kiểm soát tự động (GitHub Actions CI/CD). Khi người dùng vô tình cài đặt các phiên bản Axios nhiễm độc, vòng đời postinstall của npm sẽ tự động kích hoạt mã độc. Quá trình bắt đầu với một trình thả Node.js đã bị làm rối mã mang tên setup.js, nằm bên trong một phụ thuộc gián tiếp giả mạo mang tên plain-crypto-js@4.2.1.
Nhiệm vụ của setup.js là tự động nhận diện hệ điều hành để tải về các Payload giai đoạn hai phù hợp:
- macOS: Dropper chạy payload AppleScript để tải tệp thực thi Trojan giai đoạn hai từ máy chủ C2 (sfrclak.com:8000), lưu tại/Library/Caches/com.apple.act.mond, cấp quyền thực thi và chạy ngầm qua /bin/zsh. Ngay sau đó, tệp AppleScript gốc bị xóa để xóa dấu vết.
- Windows: Dropper tìm đường dẫn PowerShell, sao chép nó thành %PROGRAMDATA%\wt.exe (giả mạo ứng dụng Windows Terminal). Sau đó, nó tạo và thực thi một tệp VBScript trong thư mục tạm (temp). VBScript này đóng vai trò trung gian, liên lạc với máy chủ C2 để tải và chạy script PowerShell RAT thực sự, rồi tự xóa bản thân.
- Linux: Tận dụng Node.js, dropper chạy lệnh shell qua execSync để tải một script Python RAT từ máy chủ C2, lưu vào /tmp/ld.py và chạy ngầm bằng lệnh nohup.
Theo báo cáo phân tích, mỗi kịch bản OS gửi một thân POST riêng biệt đến cùng một URL C2 – packages.npm.org/product0(macOS), product1(Windows), product2(Linux) – cho phép máy chủ C2 phục vụ payload phù hợp từ một endpoint duy nhất.
Payload chính trên macOS là một mã độc RAT được viết bằng C++. Nó sở hữu khả năng trích xuất thông tin định danh hệ thống và gửi tín hiệu beacon đến máy chủ từ xa mỗi 60 giây để nhận lệnh. Các lệnh được hỗ trợ bao gồm: thực thi thêm payload, chạy lệnh shell, liệt kê hệ thống tệp và tự chấm dứt.
Phân tích của SafeDep về bản RAT trên Linux xác nhận nó có các chức năng tương tự bản macOS. Mặc dù bản RAT này thiếu cơ chế duy trì sự hiện diện sau khi khởi động lại, các chuyên gia nhận định cuộc tấn công có thể nhắm vào việc trích xuất dữ liệu nhanh chóng hoặc kẻ tấn công sẽ lợi dụng khả năng chạy lệnh shell để triển khai các cơ chế persistence khác ngay sau đó.
Dựa trên hệ điều hành của nạn nhân (macOS, Windows hoặc Linux), dropper sẽ kéo về các payload RAT (Remote Access Trojan) chuyên biệt để chiếm quyền điều khiển từ xa. Ngay sau khi payload RAT chính được khởi chạy, mã độc Node.js thực hiện ba bước dọn dẹp giám định:
- Xóa script postinstall độc hại khỏi thư mục gói.
- Xóa tệp package.json chứa hook postinstall độc hại.
Đổi tên tệp package.md thành package.json. Tệp package.mdthực chất là một tệp manifest sạch, không chứa hook postinstall độc hại, tạo ra một lớp ngụy trang hoàn hảo nếu quản trị viên kiểm tra gói sau khi bị nhiễm.
Lộ trình thời gian cuộc tấn công (Giờ UTC)
- 30/03/2026, 05:57: Phát hành bản sạch plain-crypto-js@4.2.0.
- 30/03/2026, 23:59: Phát hành bản độc hại plain-crypto-js@4.2.1.
- 31/03/2026, 00:21: Phát hành axios@1.14.1 nhiễm độc.
- 31/03/2026, 01:00: Phát hành axios@0.30.4 nhiễm độc.
Các gói bổ sung bị ảnh hưởng
Công ty bảo mật Socket xác định thêm các gói khác cũng đang phát tán mã độc này qua cơ chế phụ thuộc vendored:
- @shadanai/openclaw (phiên bản 2026.3.28-2 đến 2026.3.31-2).
- @qqbrowser/openclaw-qbot (phiên bản 0.0.130).
Khuyến nghị khẩn cấp từ các chuyên gia bảo mật
Trước tính chất nghiêm trọng và khả năng tự xóa dấu vết tinh vi của cuộc tấn công, doanh nghiệp và các nhà phát triển cần thực hiện ngay các biện pháp ứng phó sau:
1. Phản ứng kỹ thuật tức thì: Truy quét và Hạ cấp phiên bản
- Xóa bỏ thư mục độc hại: Quản trị viên cần thực hiện hạ cấp Axios về các phiên bản an toàn đã được xác thực là 1.14.0 hoặc 0.30.3. Đồng thời, tiến hành xóa bỏ hoàn toàn thư mục node_modules và thực hiện cài đặt mới để loại bỏ triệt để gói plain-crypto-js nếu hiện diện.
- Vô hiệu hóa hạ tầng điều khiển: Thiết lập tường lửa để ngăn chặn toàn bộ lưu lượng truy cập đi tới tên miền điều khiển của tin tặc tại địa chỉ: sfrclak[.]com. Đây là bước then chốt để cắt đứt liên lạc giữa mã độc và máy chủ C2.
2. Rà soát chỉ số nhận diện xâm nhập (IoCs)
Do mã độc có khả năng tự hủy để né tránh giám định pháp y, việc kiểm tra thủ công các tệp tin lạ trên hệ thống là bắt buộc để xác định mức độ phơi nhiễm:
- Hệ điều hành macOS: Kiểm tra sự tồn tại của tệp Trojan tại đường dẫn /Library/Caches/com.apple.act.mond.
- Hệ điều hành Windows: Tìm kiếm tệp thực thi giả mạo ứng dụng Windows Terminal tại %PROGRAMDATA%\wt.exe.
- Hệ điều hành Linux: Truy quét các script Python chạy ngầm tại thư mục tạm /tmp/ld.py.
Lưu ý đặc biệt: Nếu phát hiện bất kỳ dấu hiệu nào trong các IoCs nêu trên, doanh nghiệp phải kích hoạt quy trình ứng phó sự cố ở mức cao nhất: Thay đổi toàn bộ khóa bí mật, mã API và thông tin đăng nhập trên hệ thống, do các dữ liệu này có khả năng cao đã bị mã độc RAT trích xuất thành công.
