Phần mềm độc hại CanisterWorm
Một cuộc tấn công chuỗi cung ứng tinh vi ban đầu nhắm vào công cụ quét Trivy được sử dụng rộng rãi đã leo thang thành một vụ xâm nhập quy mô lớn hơn, ảnh hưởng đến nhiều gói npm. Các tác nhân đe dọa đứng sau chiến dịch này bị nghi ngờ đã triển khai một loại sâu tự lan truyền chưa từng được ghi nhận trước đây có tên là CanisterWorm, làm tăng đáng kể quy mô và tác động của vụ xâm nhập.
Phần mềm độc hại này được đặt tên theo việc nó sử dụng hộp chứa Giao thức Máy tính Internet (ICP), các hợp đồng thông minh chống giả mạo được lưu trữ trên chuỗi khối phi tập trung, như một phần của cơ sở hạ tầng điều khiển. Đây là trường hợp đầu tiên được ghi nhận công khai về việc sử dụng hộp chứa ICP làm vũ khí để thu thập các điểm cuối Điều khiển và Kiểm soát (C2), giới thiệu một chiến thuật mới và bền vững, làm phức tạp các nỗ lực giảm thiểu truyền thống.
Mục lục
Các gói phần mềm bị xâm phạm và vectơ truy cập ban đầu
Cuộc tấn công đã ảnh hưởng đến nhiều gói npm trên nhiều phạm vi khác nhau, cho thấy phạm vi tác động rộng lớn trong chuỗi cung ứng phần mềm:
- 28 gói phần mềm thuộc phạm vi của @EmilGroup
- 16 gói phần mềm thuộc phạm vi @opengov
- Các gói bổ sung bao gồm @teale.io/eslint-config, @airtm/uuid-base32 và @pypestream/floating-ui-dom
Chiến dịch này diễn ra ngay sau vụ xâm phạm thông tin đăng nhập cho phép tin tặc phát tán các phiên bản độc hại của các công cụ liên quan đến Trivy, cụ thể là trivy, trivy-action và setup-trivy, vốn chứa chức năng đánh cắp thông tin đăng nhập được nhúng sẵn. Vụ việc được cho là có liên quan đến một nhóm tội phạm mạng tập trung vào điện toán đám mây có tên là TeamPCP.
Quy trình lây nhiễm và cơ sở hạ tầng chỉ huy phi tập trung
Chuỗi lây nhiễm bắt đầu trong quá trình cài đặt gói npm, nơi một tập lệnh postinstall thực thi một loader. Loader này triển khai một backdoor dựa trên Python được thiết kế để giao tiếp với canister ICP. Canister hoạt động như một bộ phân giải điểm kết nối (dead drop resolver), trả về một URL hướng dẫn hệ thống bị nhiễm tải xuống và thực thi payload giai đoạn tiếp theo.
Bản chất phi tập trung của cơ sở hạ tầng ICP mang lại lợi thế đáng kể cho kẻ tấn công. Vì hộp chứa có thể tự động cập nhật URL tải trọng, các tác nhân đe dọa có thể phân phối các tệp nhị phân độc hại mới trên tất cả các hệ thống bị nhiễm mà không cần sửa đổi phần mềm độc hại đã triển khai. Kiến trúc này cũng khiến các nỗ lực gỡ bỏ trở nên khó khăn hơn đáng kể.
Cơ chế duy trì và kỹ thuật tàng hình
Khả năng duy trì hoạt động được thực hiện thông qua việc tạo ra một dịch vụ người dùng systemd được cấu hình để tự động khởi động lại tiến trình độc hại. Các đặc điểm chính bao gồm:
- Việc khởi động lại tự động được thực thi thông qua chỉ thị Restart=always.
- Sẽ có độ trễ 5 giây trước khi khởi chạy lại phần mềm cửa hậu nếu bị chấm dứt.
- Che giấu dịch vụ này dưới danh nghĩa phần mềm giám sát PostgreSQL hợp pháp với tên gọi 'pgmon'.
Cách tiếp cận này đảm bảo hoạt động liên tục đồng thời giảm thiểu khả năng bị phát hiện bằng cách hòa nhập vào các dịch vụ hệ thống hợp pháp.
Phân phối tải trọng thích ứng và hành vi công tắc ngắt khẩn cấp
Phần mềm độc hại này định kỳ liên lạc với thiết bị chứa ICP cứ sau 50 phút, sử dụng User-Agent của trình duyệt giả mạo để tránh bị nghi ngờ. URL trả về sẽ xác định hành động tiếp theo:
- Nếu URL trỏ đến một tệp tin chứa mã độc hợp lệ, phần mềm độc hại sẽ tải xuống và thực thi tệp tin đó.
- Nếu URL chứa 'youtube.com', phần mềm độc hại sẽ chuyển sang trạng thái ngủ đông.
Cơ chế này hoạt động hiệu quả như một công tắc tắt từ xa. Bằng cách chuyển đổi URL của hộp chứa giữa một liên kết YouTube lành tính và một đoạn mã độc hại, kẻ tấn công có thể kích hoạt hoặc vô hiệu hóa phần mềm độc hại trên tất cả các hệ thống bị nhiễm. Đáng chú ý, các đoạn mã độc đã được thực thi trước đó vẫn tiếp tục chạy ngầm, vì phần mềm độc hại không chấm dứt các tiến trình trước đó.
Một cơ chế tắt khẩn cấp tương tự dựa trên YouTube cũng đã được phát hiện trong một tệp nhị phân Trivy bị nhiễm Trojan (phiên bản 0.69.4), tệp này giao tiếp với cùng cơ sở hạ tầng ICP thông qua một trình phát tán Python riêng biệt.
Khả năng của sâu máy tính và sự lan truyền tự động
Ban đầu, sự lây lan dựa vào một tập lệnh được thực thi thủ công có tên deploy.js, sử dụng các mã thông báo xác thực npm bị đánh cắp để chèn mã độc hại vào các gói có thể truy cập. Tập lệnh này không được kích hoạt trong quá trình cài đặt mà hoạt động như một công cụ độc lập để mở rộng phạm vi tấn công.
Các biến thể tiếp theo của CanisterWorm đã phát triển đáng kể. Trong các phiên bản mới hơn, chẳng hạn như các phiên bản được tìm thấy trong @teale.io/eslint-config (phiên bản 1.8.11 và 1.8.12), sâu máy tính này tích hợp cơ chế tự lan truyền trực tiếp vào quá trình cài đặt gói. Cơ chế được cập nhật bao gồm:
- Trích xuất mã thông báo xác thực npm từ môi trường bị nhiễm
- Thực thi ngay lập tức quy trình lan truyền như một tiến trình nền độc lập.
- Tự động phát hành các gói phần mềm bị xâm phạm bằng cách sử dụng thông tin đăng nhập thu thập được.
Sự thay đổi này biến cuộc tấn công từ một chiến dịch vận hành thủ công thành một hệ thống lan truyền hoàn toàn tự động.
Nguy cơ leo thang thành mối đe dọa chuỗi cung ứng tự duy trì
Việc giới thiệu phương pháp thu thập token tự động và tự lan truyền đánh dấu một sự leo thang nghiêm trọng. Bất kỳ máy trạm của nhà phát triển hoặc quy trình CI/CD nào cài đặt gói bị xâm phạm và chứa thông tin đăng nhập npm có thể truy cập được đều trở thành một nút lan truyền hoạt động. Điều này tạo ra hiệu ứng dây chuyền, trong đó các gói bị nhiễm dẫn đến các lây nhiễm tiếp theo trên các phụ thuộc phía sau.
Ở giai đoạn này, mối đe dọa phát triển vượt ra ngoài việc xâm nhập tài khoản riêng lẻ thành một hệ sinh thái tự duy trì việc phân phối phần mềm độc hại. Mỗi môi trường bị nhiễm mới đều góp phần vào sự lây lan, cho phép tăng trưởng theo cấp số nhân và khiến việc ngăn chặn trở nên khó khăn hơn đáng kể.
Điều đáng lo ngại hơn nữa là, các bằng chứng thử nghiệm như payload giữ chỗ ('hello123') cho thấy những kẻ tấn công đang tích cực tinh chỉnh và xác thực chuỗi tấn công trước khi triển khai các tệp nhị phân độc hại hoàn chỉnh.