Nhóm hacker Triều Tiên liên quan đến chiến dịch Contagious Interview đã phát tán 108 gói và tiện ích mở rộng trình duyệt độc hại trên các nền tảng npm, Packagist, Go và Google Chrome, trong một hoạt động đang diễn ra có tên PolinRider. Theo nhà nghiên cứu bảo mật Karlo Zanki của Socket, chiến dịch vẫn đang hoạt động và các gói độc hại mới có thể tiếp tục xuất hiện khi tin tặc chiếm quyền kiểm soát tài khoản duy trì, sửa đổi kho lưu trữ hợp pháp và xuất bản các phiên bản bị nhiễm.

Quy mô và phạm vi của chiến dịch PolinRider

Tổng cộng 162 tạo phẩm phát hành độc hại tương ứng với 108 gói và tiện ích mở rộng duy nhất, bao gồm 19 thư viện npm, 10 gói Composer, 61 mô-đun Go và một tiện ích mở rộng Google Chrome. Chiến dịch Contagious Interview, vốn hoạt động từ ít nhất năm 2023, sử dụng các cuộc phỏng vấn xin việc giả mạo để nhắm vào các nhà phát triển phần mềm và cá nhân trong lĩnh vực tiền điện tử, dụ họ thực thi mã độc. Tin tặc thường giả danh nhà tuyển dụng hoặc cộng tác viên trên các nền tảng như LinkedIn, GitHub hoặc các trang web làm việc tự do, thậm chí dựng lên các công ty bình phong và hồ sơ nhân viên do AI tạo ra để xây dựng lòng tin.

Cách thức tấn công và lây nhiễm

PolinRider lần đầu được nhóm OpenSourceMalware phát hiện vào tháng 3 năm 2026. Tin tặc cấy các tải trọng JavaScript bị làm rối vào hàng trăm kho lưu trữ GitHub công khai, nhằm phát tán một biến thể mới của BeaverTail – một phần mềm độc hại JavaScript liên quan đến Contagious Interview. Tính đến ngày 11/4/2026, hoạt động này đã xâm phạm 1.951 kho lưu trữ GitHub công khai thuộc về 1.047 chủ sở hữu duy nhất, đồng thời hợp nhất với một cụm khác có tên TaskJacker, vốn thả các tệp tác vụ VS Code độc hại vào kho lưu trữ của người dùng GitHub. Các tác vụ VS Code bao gồm tùy chọn "runOn: 'folderOpen'" để kích hoạt thực thi mã tùy ý khi thư mục được mở dưới dạng không gian làm việc trong IDE như VS Code hoặc Cursor.

Theo OpenSourceMalware, tin tặc không sử dụng thông tin đăng nhập GitHub bị đánh cắp. Thay vào đó, nạn nhân bị xâm phạm thông qua tiện ích mở rộng VS Code hoặc gói npm độc hại. Các nhà nghiên cứu tin rằng kẻ tấn công đang chiếm quyền kiểm soát tài khoản duy trì, có thể thông qua chiếm quyền tên miền hết hạn hoặc đường dẫn khôi phục tài khoản khác.

Kỹ thuật che giấu và tác động

Sau khi thực thi, mã độc tìm kiếm các tệp cụ thể trên máy tính bị nhiễm như "postcss.config.mjs", "tailwind.config.js", "eslint.config.mjs", "next.config.mjs", "babel.config.js" và "app.js", rồi thêm mã JavaScript độc hại vào chúng. Mã độc cũng sử dụng một tập lệnh batch Windows để sửa đổi lần commit cuối cùng một cách kín đáo, khiến chúng trông như do tác giả gốc thực hiện. Các công cụ tương tự được nghi ngờ được sử dụng để viết lại lịch sử Git trên các hệ điều hành khác như Linux và macOS.

Trong làn sóng mới nhất, tải trọng hoạt động như một trình tải mã độc JavaScript, kết nối với cơ sở hạ tầng blockchain bao gồm TRON, Aptos và BNB Smart Chain để tìm nạp tải trọng giai đoạn hai được mã hóa, giải nén thành DEV#POPPER RAT và OmniStealer. Chuỗi tấn công này đã được eSentire mô tả chi tiết vào tháng 3 năm 2026.

Khuyến nghị và cảnh báo

Zanki lưu ý: "Tin tặc sử dụng việc viết lại lịch sử Git, bao gồm force push và các commit có ngày giả để làm cho các thay đổi độc hại trông cũ hơn và ít đáng ngờ hơn. Điều này làm cho trang GitHub và lịch sử commit hiển thị trở nên không đáng tin cậy; người phòng thủ nên xem xét nhật ký hoạt động kho lưu trữ, siêu dữ liệu phát hành gói, cấu hình tác vụ VS Code và các thay đổi đáng ngờ đối với tệp cấu hình."

Phát hiện này diễn ra khi JFrog phát hiện một cụm gói npm liên quan đến Contagious Interview, một số gói giả dạng công cụ polyfill Rollup để cho phép truy cập từ xa và đánh cắp dữ liệu. Trước đó, một bộ gói npm và Go khác được xác định có tích hợp các tác vụ tự động chạy VS Code để thực thi tải trọng JavaScript ngụy trang dưới dạng tệp phông chữ giả, cho thấy sự chồng chéo chiến thuật giữa Fake Font, TaskJacker và PolinRider.

Người dùng đã cài đặt các gói này nên coi môi trường đã bị xâm phạm, xoay vòng các bí mật đã lộ từ một máy sạch, xóa các phiên bản bị ảnh hưởng và xây dựng lại từ một tệp khóa đáng tin cậy, đồng thời kiểm tra máy trạm và kho lưu trữ của nhà phát triển để tìm các đường dẫn thực thi ẩn hoặc các commit đáng ngờ đã sửa đổi các tệp ".vscode/tasks.json", "config.js", "vite.config.js" và "eslint.config.js".

Theo The Hacker News

Ảnh: Lucas Andrade / Pexels