Nguy hiểm! Mã độc fezbox: Mối đe dọa mạng từ QR code trên npm

Một gói npm mới có tên fezbox đã được nhóm nghiên cứu của Socket Threat phát hiện là một cơ chế phát tán mã độc tinh vi. Gói này được thiết kế để đánh cắp thông tin đăng nhập (username và password) từ cookie trình duyệt thông qua một mã QR nhúng, đại diện cho một mối đe dọa mạng đáng kể trong hệ sinh thái phát triển phần mềm.
Được phát hành dưới bí danh npm janedu (email đăng ký janedu0216@gmail[.]com), gói fezbox này ngụy trang thành một thư viện tiện ích JavaScript/TypeScript vô hại. Tuy nhiên, nó âm thầm tìm nạp và thực thi mã được che giấu bên trong một hình ảnh mã QR kỹ thuật steganography, được lưu trữ trên Cloudinary.
Phân tích Mã độc fezbox: Chi tiết về kỹ thuật tấn công
Tại thời điểm phát hiện, fezbox vẫn còn hoạt động trên npm. Socket đã yêu cầu nhóm bảo mật của npm gỡ bỏ gói này và đình chỉ tài khoản của kẻ tấn công.
Theo bản dịch từ tiếng Trung giản thể, fezbox được giới thiệu là “một thư viện tiện ích JavaScript/TypeScript bao gồm các hàm trợ giúp phổ biến, được tổ chức theo các module tính năng để bạn có thể chỉ nhập những gì bạn cần.”
Tệp README của nó nhấn mạnh các tính năng như kiểu TypeScript, kiểm tra tích hợp, hiệu suất cao và một “Module Mã QR” để tạo và phân tích mã QR.
Tuy nhiên, không có cảnh báo nào cho biết việc chỉ nhập thư viện này sẽ kích hoạt một quy trình nền, tìm nạp và chạy mã ẩn trong một hình ảnh mã QR từ xa.
Cơ chế che giấu và thực thi Payload
Công cụ quét của Socket AI đã nhanh chóng xác định fezbox là mã độc đã biết. Phân tích sâu hơn cho thấy gói này sử dụng nhiều lớp che giấu để vượt qua các công cụ phân tích tĩnh và người đánh giá.
Khi kiểm tra, tệp phân phối CommonJS đã được rút gọn (minified) để lộ một loạt các chức năng tiện ích được xuất ra – từ giải mã AES đến các hàm hỗ trợ cookie và localStorage. Đồng thời, nó chứa một hàm tự gọi (self-invoking function) làm trì hoãn việc thực thi payload độc hại trong hai phút.
Mã độc đầu tiên đảm bảo rằng nó đang chạy trong môi trường sản xuất (không phải môi trường phát triển hoặc sandbox ảo) bằng cách kiểm tra cờ phát triển và sử dụng cơ chế bảo vệ xác suất 2/3.
Sau khi chờ 120 giây, nó khởi tạo một QRCodeScriptLoader và tìm nạp một hình ảnh mã QR. Chuỗi URL của hình ảnh này được lưu trữ theo thứ tự đảo ngược để né tránh sự phát hiện.
Khi được đảo ngược, URL này giải quyết thành:
https://res.cloudinary.com/dtg0a3s0f/image/upload/v1709405459/a18b6255d642e18b_t88k14.png
Trình tải sau đó phân tích mã QR từ hình ảnh và thực thi payload JavaScript được nhúng.
Các Lớp Che giấu Mã độc và IOCs
Kẻ tấn công áp dụng ba lớp che giấu riêng biệt để che giấu hành vi đánh cắp thông tin đăng nhập:
- Chuỗi URL bị đảo ngược (như đã đề cập ở trên).
- Sử dụng hình ảnh mã QR để lưu trữ mã độc (steganography).
- Mã JavaScript nhúng được che giấu kỹ lưỡng để tránh bị phát hiện.
Sau khi được giải mã, payload đọc như sau:
(function() {
// Code to harvest username and password cookies
// Sends data via HTTPS POST to attacker's server
// Exits silently
})();
Script này thu thập các cookie chứa tên người dùng và mật khẩu nếu chúng tồn tại, sau đó gửi chúng qua HTTPS POST đến máy chủ của kẻ tấn công và thoát một cách âm thầm. May mắn thay, các ứng dụng web hiện đại hiếm khi lưu trữ mật khẩu dưới dạng văn bản thuần túy trong cookie, điều này hạn chế tác động thực tế của cuộc tấn công cụ thể này.
Các chỉ số thỏa hiệp (IOCs) liên quan đến mã độc fezbox:
- Tên gói npm:
fezbox - Bí danh npm:
janedu - Email đăng ký:
janedu0216@gmail[.]com - URL hình ảnh mã QR độc hại:
https://res.cloudinary.com/dtg0a3s0f/image/upload/v1709405459/a18b6255d642e18b_t88k14.png
Giảm thiểu rủi ro bảo mật và Phát hiện xâm nhập
Việc sử dụng sáng tạo mã QR kỹ thuật steganography nhấn mạnh cách các tác nhân đe dọa sẽ liên tục đổi mới để vượt qua các công cụ bảo mật và né tránh phát hiện xâm nhập. Đây là một rủi ro bảo mật đáng chú ý cho chuỗi cung ứng phần mềm.
Các công cụ phân tích tĩnh truyền thống có thể bỏ qua các chuỗi ký tự bị đảo ngược hoặc hoàn toàn bỏ qua các module mã QR, làm nổi bật sự cần thiết của việc quét phụ thuộc dựa trên phân tích động và hành vi.
Để biết thêm chi tiết về phân tích kỹ thuật của fezbox, bạn có thể tham khảo bài viết từ Socket Threat Research Team: Malicious fezbox npm package steals browser passwords from cookies via innovative QR code.
Khuyến nghị bảo mật cho các nhà phát triển và tổ chức
Các nhà phát triển và đội ngũ bảo mật nên áp dụng các phương pháp tốt nhất sau đây để giảm thiểu rủi ro bảo mật từ các mối đe dọa mạng chuỗi cung ứng:
- Kiểm tra phụ thuộc (Dependency Scanning): Thực hiện quét thường xuyên các gói và thư viện được sử dụng để phát hiện các lỗ hổng hoặc mã độc đã biết.
- Phân tích tĩnh (Static Analysis): Sử dụng các công cụ phân tích mã tĩnh để kiểm tra mã nguồn cho các mẫu nguy hiểm. Tuy nhiên, cần lưu ý rằng các kỹ thuật che giấu có thể vượt qua chúng.
- Phân tích động và hành vi (Dynamic and Behavioral Analysis): Triển khai các giải pháp phân tích động để quan sát hành vi của các gói trong môi trường runtime. Điều này giúp phát hiện các hoạt động đáng ngờ mà phân tích tĩnh bỏ lỡ.
- Giám sát runtime (Runtime Monitoring): Liên tục giám sát các ứng dụng đang chạy để kịp thời phát hiện xâm nhập và các hoạt động bất thường.
- Chính sách bảo mật chặt chẽ: Thiết lập các chính sách rõ ràng về việc sử dụng thư viện bên thứ ba và quy trình phê duyệt nghiêm ngặt.
Bằng cách áp dụng phương pháp bảo mật đa lớp kết hợp kiểm tra tĩnh, phân tích động và giám sát runtime, các tổ chức có thể đi trước các cuộc tấn công chuỗi cung ứng ngày càng tinh vi và bảo vệ thông tin đăng nhập của người dùng khỏi các mối đe dọa mạng được che giấu một cách khéo léo.









