Tấn công mạng nguy hiểm: Hàng loạt gói npm bị chiếm đoạt

Một cuộc tấn công mạng quy mô lớn đã nhắm vào 18 gói npm cực kỳ phổ biến, với tổng lượt tải xuống hàng tuần vượt quá 2 tỷ lượt. Những gói này đã bị tin tặc chiếm đoạt và cài cắm mã độc tinh vi, đặc biệt nhắm mục tiêu vào người dùng và nhà phát triển tiền điện tử.
Chi Tiết Về Cuộc Tấn Công Nền Tảng npm
Vào đầu ngày 8 tháng 9, các hệ thống giám sát bảo mật đã phát hiện một bản cập nhật bất thường của 18 gói npm. Các gói này bao gồm những dự án được sử dụng rộng rãi như chalk, debug, chalk-template và supports-color, đã bị chèn mã độc. Thông tin này được báo cáo chi tiết bởi Aikido tại đây.
Những gói npm bị ảnh hưởng là nền tảng cho hàng triệu ứng dụng và là xương sống cho nhiều công cụ phát triển, xử lý log, hiển thị màu sắc và xử lý văn bản.
Do sự phân phối khổng lồ, cuộc tấn công mạng này có phạm vi ảnh hưởng rộng. Một số gói, như “debug” và “chalk”, ghi nhận hàng trăm triệu lượt tải xuống mỗi tuần, cho thấy mức độ rủi ro nghiêm trọng.
Cơ Chế Hoạt Động Của Mã Độc
Kẻ tấn công đã cài đặt mã độc có khả năng can thiệp vào các API trình duyệt quan trọng. Chúng bao gồm fetch, XMLHttpRequest và các giao diện ví tiền điện tử như window.ethereum và Solana.
Mã độc âm thầm quét lưu lượng truy cập và nội dung web để tìm kiếm địa chỉ ví tiền điện tử và các yêu cầu thanh toán. Các hoạt động tương tự đã từng được ghi nhận, cho thấy sự gia tăng các mối đe dọa.
Khi người dùng tương tác với ví của họ — cho dù là Ethereum, Bitcoin, Solana, Tron, Litecoin hay Bitcoin Cash — mã độc sẽ bí mật thay thế địa chỉ ví hợp pháp bằng một địa chỉ ví do kẻ tấn công kiểm soát. Địa chỉ giả mạo này được thiết kế để trông tương tự, chuyển hướng tài sản kỹ thuật số mà không có bất kỳ thay đổi giao diện người dùng (UI) nào có thể nhận thấy.
Mã độc còn chiếm quyền ký giao dịch bằng cách thay đổi các thông số ngay trong quá trình chuyển tiếp. Điều này đảm bảo rằng bất kỳ giao dịch chuyển khoản, phê duyệt hoặc cấp phép nào cũng thực sự được gửi đến kẻ tấn công, ngay cả khi giao diện người dùng vẫn hiển thị bình thường.
Chiến lược chính của mã độc dựa vào mã nguồn bị che giấu (obfuscated code) và các địa chỉ giả mạo (lookalike addresses). Điều này khiến việc phát hiện và phân tích trở nên cực kỳ khó khăn, làm tăng thêm rủi ro bảo mật cho người dùng.
Vector Lây Nhiễm Ban Đầu và Phát Triển Cuộc Tấn Công
Vector lây nhiễm ban đầu được truy vết từ một email lừa đảo (phishing email) được tạo ra rất tinh vi. Email này được gửi từ một tên miền được thiết kế giống như dịch vụ hỗ trợ chính thức của npm.
Email phishing đã lừa người duy trì gói (maintainer) cung cấp thông tin đăng nhập của họ. Sau khi tài khoản bị chiếm đoạt, kẻ tấn công bắt đầu cập nhật các gói bị ảnh hưởng. Sau đó, chúng tiếp tục nhắm mục tiêu vào các người duy trì khác của các dự án phổ biến khác.
Các nhà phát triển đã phản ứng nhanh chóng để dọn dẹp các gói bị thỏa hiệp. Tuy nhiên, một số gói, chẳng hạn như simple-swizzle, vẫn còn bị nhiễm mã độc vài giờ sau khi sự cố xảy ra. Điều này cho thấy tính chất dai dẳng và phức tạp của cuộc tấn công mạng này.
Chỉ Số Nhận Dạng Sự Thỏa Hiệp (Indicators of Compromise – IOCs)
Mặc dù không có các chỉ số nhận dạng truyền thống như địa chỉ IP hoặc hàm băm, các gói npm bị thỏa hiệp dưới đây đóng vai trò là chỉ số quan trọng để kiểm tra:
- chalk
- debug
- chalk-template
- supports-color
- simple-swizzle
Người dùng cần kiểm tra phiên bản các gói này trong dự án của mình và so sánh với các bản vá được cung cấp bởi nhà phát triển chính thức. Ngoài ra, cần cảnh giác với các email giả mạo từ các dịch vụ như npm.
Hậu Quả và Khuyến Nghị Bảo Mật
Sự cố này minh chứng rõ ràng về rủi ro bảo mật chuỗi cung ứng (supply chain risks) mà các dự án mã nguồn mở phổ biến có thể gây ra. Các bản cập nhật do kẻ tấn công kiểm soát trên các gói phổ biến có thể đe dọa một phân khúc rộng lớn của chuỗi cung ứng phần mềm và người dùng tiền điện tử trên toàn thế giới.
Để giảm thiểu rủi ro từ các cuộc tấn công mạng tương tự, người dùng được khuyến nghị thực hiện các biện pháp sau:
- Xác thực các thư viện phụ thuộc (dependencies): Luôn kiểm tra tính xác thực và nguồn gốc của các gói trước khi tích hợp vào dự án.
- Tránh sử dụng các phiên bản bị thỏa hiệp: Cập nhật liên tục thông tin về các gói bị ảnh hưởng và tránh cài đặt hoặc sử dụng các phiên bản đã biết có mã độc.
- Kiểm tra dấu hiệu giả mạo: Thường xuyên rà soát mã nguồn và các file cấu hình để phát hiện bất kỳ sự thay đổi hoặc chèn mã độc nào, đặc biệt khi xử lý các giao dịch tiền điện tử.
Các dự án như Aikido khuyến nghị sử dụng các công cụ an toàn chuỗi cung ứng tự động (automated safe-chain tools). Những công cụ này có khả năng phát hiện và ngăn chặn các mối đe dọa ở cấp độ gói trước khi chúng kịp xâm nhập vào các ứng dụng sản xuất, góp phần nâng cao an ninh mạng tổng thể.









