Cảnh Báo: Thư Viện Axios Bị Tấn Công Mã Độc Trên NPM – Cài Đặt Ngay Bản Vá!
Axios – thư viện HTTP client phổ biến nhất thế giới với hơn 300 triệu lượt tải hàng tuần – vừa trở thành nạn nhân của một cuộc tấn công chuỗi cung ứng (supply chain attack) cực kỳ tinh vi. Kẻ tấn công đã chiếm quyền điều khiển tài khoản của quản trị viên để tung ra các phiên bản chứa mã độc nhằm cài đặt Trojan điều khiển từ xa (RAT).
1. Tóm tắt sự việc: Chuyện gì đã xảy ra với Axios?
Vào ngày 30/03/2026, các chuyên gia bảo mật tại StepSecurity đã phát hiện hai phiên bản độc hại của Axios được tải lên nền tảng npm: axios@1.14.1 và axios@0.30.4.
Điểm đáng sợ là kẻ tấn công không sửa đổi bất kỳ dòng mã nào bên trong mã nguồn chính của Axios. Thay vào đó, chúng tiêm vào một dependency “ma” có tên là plain-crypto-js@4.2.1. Gói này chứa một tập lệnh postinstall tự động thực thi ngay khi người dùng chạy lệnh npm install.
2. Phân tích kỹ thuật: Cách thức mã độc hoạt động
Cuộc tấn công này được đánh giá là có sự chuẩn bị vô cùng kỹ lưỡng với các bước thực hiện chuyên nghiệp:
Bước 1: Chiếm quyền tài khoản Quản trị viên (Maintainer)
Kẻ tấn công đã chiếm được tài khoản npm của jasonsaayman (duy trì chính của Axios). Chúng thay đổi email đăng ký sang một địa chỉ ProtonMail ẩn danh và thực hiện việc xuất bản (publish) thủ công từ máy cá nhân, thay vì thông qua quy trình CI/CD bảo mật bằng GitHub Actions như thông thường.
Bước 2: Chuẩn bị “Vũ khí” (Malicious Dependency)
Trước khi tấn công Axios, kẻ tấn công đã tạo ra gói plain-crypto-js. Gói này giả mạo thư viện mã hóa nổi tiếng crypto-js để đánh lừa các công cụ quét bảo mật tự động.
- Phiên bản 4.2.0: Là một bản “sạch” để tạo dựng uy tín.
- Phiên bản 4.2.1: Chứa mã độc thực sự (RAT Dropper).
Bước 3: Cơ chế “Thả” mã độc (Dropper) đa nền tảng
Tập lệnh setup.js trong gói độc hại sử dụng kỹ thuật xáo trộn mã (obfuscation) phức tạp để tránh bị phát hiện. Khi được thực thi, nó sẽ kiểm tra hệ điều hành của nạn nhân và tải xuống các payload tương ứng:
- macOS: Sử dụng AppleScript để tải một file nhị phân vào thư mục cache hệ thống, giả mạo là một tiến trình của Apple (
com.apple.act.mond). - Windows: Sử dụng VBScript và PowerShell để tải mã độc, đồng thời sao chép PowerShell thành
wt.exe(giả danh Windows Terminal) để duy trì sự hiện diện lâu dài. - Linux: Sử dụng tập lệnh Python để kết nối với máy chủ điều khiển (C2).
3. Khả năng tự xóa dấu vết (Anti-Forensics)
Một trong những điểm tinh vi nhất của cuộc tấn công này là khả năng “tự hủy”. Sau khi mã độc đã được cài đặt vào hệ thống, nó sẽ tự động ghi đè tệp package.json của chính nó bằng một phiên bản sạch.
Điều này khiến cho các nhà phát triển khi kiểm tra thư mục node_modules sau đó sẽ không thấy bất kỳ dấu hiệu khả nghi nào (như các script postinstall độc hại).
4. Dấu hiệu nhận biết hệ thống bị xâm nhập (IoCs)
Nếu bạn hoặc dự án của bạn có các dấu hiệu sau, hãy coi như hệ thống đã bị chiếm quyền điều khiển:
- Đã cài đặt hoặc cập nhật lên phiên bản axios@1.14.1 hoặc axios@0.30.4.
- Sự xuất hiện của thư mục
node_modules/plain-crypto-js/. - Có kết nối mạng bất thường đến domain:
sfrclak.com:8000. - Sự xuất hiện của các file lạ:
/tmp/ld.py(Linux),%PROGRAMDATA%\wt.exe(Windows), hoặc/Library/Caches/com.apple.act.mond(macOS).
5. Hành động ngay: Cách khắc phục và phòng ngừa
Để bảo vệ dự án của bạn, hãy thực hiện ngay các bước sau:
- Kiểm tra phiên bản: Chạy lệnh
npm list axiosđể xem bạn có đang dùng phiên bản lỗi hay không. - Hạ cấp hoặc Cập nhật: Ngay lập tức gỡ bỏ phiên bản lỗi và quay về các bản ổn định trước đó (ví dụ:
1.14.0hoặc0.30.3), hoặc cập nhật lên bản vá mới nhất nếu đã có. - Xóa bộ nhớ đệm: Chạy
npm cache clean --forceđể đảm bảo không còn tàn dư của gói độc hại. - Kiểm tra hệ thống: Tiến hành quét virus và kiểm tra các tiến trình chạy ngầm để đảm bảo Trojan chưa kịp thiết lập kết nối C2.
- Sử dụng công cụ bảo mật: Cân nhắc sử dụng các giải pháp như StepSecurity Harden-Runner để giám sát các kết nối mạng và tiến trình lạ ngay trong quy trình CI/CD.
