Các nhà nghiên cứu an ninh mạng vừa tiết lộ một loại mã độc dựa trên ngôn ngữ Go được phân tán thông qua hai Go Modules và hai nhà cung cấp Terraform (Terraform providers). Đây là lần đầu tiên các tác nhân đe dọa sử dụng kho lưu trữ tập trung (centralized repository) do HashiCorp quản lý làm vector phân tán các payload độc hại.
Theo nghiên cứu từ Aikido, danh sách các nhà cung cấp Terraform và Go modules độc hại bao gồm:
- gocommunity-io/dockerd (222 lượt tải xuống)
- kreuzwenker/docker (1,449 lượt tải xuống)
- gocommunity.io/orderedbtree
- gogets.dev/btreex
Mã độc được triển khai thông qua các gói này có những điểm tương đồng với Graphalgo, một chiến dịch lần đầu tiên được ReversingLabs ghi nhận vào đầu tháng 2 và được cho là có liên quan đến các nhóm tin tặc Triều Tiên (DPRK).
Trong chiến dịch này, các nhà phát triển tiềm năng bị tiếp cận qua các nền tảng xã hội như LinkedIn và Facebook, hoặc thông qua các lời mời làm việc trên diễn đàn bởi các công ty Web3 không có thực. Sau đó, họ được yêu cầu hoàn thành bài kiểm tra lập trình bằng cách sử dụng một kho lưu trữ GitHub có vẻ lành tính nhưng thực chất chứa hành vi độc hại thông qua một dependency được đăng tải trên npm hoặc PyPI.
Mở rộng quy mô sang npm và các cơ chế lẩn tránh tinh vi
Phát hiện mới nhất này trùng khớp với việc xác định một loạt gói npm độc hại mới trong tuần này nhằm phát tán cùng loại mã độc. Một số gói đã bị gắn cờ bởi Checkmarx, JFrog và SafeDep bao gồm:
- indexed-btree
- mathsbase
- mathmain
- math-universe
- modern-events
- quick-events
- crypto-hasher
- events-router
- sort-btree
- graphcore-js
- graphlib-js
Phân tích các gói này cho thấy trong một số trường hợp, việc thực thi mã độc chỉ được kích hoạt khi một hoạt động mã hóa cụ thể được thực hiện, cho thấy đây là một chiến dịch tấn công có mục tiêu rõ rệt.
"Payload chỉ giải mã khi nạn nhân giải được một hệ phương trình tuyến tính với một ma trận cụ thể. Nó nhận lệnh từ một hợp đồng thông minh (smart contract) trên mạng thử nghiệm Ethereum Sepolia, duy trì một kênh lệnh thứ hai qua Slack và ẩn mình sau số lượng lượt tải xuống giả tạo được tạo ra từ một trang trại GitHub Actions," JFrog cho biết.
Chuỗi tấn công dọn đường cho một payload đã được mã hóa mà chức năng chính xác của nó vẫn chưa được xác định do sử dụng mã hóa bất đối xứng. Implant này cũng được thiết kế để liên lạc với một kênh Slack, kiểm tra endpoint "conversations.history" mỗi 10 giây và thực hiện hành động dựa trên loại gói tin nhận được (Start, Chunk, hoặc End packet).
Sử dụng Blockchain làm kênh điều khiển C2
Aikido cho biết mã độc phân tán qua Terraform và Go Modules là một bản chuyển thể sang Go, chia sẻ hạ tầng blockchain và Slack tương tự bản npm. Nó sở hữu kênh điều khiển C2 kép, sử dụng blockchain dead drops và mã thông báo Slack bot.
Ban đầu, nó thu thập thông tin hệ thống bao gồm thuộc tính phần cứng, hệ điều hành, tên máy chủ. Dữ liệu bị thu thập sau đó được truyền đến kênh Slack do kẻ tấn công kiểm soát thông qua API.
"Sau khi điểm danh (check-in), mã độc tạo ra một cặp khóa công khai-bí mật tạm thời. Nó kết hợp khóa này với hai khóa công khai của kẻ tấn công để tạo ra khóa dùng chung, cho phép giao tiếp mà không làm lộ thông tin C2 hoặc rò rỉ tin nhắn giữa các máy chủ bị nhiễm," nhà nghiên cứu bảo mật Oliver Smith giải thích.
C2 dựa trên blockchain lấy dữ liệu từ một hợp đồng thông minh Ethereum trên mạng thử nghiệm Arbitrum Sepolia để kiểm tra các lệnh mã hóa mỗi 3 giây. Các lệnh này sau đó được thực thi dưới dạng mã Go hoặc JavaScript.
Terraform Registry: Vector tấn công chuỗi cung ứng mới?
Việc xuất hiện các nhà cung cấp Terraform độc hại là một chiến thuật mới nhưng không gây quá nhiều ngạc nhiên, vì nó cung cấp con đường trực tiếp hơn để chiếm đoạt các thông tin xác thực sản xuất (production credentials) quan trọng. Điều này cho thấy tin tặc đang mở rộng phạm vi chiến dịch ra ngoài npm và PyPI.
Đây không phải là lần đầu tiên các nhóm tin tặc Triều Tiên sử dụng Terraform. SentinelOne gần đây đã chi tiết hóa cách cụm hoạt động TraderTraitor lợi dụng các tệp khóa Terraform bị vũ khí hóa để phân tán các backdoor dựa trên Rust.
"Vẫn còn quá sớm để khẳng định chắc chắn rằng tin tặc Triều Tiên đang sử dụng Terraform registries như một chiến thuật phân tán mới thường xuyên. Tuy nhiên, sự xuất hiện của chúng trong hai chiến dịch riêng biệt khiến khả năng đây là sự trùng hợp trở nên thấp hơn," chuyên gia Karlo Zanki từ Socket nhận định.
Mối liên hệ với PolinRider và GHAPPIER
CloudSEK cũng đã nêu bật một loader JavaScript chưa từng được báo cáo trước đây có tên GHAPPIER, được phân tán sau khi gói npm hợp pháp "@dforge-core/dforge-mcp" bị xâm nhập. Mục tiêu chính của loader này là tải mã từ máy chủ của kẻ tấn công và thực thi nó, cho phép thay đổi payload linh hoạt trong thời gian thực.
Hoạt động này có những điểm chồng lấn với chiến dịch dài hơi của Triều Tiên được gọi là PolinRider, sử dụng kỹ thuật NullReceiver để lấy địa chỉ C2 từ ví của kẻ tấn công.
Rust cảnh báo về các cuộc phỏng vấn tuyển dụng độc hại
Dự án Rust cũng đã đưa ra cảnh báo về một chiến dịch đang diễn ra nhắm vào các thành viên rust-lang và chủ sở hữu các crate phổ biến. Kẻ tấn công thiết lập các cuộc gọi video phỏng vấn việc làm giả mạo để lừa mục tiêu cài đặt phần mềm độc hại (như codec âm thanh giả) hoặc thực thi lệnh trên máy tính của họ.
Dự án Rust khuyến cáo các cộng tác viên và chủ sở hữu crate cần hết sức thận trọng, đảm bảo đã bật xác thực đa yếu tố (MFA) và kiểm tra các lần đăng nhập bất thường vào tài khoản của mình.