-
09/04/2020
-
141
-
1.925 bài viết
Phát hiện chiến dịch phát tán mã độc Linux ngụy trang dưới tiến trình SSH
Một chiến dịch tấn công chuỗi cung ứng (supply chain attack) tinh vi đang âm thầm nhắm vào cộng đồng lập trình viên thông qua các hệ sinh thái phổ biến như PHP (Packagist) và Node.js. Theo báo cáo từ các nhà nghiên cứu tại Socket.dev, tác nhân đe dọa đã cài cắm mã độc vào hơn 700 kho lưu trữ mã nguồn trên GitHub, đồng thời sử dụng kỹ thuật ngụy trang dưới tên tiến trình SSH hợp pháp trên Linux nhằm qua mặt các cơ chế giám sát thông thường.
Theo các nhà nghiên cứu tại Socket.dev, điểm nguy hiểm của chiến dịch nằm ở việc tin tặc lợi dụng cơ chế “postinstall hook”, tính năng cho phép package tự động chạy lệnh ngay sau khi được cài đặt. Khi lập trình viên tải các package bị nhiễm, đoạn mã độc sẽ âm thầm kích hoạt trong nền mà gần như không hiển thị dấu hiệu bất thường nào trên giao diện dòng lệnh. Script này thậm chí còn chủ động chặn các thông báo lỗi để che giấu hoạt động đáng ngờ khỏi nhật ký cài đặt, khiến quá trình lây nhiễm diễn ra gần như “vô hình” đối với nạn nhân.
Sau khi được kích hoạt, đoạn mã độc sẽ sử dụng công cụ curl với tùy chọn bỏ qua bước xác thực TLS để tải xuống một file nhị phân Linux có tên fvbs.network từ tài khoản GitHub do kẻ tấn công kiểm soát mang tên parikhrpreksha. File này sau đó được lưu vào thư mục tạm của hệ thống dưới đường dẫn /tmp/.sshd, được đặt tên nhằm giả mạo tiến trình SSH hợp pháp trên Linux để tránh bị chú ý.
Các gói phần mềm (Nguồn: Socket.dev)
Cách đặt tên này được đánh giá là đặc biệt nguy hiểm. Dấu chấm ở đầu tên file giúp payload bị ẩn khỏi nhiều lệnh liệt kê thư mục mặc định trên Linux, trong khi cái tên “.sshd” mô phỏng trực tiếp tiến trình SSH daemon hợp pháp của hệ điều hành. Với nhiều quản trị viên hoặc lập trình viên, file này rất dễ bị nhầm là một tiến trình hệ thống thông thường thay vì mã độc đang hoạt động.
Sau khi tải xuống thành công, payload lập tức được cấp quyền thực thi bằng lệnh chmod +x rồi âm thầm chạy nền, tách khỏi tiến trình cài đặt ban đầu. Điều này khiến mã độc tiếp tục hoạt động ngay cả khi quá trình cài package đã kết thúc.
Các nhà nghiên cứu cảnh báo chiến dịch không chỉ nhắm vào máy của lập trình viên mà còn mở rộng sang cả môi trường CI/CD. Trong nhiều repository Node.js, mã độc được phát hiện bên trong các file GitHub Actions workflow thông qua dependency mang tên dependency_cache_sync. Điều này cho phép payload tự động thực thi ngay trong quá trình build hoặc triển khai ứng dụng, làm gia tăng đáng kể nguy cơ lây nhiễm trong chuỗi phát triển phần mềm.Sau khi tải xuống thành công, payload lập tức được cấp quyền thực thi bằng lệnh chmod +x rồi âm thầm chạy nền, tách khỏi tiến trình cài đặt ban đầu. Điều này khiến mã độc tiếp tục hoạt động ngay cả khi quá trình cài package đã kết thúc.
Nguy hiểm hơn, kẻ tấn công còn đầu độc trực tiếp các nhánh phát triển như dev-main, dev-master và dev. Do nhiều dự án sử dụng cơ chế branch-tracking trên Packagist, các package theo dõi trực tiếp những nhánh này có thể tự động kéo mã nguồn đã bị nhiễm độc về ở lần cập nhật tiếp theo mà không cần phát hành phiên bản mới. Điều đó đồng nghĩa việc chỉ xóa package độc hại khỏi máy cục bộ là chưa đủ nếu repository gốc chưa được làm sạch hoàn toàn.
Sau khi nhận được cảnh báo, Packagist đã nhanh chóng gỡ bỏ các package liên quan. Tuy nhiên, giới chuyên gia cảnh báo nguy cơ vẫn chưa chấm dứt, đặc biệt với các hệ thống đã đồng bộ mã nguồn hoặc CI/CD trước thời điểm package bị xóa.
Các chuyên gia khuyến nghị doanh nghiệp và đội ngũ phát triển cần lập tức rà soát file composer.json, kiểm tra các script postinstall bất thường, theo dõi thư mục /tmp để phát hiện các file ẩn giả mạo tiến trình hệ thống, đồng thời kiểm tra toàn bộ GitHub Actions workflow nhằm phát hiện lệnh tải file từ nguồn lạ. Bên cạnh đó, các nhóm phát triển nên ưu tiên sử dụng fixed release tags thay vì theo dõi trực tiếp các nhánh phát triển của bên thứ ba nhằm giảm thiểu nguy cơ bị đầu độc chuỗi cung ứng.
Vụ việc tiếp tục phản ánh xu hướng gia tăng của các cuộc tấn công chuỗi cung ứng nhằm vào hệ sinh thái mã nguồn mở. Thay vì khai thác trực tiếp lỗ hổng phần mềm, tin tặc đang tập trung lợi dụng niềm tin của cộng đồng phát triển đối với các package và dependency quen thuộc để âm thầm cài mã độc vào quy trình phát triển phần mềm.
Chỉnh sửa lần cuối: