Mã độc Go nguy hiểm: Lây nhiễm Rekoobe Backdoor, đánh cắp mật khẩu

Một **mã độc Go** mới được phát hiện đang đặt các nhà phát triển Go vào rủi ro nghiêm trọng. Kẻ tấn công đã công bố một module Go độc hại, bắt chước thư viện mã hóa đáng tin cậy nhất trong hệ sinh thái – **golang.org/x/crypto**. Module này được sử dụng để đánh cắp mật khẩu và âm thầm triển khai backdoor Linux trên các hệ thống bị xâm nhập.
Chiến dịch này nhấn mạnh nguy cơ từ các tên phụ thuộc (dependency) quen thuộc nhưng bị vũ khí hóa, khai thác lòng tin của nhà phát triển.
Phân Tích Chi Tiết Module Độc Hại
Module độc hại, `github[.]com/xinfeisoft/crypto`, đã được công khai trên pkg.go.dev tại phiên bản **v0.15.0** với ngày xuất bản là 20 tháng 2 năm 2025. Module này sao chép toàn bộ cấu trúc của kho lưu trữ **golang.org/x/crypto** hợp pháp, bao gồm các subpackage quen thuộc như **bcrypt**, **argon2**, **acme**, và **ssh**. Điều này giúp nó hòa mình vào đồ thị phụ thuộc mà không gây nghi ngờ ngay lập tức.
Kỹ Thuật Đánh Cắp Thông Tin Xác Thực
Kẻ tấn công đã lợi dụng cách hệ sinh thái Go sử dụng GitHub làm máy chủ gương cho kho lưu trữ chính tắc `go.googlesource.com/crypto`. Điều này khiến module có tên tương tự xuất hiện bình thường trong quá trình xem xét mã.
Các nhà nghiên cứu tại Socket.dev đã xác định module độc hại này sau khi công cụ AI Scanner của họ gắn cờ một backdoor được nhúng trong tệp `ssh/terminal/terminal.go`. Việc sửa đổi này nhắm vào hàm trợ giúp **ReadPassword**, được sử dụng bởi các công cụ xử lý mật khẩu SSH, thông tin đăng nhập cơ sở dữ liệu và khóa API được nhập tương tác.
Backdoor chỉ kích hoạt trong quá trình sử dụng tương tác trực tiếp, giữ im lặng trong các lần chạy thử nghiệm tự động và giảm đáng kể khả năng bị phát hiện ngẫu nhiên. Khi một ứng dụng của nhà phát triển gọi **ReadPassword**, hàm bị xâm nhập sẽ thu thập thông tin xác thực ở dạng văn bản thuần túy và ghi vào `/usr/share/nano/.lock`.
Đây là một đường dẫn được chọn để tránh bị phát hiện. Sau đó, nó tìm nạp một con trỏ dàn dựng từ kho lưu trữ GitHub của kẻ tấn công, gửi mật khẩu bị đánh cắp đến một điểm cuối được phân giải động, truy xuất một tập lệnh shell và thực thi nó qua `/bin/sh`. Thiết kế này cho phép kẻ tấn công xoay vòng các URL cơ sở hạ tầng mà không cần phát hành lại module. Đội ngũ bảo mật Go đã chặn module này tại proxy công cộng, trả về phản hồi **403 SECURITY ERROR**.
Ảnh Hưởng Rộng Lớn và **Lỗ Hổng Bảo Mật**
Ảnh hưởng rộng lớn đối với các nhóm làm việc trong môi trường Linux dựa trên Go, đặc biệt là những người chạy máy ảo đám mây (cloud VMs), trình chạy CI/CD hoặc máy chủ bastion quản trị. Bất kỳ ứng dụng nào nhập module này và gọi **ReadPassword** đều trở thành điểm thu thập thông tin xác thực trực tiếp. Điều này làm lộ mật khẩu SSH, mật khẩu cơ sở dữ liệu và khóa API trước khi bất kỳ cơ chế băm hoặc mã hóa nào có thể bảo vệ chúng.
Chuỗi Khai Thác và Triển Khai **Rekoobe Backdoor**
Sau khi tập lệnh ban đầu được thực thi, một chuỗi thả dropper Linux gồm năm giai đoạn bắt đầu. Hàm **ReadPassword** đã bị backdoor tìm nạp `update.html` từ kho lưu trữ GitHub của kẻ tấn công, sau đó chuyển hướng đến `seed.php` tại `img[.]spoolsv[.]cc`.
Điểm cuối đó trả về một trình khởi chạy `curl | sh` để tìm nạp và thực thi `snn50.txt` – trình dàn dựng Linux chính chuẩn bị máy chủ và cung cấp các tải trọng cuối cùng.
Trình dàn dựng `snn50.txt` thực hiện ba hành động quan trọng:
- Nối một khóa SSH do kẻ tấn công kiểm soát vào `/home/ubuntu/.ssh/authorized_keys`, tạo quyền truy cập từ xa liên tục tồn tại sau khi đặt lại mật khẩu.
- Đặt chính sách mặc định của **iptables** thành `ACCEPT`, làm suy yếu tường lửa máy chủ.
- Tải xuống `sss.mp5` và `555.mp5` từ `img[.]spoolsv[.]cc` – ngụy trang bằng các tiện ích mở rộng giống như đa phương tiện để bỏ qua kiểm tra tệp cơ bản, thực thi chúng và xóa chúng khỏi đĩa để giảm bằng chứng pháp y.
Các nhà nghiên cứu của Socket.dev đã xác nhận `555.mp5` là một **Rekoobe Linux backdoor**, một công cụ có mối liên hệ với APT31 (Zirconium) và một phần nguồn gốc từ cơ sở mã **Tiny SHell**. Nhị phân này giao tiếp với **154[.]84[.]63[.]184** qua cổng TCP **443** mà không có bắt tay TLS tiêu chuẩn, cho thấy lưu lượng truy cập được mã hóa tùy chỉnh được thiết kế để vượt qua như HTTPS.
Mẫu `sss.mp5` hoạt động riêng biệt như một thành phần tải và trinh sát trong cùng giai đoạn. Module **mã độc Go** này cho thấy sự tinh vi trong cách thức hoạt động của các cuộc tấn công chuỗi cung ứng.
Chỉ Số Thỏa Hiệp (IOCs)
Các chỉ số thỏa hiệp liên quan đến **mã độc Go** này bao gồm:
- Module độc hại: `github[.]com/xinfeisoft/crypto`
- Tệp bị sửa đổi: `ssh/terminal/terminal.go`
- Đường dẫn ghi mật khẩu: `/usr/share/nano/.lock`
- Tên tệp backdoor: `555.mp5` (Rekoobe backdoor)
- Tên tệp stager/loader: `snn50.txt`, `sss.mp5`
- Các tên miền và IP liên quan:
- `img[.]spoolsv[.]cc`
- `img[.]spoolsv[.]net`
- `154[.]84[.]63[.]184` (IP giao tiếp Rekoobe)
- Đường dẫn file bị ảnh hưởng: `/home/ubuntu/.ssh/authorized_keys`
Biện Pháp Phát Hiện và Giảm Thiểu
Để phòng chống **mã độc Go** và các tấn công tương tự, các biện pháp sau đây cần được thực hiện:
Kiểm Tra Mã Nguồn và Phụ Thuộc
Các nhà bảo vệ nên kiểm tra tệp `go.mod` và `go.sum` để tìm bất kỳ thay đổi gốc module nào không mong muốn. Mọi bổ sung phụ thuộc mới cần được coi là một mục xem xét bảo mật nghiêm ngặt. Việc này giúp phát hiện sớm các **lỗ hổng bảo mật** tiềm ẩn.
Giám Sát Hệ Thống
Các điểm cuối (endpoints) cần được giám sát chặt chẽ đối với các hành vi sau:
- Ghi tệp vào `/usr/share/nano/.lock`.
- Sửa đổi trái phép tệp `/home/ubuntu/.ssh/authorized_keys`.
- Đặt lại chính sách **iptables** thành `ACCEPT`.
Giám Sát Mạng
Chặn các tên miền `img[.]spoolsv[.]cc` và `img[.]spoolsv[.]net` ở cấp độ mạng. Cảnh báo về các quy trình liên kết việc tìm nạp từ GitHub Raw với các cuộc gọi HTTP POST đi. Việc này sẽ giúp phát hiện sớm mô hình tấn công này trước khi quá trình triển khai backdoor hoàn tất.
Thông tin chi tiết về vụ việc này có thể tham khảo thêm tại báo cáo của Socket.dev: Malicious Go Crypto Module Steals Passwords and Deploys Rekoobe Backdoor.







