Tấn công chuỗi cung ứng: Shai Hulud v2 nghiêm trọng lộ dữ liệu

Chuỗi cung ứng phần mềm đang đối mặt với một mối đe dọa mạng tinh vi từ chiến dịch mã độc “Shai Hulud v2”. Chiến dịch này đã làm tổn hại đến 834 gói phần mềm trên các hệ sinh thái npm và Maven. Đây là một ví dụ nguy hiểm về sự phát triển của các cuộc tấn công chuỗi cung ứng tự động hóa.
Mối đe dọa mạng từ Shai Hulud v2: Khai thác GitHub Actions
Chiến dịch mã độc Shai Hulud v2 đặc biệt nhắm mục tiêu vào các workflow của GitHub Actions. Kẻ tấn công khai thác triệt để các trình kích hoạt pull_request_target.
Mục đích là để chèn mã độc vào các thư viện được sử dụng rộng rãi. Các dự án lớn đã bị ảnh hưởng bao gồm PostHog, Zapier, và AsyncAPI.
Kẻ tấn công sử dụng các token tự động hóa đã bị xâm phạm để lây nhiễm các dependency hạ nguồn một cách có hệ thống. Điều này cho phép mã độc lan truyền sâu rộng trong cấu trúc của một tấn công chuỗi cung ứng.
Cơ chế lây nhiễm và che giấu của mã độc Shai Hulud v2
Quá trình lây nhiễm của Shai Hulud v2 dựa trên một loader hai giai đoạn được thiết kế để hoạt động ẩn danh. Loader này được khởi tạo thông qua một script pre-install có tên setupbun.js.
Script này có nhiệm vụ cài đặt runtime Bun. Sau đó, nó sử dụng Bun để thực thi một payload bị che giấu (obfuscated) là bunenvironment.js.
Trong quá trình thực thi, mã độc ngăn chặn đầu ra tiêu chuẩn (standard output) một cách tinh vi. Mục đích là để tránh bị phát hiện trong các log xây dựng (build logs) của hệ thống CI/CD.
Bằng cách xoay vòng qua các CI pipeline đã bị xâm phạm, mã độc có được quyền truy cập đặc quyền vào các secret của kho lưu trữ (repository secrets). Điều này là một bước quan trọng trong một tấn công chuỗi cung ứng.
Quyền truy cập này cho phép mã độc sửa đổi mã nguồn, tăng phiên bản patch, và phát hành lại các gói bị nhiễm lên các registry công khai. Từ đó, nó tiếp tục chu kỳ lây nhiễm.
Cơ chế duy trì và tái kích hoạt tấn công
Các nhà phân tích bảo mật từ Socket.dev đã xác định một cơ chế duy trì độc đáo của mã độc Shai Hulud v2. Mã độc sử dụng cụm từ “Sha1-Hulud The Second Coming” làm beacon phrase.
Cụm từ này được dùng để tìm kiếm trên GitHub. Mục đích là để định vị và kích hoạt lại các cuộc lây nhiễm.
Cơ chế này đảm bảo rằng ngay cả khi các kho lưu trữ riêng lẻ được làm sạch, kẻ tấn công vẫn có thể tìm thấy và tái xâm phạm các điểm cuối dễ bị tổn thương. Đây là một chiến thuật duy trì sự hiện diện mạnh mẽ sau một tấn công chuỗi cung ứng.
Để tìm hiểu sâu hơn về phân tích này, bạn có thể tham khảo bài viết chi tiết từ Socket.dev tại Shai Hulud Strikes Again v2.
Quy trình thu thập thông tin và rò rỉ dữ liệu nhạy cảm
Một khi đã thiết lập được chỗ đứng trong môi trường CI, mã độc sẽ thực thi một quy trình thu thập thông tin xác thực toàn diện. Nó thu thập tất cả các biến môi trường có sẵn trên hệ thống.
Shai Hulud v2 đặc biệt nhắm mục tiêu vào các biến quan trọng như GITHUB_TOKEN, NPM_TOKEN, và AWS_ACCESS_KEY_ID. Những token này thường chứa các quyền truy cập rộng lớn.
Đồng thời, mã độc triển khai một binary TruffleHog để quét hệ thống tệp cục bộ. Công cụ này được dùng để tìm kiếm các secret nhúng có thể tồn tại trong mã nguồn hoặc cấu hình.
Không giống như các scraper thông thường, payload này liệt kê mạnh mẽ cơ sở hạ tầng đám mây. Nó chu kỳ qua mọi khu vực trong AWS, Google Cloud, và Azure.
Mục tiêu là để trích xuất các secret từ các kho lưu trữ được quản lý (managed vaults). Điều này dẫn đến nguy cơ rò rỉ dữ liệu nhạy cảm trên quy mô lớn, ảnh hưởng đến nhiều dịch vụ đám mây.
Tất cả dữ liệu bị đánh cắp được che giấu bằng ba lớp mã hóa Base64 phức tạp. Sau đó, chúng được trích xuất (exfiltrate) đến một kho lưu trữ GitHub được tạo ngẫu nhiên trong tài khoản của nạn nhân.
Nỗ lực leo thang đặc quyền và chức năng phá hoại (Wiper)
Mã độc cũng thực hiện các nỗ lực đáng kể để leo thang đặc quyền trên các Linux runner. Nó cố gắng thao túng tệp sudoers hoặc thực thi lệnh Docker run --privileged.
Mục tiêu là để giành quyền root (quyền kiểm soát tối cao) đối với hệ thống. Việc chiếm quyền điều khiển này cung cấp cho kẻ tấn công khả năng toàn diện để thực hiện các hành vi độc hại.
Nếu Shai Hulud v2 không tìm thấy thông tin xác thực hợp lệ để lan truyền mã độc (propagate the worm) sang các hệ thống khác, nó sẽ thực thi một chức năng wiper phá hoại.
Chức năng này được thiết kế để xóa các tệp, gây ra thiệt hại nghiêm trọng và làm gián đoạn hoạt động của hệ thống bị ảnh hưởng.
Các chỉ số thỏa hiệp (IOCs) của Shai Hulud v2
Dưới đây là các chỉ số thỏa hiệp (Indicators of Compromise – IOCs) được xác định liên quan đến chiến dịch tấn công chuỗi cung ứng Shai Hulud v2:
- Beacon phrase:
Sha1-Hulud The Second Coming(được sử dụng để tái kích hoạt tấn công trên GitHub). - Script lây nhiễm ban đầu:
setupbun.js(scriptpre-installkhởi tạo quá trình lây nhiễm). - Payload chính bị che giấu:
bunenvironment.js(payload thực thi sau khi Bun runtime được cài đặt). - Các biến môi trường mục tiêu: Các biến này là mục tiêu chính để thu thập thông tin xác thực:
GITHUB_TOKENNPM_TOKENAWS_ACCESS_KEY_ID
- Công cụ thu thập secret: Binary
TruffleHog(được sử dụng để quét hệ thống tệp cục bộ và hạ tầng đám mây). - Cơ chế lưu trữ dữ liệu bị đánh cắp: Kho lưu trữ GitHub được tạo ngẫu nhiên trong tài khoản của nạn nhân (dữ liệu được exfiltrate đến đây).
- Phương thức leo thang đặc quyền: Thao túng tệp
sudoershoặc thực thi lệnhDocker run --privileged(trên Linux runner).
Tác động và Bài học về An ninh Mạng từ các tấn công chuỗi cung ứng
Tác động của chiến dịch Shai Hulud v2 là rất lớn, làm lộ các thông tin xác thực nhạy cảm từ hàng chục nghìn kho lưu trữ. Điều này chứng tỏ mức độ nghiêm trọng của một tấn công chuỗi cung ứng tinh vi.
Sự kiện này nhấn mạnh tầm quan trọng của việc tăng cường an ninh mạng trong toàn bộ chu trình phát triển và triển khai phần mềm. Đặc biệt, cần chú ý đến việc quản lý các workflow tự động hóa và các dependency của bên thứ ba.
Các tổ chức cần thực hiện kiểm tra bảo mật nghiêm ngặt cho tất cả các gói phần mềm và dependency. Ngoài ra, việc giám sát liên tục các CI pipeline để phát hiện hành vi bất thường là rất cần thiết để ngăn chặn các tấn công chuỗi cung ứng tương tự trong tương lai.







