Một cuộc tấn công chuỗi cung ứng tinh vi đã xâm nhập vào thư viện Axios JavaScript được sử dụng rộng rãi, tiêm một trojan truy cập từ xa (RAT) đa nền tảng vào môi trường mà công ty bảo mật Wiz ước tính là 80% môi trường mã và đám mây. Sự cố này, liên quan đến các phiên bản độc hại của gói npm có sẵn trong khoảng ba giờ, đại diện cho một trong những vụ vi phạm đáng kể nhất của hệ sinh thái mã nguồn mở, xét đến 100 triệu lượt tải xuống hàng tuần của Axios.
“Các hacker Triều Tiên có kinh nghiệm sâu sắc với các cuộc tấn công chuỗi cung ứng, những cuộc tấn công mà họ từng sử dụng trong lịch sử để đánh cắp tiền điện tử,” John Hultquist, nhà phân tích trưởng tại Nhóm Tình báo Đe dọa của Google (GTIG), cho biết trong một tuyên bố. “Toàn bộ phạm vi của sự cố này vẫn chưa rõ ràng, nhưng với sự phổ biến của gói phần mềm bị xâm nhập, chúng tôi dự đoán nó sẽ có tác động sâu rộng.” GTIG đã quy trách nhiệm cuộc tấn công cho UNC1069, một tác nhân đe dọa từ Triều Tiên.
Cuộc tấn công bắt đầu vào ngày 31 tháng 3 khi tác nhân đe dọa xuất bản các phiên bản độc hại [email protected] và [email protected] lên sổ đăng ký npm. Điều này đạt được bằng cách xâm nhập tài khoản npm của người duy trì chính của dự án và sử dụng mã thông báo kế thừa có tuổi thọ cao để bỏ qua quy trình xuất bản dựa trên OIDC an toàn hơn của dự án. Các gói độc hại bao gồm một phần phụ thuộc ảo, plain-crypto-js, chứa một tập lệnh sau cài đặt để tải xuống RAT.
Vụ vi phạm làm nổi bật một lỗ hổng nghiêm trọng trong chuỗi cung ứng phần mềm, ảnh hưởng đến một thư viện có gần 175.000 dự án phụ thuộc. Tác động của cuộc tấn công đối với môi trường nhà phát triển và đường ống CI/CD có thể dẫn đến việc đánh cắp thông tin xác thực đáng kể và di chuyển ngang trong mạng lưới doanh nghiệp. Đối với các công ty như Wiz và Snyk, sự kiện này nhấn mạnh nhu cầu quản lý phụ thuộc chặt chẽ hơn và xác minh thời gian chạy, có khả năng làm tăng nhu cầu về các dịch vụ quét bảo mật và tình báo đe dọa của họ.
Cách thức cuộc tấn công diễn ra
Những kẻ tấn công đã chứng minh sự tinh vi đáng kể trong vận hành. Khoảng 18 giờ trước cuộc tấn công chính, một tài khoản có tên nrwise đã xuất bản một gói mồi nhử sạch, [email protected], để thiết lập lịch sử hợp pháp trên sổ đăng ký npm. Ngay trước khi Axios bị xâm nhập, họ đã cập nhật nó lên phiên bản 4.2.1, phiên bản chứa mã độc.
Các phiên bản Axios bị xâm nhập đã thêm gói độc hại này dưới dạng phụ thuộc. Khi các nhà phát triển cài đặt hoặc cập nhật Axios, tập lệnh postinstall trong plain-crypto-js đã thực thi, liên hệ với máy chủ điều khiển (C2) tại sfrclak.com để tải xuống phần mềm độc hại dành riêng cho nền tảng.
Phần mềm độc hại là một RAT đa nền tảng với các biến thể cho Windows, macOS và Linux.
- Trên macOS, tệp nhị phân được ghi vào
/Library/Caches/com.apple.act.mond và có thể tự ký các tải trọng được tiêm để bỏ qua Gatekeeper.
- Trên Windows, một tập lệnh PowerShell giả dạng Windows Terminal (
wt.exe) đã được sao chép vào %PROGRAMDATA%, với sự kiên trì được thiết lập thông qua khóa Run của sổ đăng ký.
- Trên Linux, một tập lệnh Python được lưu trữ dưới dạng
/tmp/ld.py và được thực thi.
Sau khi triển khai tải trọng, tập lệnh đã cố gắng xóa dấu vết bằng cách thay thế tệp package.json độc hại bằng phiên bản sạch, đánh lừa các nhà phát triển có thể kiểm tra các gói đã cài đặt của họ.
Tác động rộng rãi và khắc phục
Mặc dù các gói độc hại đã bị xóa khỏi sổ đăng ký npm trong vòng ba giờ, nhưng tốc độ tải xuống cao của Axios có nghĩa là một số lượng đáng kể các hệ thống đã bị xâm nhập. Wiz báo cáo đã quan sát thấy phần mềm độc hại thực thi trong khoảng 3% môi trường bị ảnh hưởng mà họ giám sát. Công ty bảo mật Huntress cũng báo cáo hơn 100 thiết bị bị ảnh hưởng.
Các chuyên gia bảo mật đang kêu gọi hành động ngay lập tức. Các tổ chức được khuyên nên kiểm tra các tệp khóa dự án và nhật ký CI/CD của họ để tìm bất kỳ dấu vết nào của [email protected], [email protected] hoặc [email protected].
“Đừng cố gắng làm sạch các hệ thống bị xâm nhập. Hãy xây dựng lại từ một bản sao sạch đã biết,” các nhà nghiên cứu của Snyk khuyên. Bất kỳ môi trường nào đã cài đặt các phiên bản này đều nên được coi là bị xâm nhập hoàn toàn. Tất cả các thông tin xác thực, bao gồm mã thông báo npm, khóa nhà cung cấp đám mây và khóa SSH, phải bị thu hồi và cấp lại.
Để phòng thủ lâu dài, các nhóm bảo mật nên xem xét thực thi npm ci --ignore-scripts trong các đường ống xây dựng tự động để ngăn các tập lệnh độc hại chạy. Việc triển khai các chính sách về độ tuổi gói, ngăn chặn việc cài đặt các gói mới xuất bản, cũng có thể ngăn chặn cuộc tấn công này, vì phần phụ thuộc plain-crypto-js độc hại mới chưa đầy một ngày tuổi.
Bài viết này chỉ nhằm mục đích thông tin và không cấu thành lời khuyên đầu tư.