Amazon liên kết vụ chiếm quyền điều khiển npm Debug và Chalk với nhóm Sapphire Sleet của Triều Tiên

Amazon đã liên kết vụ chiếm quyền điều khiển các gói npm debug và chalk vào tháng 9 năm 2025 với hacker Triều Tiên. Sự cố ảnh hưởng đến hơn 18 gói phần mềm với tổng cộng 2 tỷ lượt tải mỗi tuần, ban đầu được coi là một vụ trộm tiền điện tử thông thường do người duy trì bị lừa đảo qua tên miền giả mạo. Các báo cáo ban đầu từ Aikido và Wiz trước đó đã không quy trách nhiệm sự cố này cho phía Triều Tiên.
North Korean npm hijacking
Amazon quy trách nhiệm các vụ tấn công chuỗi cung ứng npm cho nhóm hacker Sapphire Sleet của Triều Tiên.

Amazon đã liên kết vụ chiếm quyền điều khiển các gói npm debugchalk vào tháng 9 năm 2025 với Triều Tiên. Trong mười tháng, sự cố này được ghi nhận công khai như một vụ trộm tiền điện tử: một người duy trì (maintainer) đã bị tấn công phishing thông qua một tên miền npm giả mạo và một đoạn mã rút tiền từ ví (wallet-draining script) đã được chèn vào ít nhất 18 gói phần mềm, vốn có tổng cộng hơn 2 tỷ lượt tải xuống hàng tuần.

Các báo cáo ban đầu từ Aikido và Wiz đã không quy trách nhiệm sự cố này cho Triều Tiên. Tuy nhiên, trong nghiên cứu được công bố vào ngày 29 tháng 7, Amazon Threat Intelligence đánh giá với độ tin cậy trung bình rằng nhóm đứng sau vụ xâm nhập axios vào tháng 3 năm 2026 chính là thủ phạm.

Mối liên hệ giữa các chiến dịch tấn công

Theo Amazon, cùng một nhóm này đã cài đặt một tệp tin chứa Trojan vào một gói phần mềm nhỏ có tên là typo-crypto vào tháng 3 năm 2025, tròn một năm trước khi chúng tiếp cận được axios. Các nhà phân tích đã phát hiện ra điều này khi đang theo dấu một tên miền đăng ký năm 2025 xuất hiện trong quá trình điều tra axios.

Mặc dù số lượng tải xuống thấp, nhưng kỹ nghệ tấn công (tradecraft) "phù hợp với những gì chúng tôi quan sát được sau này trong các cuộc tấn công vào các gói phổ biến hơn", Amazon viết, và công ty này nhận định gói phần mềm đó như một lần chạy thử nghiệm. Việc quy trách nhiệm của Amazon bao gồm bốn gói phần mềm cụ thể trong ba chiến dịch diễn ra trong vòng mười hai tháng. Cả ba chiến dịch, theo Amazon, đều bắt đầu theo cùng một cách: sử dụng kỹ thuật tấn công Social Engineering nhắm vào một người duy trì đáng tin cậy, sau đó phát hành một bản cập nhật độc hại.

Amazon không báo cáo thêm vụ xâm nhập mới nào. Phạm vi phản ứng cho debugchalk, các trình đóng gói trình duyệt và bộ nhớ đệm, vẫn khớp với cơ chế đã được công bố. Chỉ có phần quy trách nhiệm là có sự thay đổi.

Tuy nhiên, bằng chứng mà Amazon công bố có phần mỏng hơn so với tuyên bố của họ. Bài đăng của họ trích dẫn các kỹ nghệ tấn công chung giữa các chiến dịch, các gói phần mềm chứa Trojan, các post-install hooks và việc tái sử dụng mã nguồn, cộng với các chỉ số điều khiển và chỉ huy (C2) trùng lặp, nhưng không nói rõ bằng chứng nào liên kết với sự cố nào.

Lỗ hổng trong bằng chứng và sự khác biệt về kỹ thuật

Khoảng cách này đặc biệt quan trọng đối với debugchalk, nơi Aikido và Wiz đã ghi nhận một trình chặn phía trình duyệt (browser-side interceptor) can thiệp vào các API như fetch, XMLHttpRequest và ví để thay đổi địa chỉ giao dịch trước khi người dùng ký xác nhận. Nó không để lại sự duy trì (persistence) trên máy tính. Không giống như mã độc trong axios, mã này không phụ thuộc vào một npm post-install hook. Gói typo-crypto cũng không sử dụng phương thức này, thay vào đó nó chờ đợi một lệnh kích hoạt.

Google đã độc lập quy trách nhiệm vụ axios cho nhóm UNC1069, trích dẫn backdoor WAVESHAPER.V2 và một nút AstrillVPN mà nhóm này từng sử dụng trước đây. Microsoft quy trách nhiệm vụ xâm nhập tương tự cho Sapphire Sleet, nhóm mà họ cho rằng trùng lặp với hoạt động của các nhóm khác như UNC1069, STARDUST CHOLLIMA, BlueNoroff, Alluring Pisces, CageyChameleon và CryptoCore.

Mặc dù việc đặt tên đã được giải quyết, nhưng lỗ hổng về bằng chứng của Amazon thì chưa. Trong số các nguồn được xem xét, Amazon vẫn là nguồn duy nhất quy trách nhiệm cho các vụ xâm nhập debug, chalktypo-crypto. Việc quy trách nhiệm cho axios được đưa ra chỉ trong vòng hai ngày sau khi bị xâm nhập, trong khi hai vụ còn lại được quy trách nhiệm sau mười và mười sáu tháng.

Động cơ tài chính và cơ chế của mã độc

Amazon nhận định mô hình này có động cơ tài chính. Socket đã trao đổi với The Hacker News vào thời điểm đó rằng các ví điện tử vào tháng 9 đã thu về khoảng 600 USD.

Tệp độc hại mà Amazon mô tả, core.js, giả mạo gói core-js hợp lệ bên trong kho lưu trữ. Nó được kích hoạt khi có đầu vào hash bắt đầu bằng 0098273 và tải xuống giai đoạn thứ hai dành riêng cho hệ điều hành từ một C2 được mã hóa cứng, được làm mờ bằng base64 qua một mã hóa XOR với khóa là 01042025. Các chỉ số mạng là npmjs[.]store216[.]74[.]123[.]126.

Hồ sơ OSV (vulnerability record) mã hiệu MAL-2026-3400 xác định phiên bản [email protected] có chứa mã độc, ghi nhận công lao cho Amazon Inspector và được công bố vào ngày 8 tháng 5, gần ba tháng trước khi có thông báo quy trách nhiệm chính thức.

Gói [email protected] vẫn còn được xuất bản trên hệ thống đăng ký và có thể cài đặt được. Nó không khai báo tập lệnh cài đặt, vì vậy việc tải nó xuống đơn thuần sẽ không chạy bất cứ thứ gì. Tệp nén mà npm cung cấp khớp với các integrity hashes (mã băm toàn vẹn) của chính hệ thống đăng ký.

Hồ sơ cho thấy một phiên bản duy nhất được tạo và xuất bản chỉ cách nhau 204 mili giây vào ngày 31 tháng 3 năm 2025. Tài khoản xuất bản không khớp với nhà phát triển được nêu trong trường tác giả của gói. Mô tả và từ khóa của nó được sao chép từ crypto-js, một dự án hoàn toàn khác với core-js mà tệp tin này giả mạo.

Các biện pháp bảo mật mới từ npm

Vào ngày 8 tháng 7, npm đã phát hành phiên bản v12 với các tập lệnh vòng đời phụ thuộc (dependency lifecycle scripts) bị tắt theo mặc định, loại bỏ con đường post-install mặc định mà axios đã sử dụng. Tuy nhiên, điều này không chặn được con đường xâm nhập thông qua việc chiếm quyền tài khoản người duy trì (maintainer-compromise) mà debug, chalkaxios đã gặp phải.

Từ ngày 28 tháng 7, npm đã bắt đầu quét mã độc cho các gói mới được xuất bản trước khi chúng có thể được cài đặt. Tuy nhiên, việc quét này chỉ áp dụng cho các lần xuất bản mới, không áp dụng cho các gói đã có sẵn trên hệ thống đăng ký.