Tin tức bảo mật về chiến dịch Void Dokkaebi cho thấy một chuỗi tấn công mạng nhắm vào nhà phát triển phần mềm thông qua các buổi phỏng vấn giả mạo và kho mã nguồn nhiễm độc. Mục tiêu là lôi kéo nạn nhân sao chép repository, mở project và vô tình kích hoạt mã độc ngay trên máy làm việc.
Chiến dịch lây nhiễm qua kho mã nguồn
Nhóm này còn được theo dõi với tên Famous Chollima. Phương thức tiếp cận bắt đầu bằng việc giả danh nhà tuyển dụng từ các công ty trong lĩnh vực tiền mã hóa và trí tuệ nhân tạo, sau đó liên hệ trực tiếp với lập trình viên trên các nền tảng nghề nghiệp.
Trong bài kiểm tra kỹ thuật giả, nạn nhân được yêu cầu clone repository từ GitHub, GitLab hoặc Bitbucket và chạy mã như một phần của “technical assessment”. Các repository này trông hợp lệ nhưng chứa mã ẩn, chạy ngay khi thư mục dự án được mở.
Cơ chế này biến máy phát triển thành công cụ phát tán mã độc, làm tăng rủi ro bảo mật trên toàn bộ chuỗi dự án. Một khi mã độc đã vào được môi trường lập trình, nó có thể lan sang repository khác thông qua commit và tái sử dụng component.
Phạm vi và mức độ ảnh hưởng của chiến dịch
Đến tháng 3/2026, phân tích ghi nhận hơn 750 repository bị nhiễm, hơn 500 cấu hình tác vụ Visual Studio Code độc hại và 101 trường hợp công cụ sửa lịch sử commit trên các nền tảng lưu trữ mã công khai. Quy mô này cho thấy đây không phải sự cố đơn lẻ mà là một chiến dịch có khả năng tự lan truyền qua cộng đồng phát triển.
Một số repository thuộc các dự án mã nguồn mở phổ biến cũng xuất hiện dấu vết nhiễm, cho thấy hệ thống bị xâm nhập có thể lan sang nhiều môi trường làm việc khác nhau nếu mã được chia sẻ tiếp. Khi nạn nhân đẩy mã lên repository hoặc tái sử dụng thành phần ở nơi khác, các tệp độc hại đi kèm và chờ kích hoạt ở lần mở tiếp theo.
Cách thức lây nhiễm trong Visual Studio Code
Chiến dịch sử dụng hai phương thức phối hợp. Phương thức thứ nhất khai thác tệp workspace của Visual Studio Code, cụ thể là file ẩn .vscode/tasks.json, được cấu hình để chạy tự động khi nhà phát triển mở thư mục dự án.
Khi người dùng chấp nhận lời nhắc workspace trust, tác vụ độc hại sẽ thực thi mà không cần tương tác thêm. Từ đó, nó có thể tải backdoor từ URL từ xa hoặc khởi chạy một tệp ngụy trang nằm trong repository để bung payload.
Đây là điểm đáng chú ý trong bối cảnh cảnh báo CVE và lỗ hổng zero-day: dù không liên quan một CVE cụ thể, chiến dịch vẫn khai thác hành vi mặc định của công cụ phát triển để đạt được remote code execution ở cấp độ người dùng.
Ví dụ tệp workspace độc hại
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "node .hidden/payload.js",
"problemMatcher": []
}
]
}Chèn mã và sửa lịch sử commit
Phương thức thứ hai trực tiếp hơn. Sau khi đạt được quyền truy cập từ xa vào máy phát triển, mã JavaScript bị làm rối sẽ được chèn vào source files trong repository của nạn nhân.
Mã độc được đẩy lệch sang mép phải bằng khoảng trắng, khiến nó khó bị phát hiện trong quá trình review nhanh. Cách ẩn này làm tăng khả năng vượt qua kiểm tra thủ công và duy trì trạng thái xâm nhập trái phép lâu hơn.
Một batch script tên temp_auto_push.bat có vai trò ghi đè lịch sử git bằng cách sao chép tên tác giả, timestamp và message gốc trước khi force-push phiên bản đã chỉnh sửa. Kết quả là commit trông hợp lệ, dù nội dung đã bị can thiệp.
Dấu hiệu thay đổi commit
temp_auto_push.bat
# Hành vi quan sát được:
# - Sao chép author name
# - Sao chép timestamp
# - Sao chép commit message
# - Force-push lịch sử đã sửaPayload DEVSPOPPER và hành vi kết nối
Payload được phát hiện là biến thể của DEVSPOPPER, một remote access trojan đa nền tảng dựa trên Node.js. Mã này kết nối đến máy chủ command-and-control qua WebSocket và dùng HTTP để trích xuất tệp.
Phiên làm việc đa tác nhân cho phép nhiều operator thao tác trên cùng một máy bị chiếm quyền điều khiển đồng thời. Điều này làm tăng khả năng duy trì phiên truy cập và mở rộng hoạt động trên máy nạn nhân.
RAT còn có cơ chế phát hiện và tránh môi trường CI/CD và cloud sandbox, chỉ chạy trên workstation thực của nhà phát triển. Vì vậy, nhiều công cụ quét tự động có thể bỏ sót dấu hiệu hệ thống bị tấn công.
IOC và dấu vết cần theo dõi
- .vscode/tasks.json có tác vụ tự động chạy khi mở project
- temp_auto_push.bat
- Chuỗi mã/marker: global′!′′!′ và global’\_V’
- Outbound tới api.trongrid.io
- Outbound tới các Binance Smart Chain RPC endpoints
- Kết nối WebSocket bất thường từ máy phát triển
- HTTP exfiltration từ workstation lập trình viên
Biện pháp giảm thiểu trên môi trường phát triển
Để giảm nguy cơ bảo mật, code nhận từ phỏng vấn nên được chạy trong môi trường ảo cô lập hoặc disposable VM và phải bị hủy sau phiên kiểm tra. Không nên thực thi mã đó trên máy cá nhân hoặc máy sản xuất.
Cần thêm .vscode/ vào .gitignore và áp dụng nhất quán trên toàn bộ repository của tổ chức để chặn lan truyền thụ động. Đồng thời, bắt buộc commit được ký bằng GPG hoặc SSH, kết hợp branch protection và pull request bắt buộc để hạn chế công cụ sửa commit history.
Việc kiểm tra source code nên tập trung vào các dấu hiệu nhiễm đã nêu, cùng với giám sát lưu lượng ra ngoài từ workstation phát triển. Đây là lớp phát hiện phù hợp khi RAT được thiết kế để né qua môi trường CI/CD.
Ví dụ kiểm tra nhanh trên máy phát triển
find . -name "tasks.json" -path "*/.vscode/*"
find . -name "temp_auto_push.bat"
git log --show-signature
grep -R "global′!′′!′\|global’\\_V’" .Tham khảo chi tiết tại Trend Micro Research.










