Nguy Hiểm Mã Độc Shai-Hulud: Tấn Công Chuỗi Cung Ứng NPM

Nhóm nghiên cứu lỗ hổng bảo mật của GitLab đã phát hiện một chiến dịch tấn công chuỗi cung ứng quy mô lớn, lây lan một biến thể mã độc phá hoại thông qua hệ sinh thái npm. Cuộc tấn công này cho thấy sự tinh vi ngày càng tăng của các mối đe dọa mạng, nhắm vào các nhà phát triển và cơ sở hạ tầng phát triển phần mềm toàn cầu.
Mối Đe Dọa Mã Độc Shai-Hulud: Biến Thể Đột Biến
Biến thể mã độc được phát hiện là một phiên bản tiến hóa của “Shai-Hulud”, mang theo một tính năng nguy hiểm đe dọa phá hủy dữ liệu người dùng nếu kẻ tấn công mất quyền kiểm soát cơ sở hạ tầng của chúng. Sự hiện diện của cơ chế tự hủy dữ liệu này làm tăng đáng kể rủi ro bảo mật cho các hệ thống bị nhiễm.
Mã độc này lây lan qua các gói npm bị xâm nhập thông qua một quy trình nhiều giai đoạn phức tạp. Mục tiêu chính là chiếm đoạt thông tin xác thực nhạy cảm và mở rộng phạm vi tấn công một cách tự động.
Cơ Chế Lây Nhiễm Ban Đầu
Khi các nhà phát triển cài đặt một gói npm bị xâm nhập, một tập lệnh độc hại sẽ tự động tải xuống một tệp tin dường như là phiên bản hợp pháp của Bun JavaScript runtime. Tuy nhiên, đây chỉ là vỏ bọc che giấu payload thực sự của mã độc.
- Bước 1: Cài đặt gói npm độc hại.
- Bước 2: Tập lệnh preinstall/postinstall kích hoạt.
- Bước 3: Tải xuống tệp tin giả mạo Bun runtime.
- Bước 4: Thực thi payload mã độc đã được che giấu kỹ lưỡng (heavily obfuscated), có kích thước lên tới 10MB trên hệ thống nạn nhân.
Thu Thập Thông Tin Xác Thực Nâng Cao
Sau khi được thực thi, mã độc bắt đầu quá trình thu thập thông tin xác thực một cách mạnh mẽ từ nhiều nguồn khác nhau. Đây là một giai đoạn quan trọng trong tấn công chuỗi cung ứng, cho phép kẻ tấn công mở rộng quyền truy cập.
- Token GitHub: Được sử dụng để truy cập và thao tác với các kho lưu trữ mã nguồn.
- Khóa xác thực npm: Cho phép truy cập và xuất bản các gói npm.
- Tài khoản đám mây: Bao gồm AWS, Google Cloud và Microsoft Azure, cung cấp quyền truy cập vào tài nguyên và dịch vụ đám mây nhạy cảm.
Để tối đa hóa khả năng thu thập thông tin, mã độc còn tải xuống Trufflehog, một công cụ bảo mật hợp pháp. Công cụ này được sử dụng để quét toàn bộ thư mục gốc của người dùng, tìm kiếm các khóa API và mật khẩu ẩn được lưu trữ trong các tệp cấu hình.
Kỹ Thuật Lây Lan Kiểu Worm-like qua Hệ Sinh Thái npm
Sử dụng các token npm bị đánh cắp, mã độc tự động lây nhiễm tất cả các gói khác mà nạn nhân duy trì. Đây là một cơ chế lây lan hiệu quả, tận dụng sự tin cậy trong môi trường phát triển.
- Mã độc sửa đổi các tệp
package.jsonđể chèn các tập lệnh độc hại. - Tăng số phiên bản của gói (increment version numbers) để kích hoạt quá trình cập nhật.
- Tái xuất bản các gói đã bị sửa đổi lên kho lưu trữ npm.
Hành vi giống worm này có nghĩa là cuộc tấn công mạng lây lan theo cấp số nhân trên toàn bộ hệ sinh thái. Các thông tin xác thực bị đánh cắp được truyền ra ngoài (exfiltrated) tới các kho lưu trữ GitHub do kẻ tấn công kiểm soát, thường được đánh dấu bằng chuỗi “Sha1-Hulud: The Second Coming”.
Những kho lưu trữ này tạo ra một mạng lưới giống như botnet có khả năng phục hồi, nơi các hệ thống bị xâm nhập chia sẻ token truy cập. Điều này làm cho việc theo dõi và gỡ bỏ mã độc trở nên phức tạp hơn.
Payload Hủy Diệt Dữ Liệu Nguy Hiểm
Điểm nguy hiểm nhất của mã độc này là khả năng tự hủy dữ liệu, được thiết kế để bảo vệ cơ sở hạ tầng của cuộc tấn công. Nếu một hệ thống bị nhiễm đồng thời mất quyền truy cập vào cả GitHub và npm, nó sẽ kích hoạt ngay lập tức quá trình phá hủy dữ liệu.
- Trên hệ thống Windows: Mã độc cố gắng xóa tất cả các tệp tin người dùng và ghi đè lên các sector đĩa.
- Trên hệ thống Linux và Mac: Nó sử dụng các kỹ thuật xóa dữ liệu nâng cao để đảm bảo việc phục hồi tệp tin là không thể.
Kịch bản này tạo ra một mối nguy hiểm cực kỳ nghiêm trọng: nếu GitHub xóa các kho lưu trữ độc hại hoặc npm thu hồi các token bị xâm nhập, hàng nghìn hệ thống bị nhiễm có thể đồng thời phá hủy dữ liệu người dùng trên khắp internet. Đây là một mối đe dọa mạng với hậu quả lan rộng chưa từng có.
Chỉ Số Đánh Dấu Sự Thỏa Hiệp (IOCs)
Việc nhận diện các chỉ số thỏa hiệp là cực kỳ quan trọng để phát hiện và ngăn chặn tấn công chuỗi cung ứng này. Các tổ chức cần tích cực giám sát hệ thống của mình để phát hiện những dấu hiệu sau:
- Tên kho lưu trữ GitHub: Tìm kiếm các kho lưu trữ được đánh dấu bằng “Sha1-Hulud: The Second Coming” do kẻ tấn công kiểm soát.
- Tập lệnh
preinstallđáng ngờ trong gói npm: Giám sát các tập lệnh được thêm vào tệppackage.jsonkhông rõ nguồn gốc. - Tăng số phiên bản bất thường: Phát hiện các thay đổi phiên bản (version increments) không mong muốn hoặc không theo lịch trình của các gói npm.
- Truy cập API/tài khoản đám mây bất thường: Giám sát các hoạt động truy cập vào tài khoản GitHub, npm, AWS, Google Cloud, Azure từ các địa chỉ IP hoặc thiết bị không xác định.
- Sự hiện diện của Trufflehog: Phát hiện việc cài đặt và sử dụng công cụ Trufflehog trong môi trường phát triển của bạn mà không có lý do chính đáng.
Để kiểm tra các tập lệnh trong package.json, bạn có thể thực hiện lệnh sau trong thư mục dự án:
grep -r "preinstall" package.jsongrep -r "postinstall" package.jsonBiện Pháp Phòng Ngừa và Phát Hiện Trong An Ninh Mạng
GitLab khuyến nghị một số biện pháp nhằm tăng cường an ninh mạng và bảo vệ các dự án khỏi các cuộc tấn công chuỗi cung ứng tương tự. Việc triển khai các giải pháp phòng ngừa và phát hiện sớm là cần thiết.
Tích Hợp Quét Phụ Thuộc (Dependency Scanning)
Bật tính năng quét phụ thuộc trong các dự án của bạn để tự động phát hiện các gói bị xâm nhập trước khi chúng tiếp cận môi trường sản xuất. Các công cụ này phân tích các gói npm và thư viện bên thứ ba để tìm kiếm các lỗ hổng đã biết hoặc mã độc. Tham khảo thêm chi tiết từ nguồn đáng tin cậy: GitLab Discovers Widespread npm Supply Chain Attack.
Giám Sát Tập Lệnh npm
Các nhóm bảo mật cần theo dõi chặt chẽ các tập lệnh preinstall và postinstall đáng ngờ trong các gói npm. Đây là điểm vào phổ biến cho các mã độc nhằm thực thi payload ngay sau khi cài đặt gói.
Kiểm tra nội dung của các tập lệnh này, đặc biệt là trong các gói mới hoặc các gói có thay đổi đột ngột. Bất kỳ lệnh tải xuống hoặc thực thi từ nguồn không xác định đều cần được điều tra.
Phát Hiện Tăng Phiên Bản Bất Thường
Giám sát sự tăng số phiên bản bất thường (unusual version increments) trong các phụ thuộc của bạn. Các kẻ tấn công thường tăng số phiên bản để đảm bảo các thay đổi độc hại được lan truyền thông qua các bản cập nhật tự động.
Sự gia tăng đột ngột hoặc không có thông báo về phiên bản mới có thể là dấu hiệu của một gói bị xâm phạm.
Xác Thực Mạnh Mẽ và Giới Hạn Quyền Hạn
- Sử dụng xác thực đa yếu tố (MFA) cho tất cả các tài khoản phát triển và đám mây, bao gồm GitHub, npm, AWS, Azure, và Google Cloud.
- Áp dụng nguyên tắc quyền hạn tối thiểu (least privilege) cho các token và khóa API, đảm bảo chúng chỉ có quyền truy cập vào những tài nguyên cần thiết.
- Thường xuyên xoay vòng (rotate) các khóa API và token để giảm thiểu rủi ro khi chúng bị đánh cắp.
Việc chủ động phòng ngừa và giám sát là then chốt để bảo vệ hệ sinh thái phát triển phần mềm khỏi các cuộc tấn công chuỗi cung ứng ngày càng phức tạp.







