Lỗ hổng CVE nghiêm trọng trong art-template npm

Lỗ hổng CVE nghiêm trọng trong art-template npm

Lỗ hổng CVE trong chuỗi cung ứng npm của art-template đã bị lợi dụng để phát tán một bộ khai thác Safari trên iOS thông qua một gói JavaScript bị cài cắm mã độc. Bản sửa đổi độc hại biến các ứng dụng web sử dụng thư viện này thành điểm phát tán im lặng, nhắm vào người dùng thiết bị Apple khi truy cập trang web có chứa gói bị ảnh hưởng.

Chuỗi tấn công qua Supply Chain

Cuộc tấn công bắt đầu khi gói art-template npm, ban đầu do một maintainer có tên “aui” phát triển, được chuyển giao cho một tác nhân không rõ danh tính dưới danh nghĩa tiếp tục bảo trì. Ngay sau đó, gói này bị lạm dụng để chèn mã độc vào đầu ra browser bundle, khiến các ứng dụng web tích hợp phiên bản bị nhiễm vô tình trở thành kênh phân phối tấn công.

Theo báo cáo từ Socket.dev, các phiên bản độc hại được đẩy lên liên tiếp nhằm che giấu phát hiện. Các báo cáo issue nêu dấu hiệu bất thường cũng bị xóa âm thầm trong khi kẻ tấn công tiếp tục phát hành bản mới.

Phiên bản bị ảnh hưởng của art-template

Chuỗi phát tán độc hại diễn ra theo từng bước tăng dần qua nhiều bản phát hành. Mức độ chèn mã thay đổi rõ giữa các phiên bản:

  • 4.13.3: Sử dụng mã hóa để che giấu một loader trỏ tới tên miền bên ngoài đáng ngờ.
  • 4.13.5: Loại bỏ lớp che giấu và chèn trực tiếp script loader dạng plaintext vào browser bundle.
  • 4.13.6: Tiếp tục mô hình chèn trực tiếp tương tự, kích hoạt tải payload từ xa khi ứng dụng web được truy cập.

Do gói này được dùng rộng rãi trong các dự án JavaScript, phạm vi phơi nhiễm của lỗ hổng CVE dạng supply chain này là rất lớn. Bất kỳ ứng dụng nào nhúng các phiên bản trên đều có thể vô tình phát tán bộ khai thác tới người dùng cuối mà không có dấu hiệu thay đổi hiển thị rõ ràng.

Hành vi của bộ khai thác iOS Browser Exploit Kit

Implant JavaScript hoạt động như một framework phân phối khai thác qua watering hole. Sau khi được chèn vào từ package bị xâm nhập, nó fingerprint từng khách truy cập vào site và chỉ kích hoạt với môi trường phù hợp.

Mã độc chỉ hoạt động trên Safari chạy iOS 11.0 đến 17.2. Nó thoát lặng lẽ trên Chrome, Firefox, Edge, Android và cả iOS 17.3 trở lên. Cách chọn mục tiêu cho thấy sự phân đoạn rất cụ thể theo phiên bản hệ điều hành.

Khi phát hiện thiết bị phù hợp, implant gửi beacon tới máy chủ command-and-control mỗi 10 giây, bao gồm:

  • Địa chỉ IP công khai của nạn nhân.
  • Chuỗi phiên bản iOS.
  • Campaign tracking code.

Framework còn thực hiện 5 lớp anti-bot checks, gồm kiểm tra render MathML và một thử thách WebAssembly proof-of-work, nhằm xác minh mục tiêu là người thật trên phần cứng thật. Chỉ khi vượt qua các kiểm tra này, payload cuối cùng mới được tải và thực thi.

Liên hệ với CVE-2024-23222

Giới hạn cứng ở iOS 17.3 khớp chính xác với mốc bản vá của CVE-2024-23222, một lỗ hổng WebKit đã được Apple khắc phục tại phiên bản đó. Sự tương thích này cho thấy cơ chế khai thác đang nhắm trực tiếp vào trình duyệt, thay vì một chuỗi lừa đảo truyền thống.

Đây là một chỉ dấu quan trọng trong phân tích cảnh báo CVE, vì payload được chọn theo từng dải phiên bản iOS và có thể phản ánh logic khai thác dựa trên trạng thái vá lỗi của WebKit. Tham chiếu công khai về lỗ hổng có thể xem tại NVD.

Cơ chế phân phối payload và che giấu

Chuỗi phân phối bắt đầu từ gói npm bị sửa đổi rồi đi thẳng đến thiết bị nạn nhân. Bản 4.13.5 và 4.13.6 nối thêm script loader vào bundle phía trình duyệt, sau đó gọi tới một tên miền bên ngoài. Tên miền này chuyển hướng người dùng đến một trang watering hole chứa framework khai thác.

Ngay khi một website dùng các phiên bản đó được truy cập, tấn công được kích hoạt âm thầm trong nền. Cách tiếp cận này làm tăng hiệu quả của khai thác zero-day hoặc khai thác gần zero-day nếu hệ thống nạn nhân chưa kịp cập nhật bản vá.

Implant sử dụng content-addressed module system để che giấu payload trước quan sát bên ngoài. Các module từ xa được lấy qua URL sinh từ việc băm một secret session key cùng module identifier, khiến các bộ quét không biết khóa khó phát hiện được tài nguyên liên quan.

Thiết kế này tương thích với mẫu hạ tầng đã ghi nhận ở Coruna exploit kit trước đó, bao gồm cơ chế XOR obfuscation được xác nhận qua các quy tắc YARA đã công bố.

IOC và dấu hiệu liên quan

IOC trong dữ liệu gốc không liệt kê địa chỉ IP hay domain cụ thể ở dạng chưa bị làm mờ, nhưng có các chỉ dấu kỹ thuật cần theo dõi trong kiểm tra xâm nhập và threat hunting:

  • art-template phiên bản 4.13.3 đến 4.13.6.
  • Script loader bất thường trong browser bundle.
  • Outbound network requests từ môi trường JavaScript runtime tới miền ngoài không mong đợi.
  • Redirect tới trang watering hole chứa exploit framework.
  • Beaconing định kỳ mỗi 10 giây tới server điều khiển.
  • MathML rendering testWebAssembly proof-of-work trong luồng thực thi.

Kiểm tra và giảm thiểu rủi ro bảo mật

Để giảm rủi ro bảo mật từ chuỗi cung ứng này, cần rà soát dependency tree và xác minh các bản phát hành đang được sử dụng. Những biện pháp chính gồm khóa phụ thuộc, kiểm tra đầu ra bundle và giám sát lưu lượng ra ngoài từ JavaScript runtime.

Một số bước kiểm tra phù hợp với an toàn thông tin trong môi trường build và triển khai:

npm ls art-template
npm audit

grep -R "script loader" dist/ build/ 2>/dev/null

grep -R "http://" dist/ build/ 2>/dev/null

grep -R "https://" dist/ build/ 2>/dev/null

Nếu phát hiện ứng dụng đã triển khai với các phiên bản bị ảnh hưởng, cần thực hiện review bảo mật ngay lập tức và thay thế bằng bản sạch. Việc giám sát thêm các kết nối bất thường từ trình duyệt và runtime JavaScript sẽ hỗ trợ phát hiện sớm phát hiện xâm nhập.

Rà soát cấu hình và đầu ra bundle

Các nhóm phát triển nên kiểm tra xem bundle có xuất hiện loader ngoài ý muốn hay không, đặc biệt là các đoạn script được chèn vào file đầu ra sau bước build. Nếu quy trình CI/CD không khóa chặt phiên bản phụ thuộc, đây là điểm phát sinh tấn công mạng qua supply chain rất khó nhận thấy bằng kiểm tra thủ công thông thường.

Trong môi trường giám sát, nên ưu tiên cảnh báo cho các request ra ngoài từ ứng dụng web vốn không có chức năng tải script động. Đây là chỉ dấu trực tiếp hỗ trợ phát hiện tấn công ở lớp ứng dụng và trình duyệt.

Dấu hiệu cần kiểm tra trong thực tế

Một hệ thống có nguy cơ cao thường thể hiện các biểu hiện sau:

  • Browser bundle chứa loader ngoài dự kiến.
  • Lưu lượng kết nối tới domain lạ ngay sau khi người dùng mở trang.
  • Chỉ các thiết bị Safari trên iOS 11.0–17.2 bị ảnh hưởng.
  • Beacon định kỳ tới máy chủ điều khiển ở khoảng cách cố định.

Đây là những dấu hiệu phù hợp với mối đe dọa mạng có tính chọn lọc cao, trong đó gói npm bị lợi dụng làm điểm khởi phát để dẫn tới thực thi payload trên thiết bị di động.