Quay lại
2026/11/11
Công cụ bảo mật bạn tải về chính là mã độc: kho GitHub giả lây nhiễm hơn 2.000 máy tính Windows
Doctor Web phát hiện công cụ bảo mật giả trên GitHub chạy mã độc khi bạn build. Cách bẫy hoạt động và những gì cần kiểm tra trước khi build mã clone về.
Bạn tìm thấy trên GitHub một công cụ nhỏ giúp làm gọn kết quả của một trình quét mạng. Nó có README, một dự án Visual Studio và hướng dẫn build. Bạn clone về và nhấn Build. Mọi thứ trông bình thường, nhưng trước khi trình biên dịch kịp chạy, một lệnh ẩn đã được thực thi trên máy trạm của bạn.
Đó là cái bẫy mà Doctor Web mô tả vào ngày 5 tháng 11 năm 2026. Các nhà nghiên cứu của hãng đã phát hiện những kho GitHub giả dạng công cụ tự động hóa quét, kiểm thử bảo mật và phân tích log, và tại thời điểm nghiên cứu đã ghi nhận hơn 2.000 máy tính Windows bị nhiễm. Bài viết này giải thích cái bẫy hoạt động ra sao, vì sao nó đánh lừa được cả kỹ sư giàu kinh nghiệm, và bạn nên kiểm tra những gì trước khi build mã vừa clone về.
Điểm chính
- Các kho mã giả dạng công cụ bảo mật, và lệnh độc hại chạy ngay trong quá trình build hoặc khi một script được khởi động, không cần mở thêm chương trình nào khác.
- Mã độc được giấu trong file dự án Visual Studio, trong file
.suo, và phía sau những chuỗi khoảng trắng rất dài trong mã nguồn Python và Go. - Payload cuối cùng gồm hai backdoor AsyncRAT, một công cụ chiếm clipboard để tráo địa chỉ ví tiền mã hóa, và một infostealer đánh cắp dữ liệu trình duyệt, cấu hình VPN và FTP cùng token Discord.
- Hãy đọc các file build trước khi build, và build mã không rõ nguồn gốc trong một máy ảo dùng một lần không chứa bất kỳ thông tin đăng nhập nào.
- Nếu bạn đã lỡ build một trong các dự án này, hãy coi máy trạm đó đã bị xâm nhập và đổi mọi thông tin đăng nhập từng lưu trên đó từ một thiết bị sạch.
Doctor Web đã phát hiện gì
Theo báo cáo của Doctor Web, những kho mã nhiễm độc đầu tiên xuất hiện khoảng hai năm trước. Khi đó chúng nhắm vào người dùng ví tiền mã hóa và được giới thiệu là game blockchain, bot game và phần mềm gian lận. Giờ đây nhóm vận hành đã chuyển mục tiêu sang các chuyên gia an toàn thông tin. Một trong những kho giả chứa script dùng để phân tích, làm sạch và định dạng kết quả của trình quét mạng Fscan.
Đây không phải là lỗ hổng phần mềm và không có CVE nào để vá. Đây là một chiến dịch tấn công chuỗi cung ứng kết hợp lừa đảo phi kỹ thuật: kẻ tấn công đăng một dự án trông hữu ích và chờ ai đó build nó. Bản tóm tắt của BleepingComputer về nghiên cứu này gọi thủ thuật khoảng trắng là một kỹ thuật cũ nhưng vẫn còn hiệu quả.
Cái bẫy hoạt động như thế nào
Doctor Web tìm thấy mã độc trong ba loại file. Không loại nào là file mà người review thường mở đầu tiên.
| Nơi ẩn giấu | Điều gì xảy ra | Vì sao dễ bỏ sót |
|---|---|---|
File dự án .csproj | Một PreBuildEvent chạy lệnh trước khi dự án được biên dịch | Người review đọc mã nguồn chứ không đọc file dự án |
File .suo | File này chứa một lệnh PowerShell | Đây là file cấu hình nhị phân mà Visual Studio thường giữ trong một thư mục ẩn |
| File mã nguồn Python và Go | Mã độc nằm sau một lượng lớn ký tự khoảng trắng | Dòng đó trông như trống trừ khi bạn cuộn rất xa sang phải hoặc bật chế độ ngắt dòng |
Từ đây, chuỗi tấn công đều giống nhau. Một script PowerShell (báo cáo nêu ví dụ C:\Users\Public\Pictures\t.ps1 và L.ps1) yêu cầu máy chủ của kẻ tấn công, hoặc các dịch vụ hợp pháp như YouTube, Telegram, Google Docs, GitCode và Pastebin, trả về một chuỗi đã mã hóa. Sau khi giải mã, chuỗi này là đường dẫn tải về một file nén, được giải nén vào C:\ProgramData\Windows.Microsoft.Photos.
Bên trong là một loader dựa trên Electron có tên Microsoft.exe, được Doctor Web nhận diện là Trojan.Loader.3261. Loader gửi thông tin hệ thống qua một bot Telegram, cố gắng nâng quyền, và tắt Windows Defender, User Account Control, thông báo, System Restore cùng volume shadow copy. Nó còn cố gỡ bỏ các sản phẩm của ESET, McAfee và Malwarebytes, đồng thời sửa file hosts để chặn tên miền của các hãng diệt virus.
Để không bị phát hiện, ở chế độ mặc định loader làm cho explorer.exe trông như tiến trình cha của nó, thay đổi giá trị registry VerifiedAndReputablePolicyState để vượt qua Smart App Control, khôi phục mã gốc của ntdll.dll nhằm gỡ các hook mà sản phẩm bảo mật cài vào đó, thực hiện system call trực tiếp, và vá các hàm Windows dùng cho việc ghi vết sự kiện và quét script. Sau đó nó chèn payload vào các tiến trình Windows hợp pháp như RegAsm.exe.
Tiếp theo là ba payload:
- Hai backdoor AsyncRAT. Hai file giống hệt nhau nhưng dùng cổng mạng khác nhau, điều mà Doctor Web cho rằng có thể cho phép hai người điều khiển cùng một thiết bị cùng lúc.
- Một clipper. Nó tráo địa chỉ ví tiền mã hóa trong clipboard và gửi ảnh chụp màn hình, tiêu đề cửa sổ đang mở, tên đăng nhập người dùng và địa chỉ IP tới một bot Telegram.
- Một infostealer (JS.Stealer.191). Nó kiểm tra sandbox và máy ảo, sau đó thu thập dữ liệu trình duyệt, file kết nối của FileZilla, MobaXterm và Total Commander, cấu hình VPN, file của ứng dụng nhắn tin, dữ liệu tài khoản game và token Discord, rồi gửi đi qua một bot Telegram.
Doctor Web cũng phát hiện một thành phần chưa hoàn thiện có chức năng cài một Windows service và tải lại loader nếu loader bị xóa. Điều đó cho thấy nhóm vận hành vẫn đang tiếp tục phát triển bộ công cụ này.
Vì sao chiêu này hiệu quả với cả dân chuyên nghiệp
Chiến dịch được xây dựng dựa trên chính những thói quen thường được coi là thực hành tốt.
- Build từ mã nguồn có cảm giác an toàn hơn chạy file tải về. Nhiều kỹ sư từ chối chạy một file thực thi lạ nhưng lại sẵn sàng biên dịch một dự án vì họ có thể đọc mã. Ở đây, phần mã họ đọc hoàn toàn sạch, còn lệnh độc hại nằm trong cấu hình build.
- Không có khoảnh khắc “chạy chương trình này”. Lệnh khởi động như một phần của quá trình build bình thường, nên không có lúc nào ta dừng lại cân nhắc như trước khi mở một chương trình lạ.
- GitHub là nơi đáng tin cậy. Một kho mã có README gọn gàng và hướng dẫn cài đặt trông giống hàng nghìn dự án tử tế khác. Doctor Web lưu ý rằng kẻ tấn công thậm chí còn cung cấp hướng dẫn cài Visual Studio và clone kho mã.
- Máy trạm của kỹ sư nắm giữ chìa khóa. Phiên trình duyệt đã lưu, hồ sơ VPN và file kết nối máy chủ chính là những thứ infostealer thu thập, và chúng thường mở đường vào hệ thống production cũng như môi trường của khách hàng.
Cần kiểm tra gì trước khi build
Các bước kiểm tra này chỉ mất vài phút và áp dụng được cho mọi dự án vừa clone, trên Windows, Linux hay macOS. Hãy chạy chúng trong thư mục kho mã trước khi mở dự án trong IDE.
# 1. Build hooks and command execution in project files
grep -rniE 'PreBuildEvent|PostBuildEvent|<Exec |powershell|cmd\.exe' \
--include='*.csproj' --include='*.vbproj' --include='*.vcxproj' \
--include='*.props' --include='*.targets' .
# 2. Visual Studio user-option files that should not be in a repository
find . -name '*.suo'
# 3. Files with very long runs of spaces or tabs on one line
grep -rlE '[[:space:]]{200,}' .
Trên Windows không có shell kiểu Unix, PowerShell có thể làm việc kiểm tra khoảng trắng tương tự:
Get-ChildItem -Recurse -File |
Select-String -Pattern '\s{200,}' -List |
Select-Object -ExpandProperty Path
Một kết quả trùng khớp không phải là bằng chứng có mã độc. Nhiều dự án tử tế vẫn dùng build event, và file đã minify cũng chứa dòng rất dài. Đó là lý do để mở file ra và đọc xem lệnh làm gì trước khi bất cứ thứ gì được chạy.
- Đọc file build trước tiên. File dự án,
Makefile,setup.py, script cài đặt gói và file CI đều có thể chạy lệnh. Hãy đọc chúng cẩn thận như đọc mã nguồn. - Xóa file
.suovà thư mục.vsđi kèm kho mã. Đó là thiết lập riêng của từng người dùng, và dự án không cần chúng để build. - Bật chế độ ngắt dòng hoặc hiển thị khoảng trắng trong trình soạn thảo khi review mã lạ.
- Xem lịch sử của kho mã. Tài khoản mới tạo, chỉ một commit lớn duy nhất, ít issue hay người đóng góp thực sự, và một công cụ trùng chức năng với dự án nổi tiếng đều là lý do để cẩn trọng hơn. Chỉ riêng số sao và fork thì chứng minh được rất ít, vì chúng có thể bị làm giả.
- Build mã không rõ nguồn gốc trong môi trường dùng một lần. Dùng một máy ảo hoặc container dùng một lần, không lưu mật khẩu, không có hồ sơ VPN và không có khóa SSH, rồi xóa nó sau khi dùng xong.
Mẹo: Hãy giữ một snapshot máy ảo sạch để thử công cụ. Clone, build và thử nghiệm ở đó, rồi quay về snapshot. Nếu một công cụ tỏ ra hữu ích, hãy review kỹ lưỡng trước khi đưa nó đến gần máy trạm làm việc hằng ngày của bạn.
Nếu bạn đã lỡ build
Doctor Web đã công bố mã băm file, tên miền, địa chỉ và ví dụ tên kho mã trong danh sách dấu hiệu xâm nhập (IoC). Các dấu hiệu được mô tả trong báo cáo bao gồm:
- thư mục
C:\ProgramData\Windows.Microsoft.Photoshoặc chương trình có tênMicrosoft.exe; t.ps1hoặcL.ps1trongC:\Users\Public\Pictures;- các ngoại lệ Windows Defender cho
regasm.exehoặcdwm.exemà bạn không hề thêm; - tên miền của các hãng diệt virus trong file
hosts, hoặc System Restore và shadow copy bị tắt; - phần mềm bảo mật biến mất hoặc ngừng cập nhật.
Nếu bạn phát hiện bất kỳ dấu hiệu nào trong số này, hoặc biết mình đã build một dự án trong danh sách, hãy hành động như thể mọi thứ trên máy đó đã bị đọc trộm:
- Ngắt kết nối máy trạm khỏi mạng và báo cho đội bảo mật.
- Từ một thiết bị khác, sạch, hãy đổi các mật khẩu đã lưu trong trình duyệt và đăng xuất khỏi các phiên đang hoạt động, để cookie phiên bị đánh cắp không còn dùng được.
- Thay thế hồ sơ VPN cùng mật khẩu hoặc khóa lưu trong các ứng dụng FTP và terminal, đồng thời rà soát những máy chủ mà chúng có thể truy cập.
- Đặt lại phiên Discord và các ứng dụng nhắn tin khác, và chuyển tài sản tiền mã hóa sang một ví được tạo trên thiết bị sạch.
- Cài lại hệ điều hành thay vì cố làm sạch. Loader tắt các tính năng bảo mật và khôi phục, đồng thời cài hai backdoor, nên một hệ thống đã được làm sạch rất khó để tin tưởng.
Mẹo: Hãy kiểm tra log máy chủ và VPN để tìm các lần đăng nhập từ tài khoản bị ảnh hưởng kể từ ngày dự án được build. File kết nối bị đánh cắp sẽ được sử dụng từ hệ thống của kẻ tấn công, không phải từ máy trạm bị nhiễm.
LOGIQ có thể hỗ trợ như thế nào
LOGIQ giúp các tổ chức vận hành phần mềm mã nguồn mở một cách an toàn, từ enterprise Linux và OpenJDK đến các pipeline build và triển khai xung quanh chúng. Nếu bạn muốn có thêm một góc nhìn về cách các nhóm của mình đưa mã bên ngoài vào môi trường, hoặc cần hỗ trợ tách hệ thống build khỏi những thông tin đăng nhập quan trọng, hãy trao đổi với chúng tôi.
Global
Japan
Korea
China
Taiwan
Thailand
Indonesia
Portugal
Spain
France
Germany
Egypt
Russia