Phần mềm độc hại AI-generated mới xuất hiện trên hệ sinh thái mã nguồn mở đang cho thấy rủi ro bảo mật ngày càng tăng trong chuỗi cung ứng phần mềm. Trường hợp của gói npm mouse5212-super-formatter là một ví dụ điển hình: nó được ngụy trang như tiện ích nội bộ hợp lệ nhưng thực chất là một infostealer chuyên sao chép tệp từ máy nạn nhân lên kho lưu trữ từ xa.
Phân tích hành vi của gói npm độc hại
Gói mouse5212-super-formatter được phát hiện trên npm registry với mô tả giả mạo là công cụ “archive deployment sync”. Cách đặt tên và mô tả khiến nó trông giống một thành phần nội bộ, nhằm giảm khả năng bị nghi ngờ khi được cài đặt.
Bên dưới lớp ngụy trang đó, mã độc được thiết kế để quét một thư mục xác định trên máy nạn nhân, sau đó tải toàn bộ tệp tìm thấy lên một remote GitHub repository. Theo phân tích của OX Security, gói này đã đạt 676 lượt tải trước khi bản chất độc hại bị phát hiện, và vẫn còn tồn tại trên npm tại thời điểm công bố.
Tham khảo phân tích gốc từ OX Security tại: https://www.ox.security/blog/malware-slop-new-malicious-npm-package-leaks-its-own-github-private-token/
Mã độc npm và sai sót lộ thông tin vận hành
Điểm bất thường của sự cố không nằm ở hành vi exfiltration, mà ở việc mã độc vô tình để lộ một private GitHub token được hardcode bên trong code. Token này thuộc về chính tác nhân đe dọa, không phải nạn nhân, và cho phép nhà nghiên cứu theo dõi hoạt động rò rỉ dữ liệu theo thời gian thực.
OX Security ghi nhận khoảng 7 sự kiện exfiltration đang hoạt động trong repository GitHub của tác nhân trước khi nó bị gỡ xuống. Phần lớn trong số đó có vẻ là các lần thử nghiệm trong quá trình phát triển mã độc.
Tài khoản GitHub liên quan chỉ được tạo vài giờ trước khi phiên bản độc hại đầu tiên được đưa lên npm. Sau khi bị phát hiện, tài khoản này đã bị xóa.
Cơ chế hoạt động của malware
Sau khi được cài đặt, malware xác thực với GitHub bằng environment token hoặc token hardcoded dự phòng. Nó kiểm tra xem repository mục tiêu đã tồn tại hay chưa, sau đó tạo mới nếu cần.
Tiếp theo, nó duyệt đệ quy thư mục /mnt/user-data và tải từng tệp lên bằng GitHub Contents API. Để tránh bị chú ý, dữ liệu bị đánh cắp được lưu dưới một thư mục có tên ngẫu nhiên cho mỗi phiên, giúp tác nhân tách biệt các lần thu thập từ nhiều nạn nhân khác nhau.
Trong quá trình thực thi, malware còn ghi một tệp log giả về “network connections” để che đậy hoạt động đánh cắp dữ liệu dưới dạng chẩn đoán định kỳ.
Chi tiết kỹ thuật về obfuscation và thực thi
Để làm giảm khả năng bị phát hiện, các comment và commit message trong code được viết bằng ngôn ngữ kỹ thuật trung tính. Dữ liệu bị exfiltration cũng được mã hóa base64 trong quá trình truyền đi, đây là một kỹ thuật obfuscation cơ bản nhằm che giấu nội dung đầu ra.
Điều đáng chú ý là các sai sót trong triển khai cho thấy đây không phải là một chiến dịch được chuẩn hóa cao. Mã nguồn có dấu hiệu được tạo bởi công cụ AI nhưng người viết không nắm vững các nguyên tắc operational security hoặc thực hành lập trình an toàn.
Các hệ thống phát hiện tấn công và quy trình giám sát repository phần mềm cần đặc biệt chú ý đến những gói có lịch sử ngắn, ít lượt tải và không có dấu hiệu cộng đồng rõ ràng.
Các dấu hiệu quan sát được trong sự cố
Dưới đây là những chỉ dấu kỹ thuật đáng lưu ý từ phân tích này:
- Tên gói: mouse5212-super-formatter.
- Vai trò giả mạo: “archive deployment sync” utility.
- Hành vi chính: Quét thư mục cục bộ và tải tệp lên GitHub.
- Đường dẫn mục tiêu: /mnt/user-data.
- Phương thức exfiltration: GitHub Contents API.
- Kỹ thuật che giấu: Base64, log giả, tên thư mục ngẫu nhiên.
- Số lượt tải: 676.
- IOC nổi bật: Private GitHub token bị hardcode trong malware.
IOC và chỉ dấu liên quan
Trong nội dung được cung cấp, IOC chủ yếu liên quan đến artefact hạ tầng và dấu vết vận hành của tác nhân. Các chuỗi quan sát được có thể dùng để săn tìm trong môi trường kiểm soát nội bộ hoặc nền tảng threat intelligence.
- Package name: mouse5212-super-formatter
- Target directory: /mnt/user-data
- Exfiltration channel: GitHub Contents API
- Credential artefact: Hardcoded private GitHub token
- Runtime artifact: Fake “network connections” log
Ảnh hưởng đối với hệ thống và dữ liệu
Sự cố này cho thấy hệ thống bị xâm nhập không nhất thiết cần khai thác lỗ hổng CVE để gây thiệt hại. Chỉ cần người dùng cài đặt một gói npm độc hại, dữ liệu cục bộ có thể bị thu thập và chuyển ra ngoài qua kênh hợp lệ như GitHub.
Rủi ro lớn nhất là rò rỉ dữ liệu nhạy cảm từ thư mục làm việc nội bộ, tệp cấu hình, mã nguồn, khóa API hoặc tài liệu dự án. Vì hoạt động exfiltration diễn ra qua dịch vụ phổ biến, việc phát hiện tấn công có thể khó nếu không có giám sát lưu lượng và hành vi tiến trình phù hợp.
Trường hợp này không gắn với một lỗ hổng CVE cụ thể, nhưng vẫn là một cảnh báo quan trọng về rủi ro an toàn thông tin trong hệ sinh thái npm và quy trình phụ thuộc phần mềm.
Khuyến nghị xử lý sau khi cài đặt gói bị nhiễm
Nếu môi trường đã cài đặt mouse5212-super-formatter, cần thực hiện các bước xử lý ngay để giảm thiểu rủi ro bảo mật:
- Thu hồi mọi GitHub access token có thể đã tồn tại trong môi trường bị ảnh hưởng.
- Coi toàn bộ tệp trong /mnt/user-data là có khả năng bị lộ.
- Rà soát dữ liệu trong thư mục này để xác định tệp nhạy cảm hoặc mã nguồn bị sao chép.
- Kiểm tra lịch sử cài đặt gói npm và các artifact liên quan đến chuỗi cung ứng phần mềm.
Kiểm tra nhanh môi trường npm
Nếu cần đối chiếu gói đã cài, có thể kiểm tra dependency tree và nhật ký cài đặt bằng CLI:
npm ls --all
npm audit
cat package-lock.json | grep -n "mouse5212-super-formatter"Ý nghĩa đối với phát hiện tấn công và giám sát
Vụ việc này nhấn mạnh rằng phát hiện xâm nhập trong môi trường phát triển không chỉ dựa vào chữ ký mã độc. Cần theo dõi hành vi bất thường như truy cập thư mục nội bộ, tạo repository GitHub mới, tải tệp số lượng lớn và sử dụng token bất thường trong tiến trình cài đặt package.
Đối với các đội vận hành an ninh, việc kết hợp IDS, giám sát package registry và kiểm tra token lộ lọt sẽ giúp giảm thiểu nguy cơ từ các chiến dịch mã độc AI-generated tương tự. Các tổ chức có thể tham chiếu thêm dữ liệu chuỗi cung ứng phần mềm từ NVD tại: https://nvd.nist.gov/










