Skip to main content

Command Palette

Search for a command to run...

Malware GlassWorm tấn công các chợ ứng dụng trên OpenVSX và VS Code

Updated
8 min read
Malware GlassWorm tấn công các chợ ứng dụng trên OpenVSX và VS Code

Vừa qua các nhà nghiên cứu bảo mật thuộc Koi Security đã thông báo về sự xuất hiện của một loại malware mới, nhắm tới các extension được sử dụng trong ứng dụng VS Code và chợ ứng dụng trên OpenVSX. Báo cáo sơ bộ cho thấy loại malware này có thể thu thập thông tin đăng nhập Git, Github, NPM; tự triển khai máy chủ proxy SOCKS, biến hệ thống bị xâm nhập thành cơ sở hạ tầng phục vụ cho tin tặc; cài đặt máy chủ VNC ẩn để cấp quyền truy cập từ xa; sử dụng thông tin đăng nhập đã đánh cắp để xâm phạm hơn 49 extension, tấn công các ví tiền điện tử và mở rộng phạm vi lây lan.

Thông tin chi tiết

Một tháng sau khi Shai Hulud trở thành worm tự lây lan đầu tiên trong hệ sinh thái NPM, các nhà nghiên cứu bảo mật thuộc Koi Security đã phát hiện ra loại worm đầu tiên nhắm vào các extension VS Code trên chợ ứng dụng OpenVSX.

Được theo dõi dưới cái tên GlassWorm, các chuyên gia đánh giá đây không chỉ là một loại mã độc tấn công chuỗi cung ứng như thông thường, thay vào đó nó sử dụng các kỹ thuật ẩn danh chưa từng được ghi nhận trên thực tế. Loại mã độc này sử dụng các ký tự “Unicode vô hình”, giúp nó biến mất hoàn toàn khỏi các trình soạn thảo mã, đồng thời kết hợp với cơ sở hạ tầng C2 dựa trên blockchain khiến nó không thể bị tiêu diệt. Ngoài ra, GlassWorm cũng lợi dụng Google Calendar như một máy chủ C2 dự phòng, biến ứng dụng này thành trojan truy cập từ xa, cho phép nó điều khiển các hệ thống bị nhiễm thành các nút proxy phục vụ cho mạng lưới tội phạm.

Tính tới thời điểm hiện tại, đã có 07 extension trên OpenVSX bị xâm nhập bởi GlassWorm với hơn 35.800 tổng số lượt tải xuống. Thống kê của Koi Security cũng cho biết một số extension thuộc VS Code cũng đã bị malware này xâm nhập và lây lan, các máy chủ C2 của kẻ tấn công vẫn đang hoạt động, phản hồi và ra các lệnh đánh cắp tới các thiết bị bị lây nhiễm.

Chuỗi tấn công

Dưới đây là chi tiết về các giai đoạn triển khai lây nhiễm và mở rộng của GlassWorm được các chuyên gia bảo mật thuộc Koi Security phân loại và tổng hợp:

  1. Giai đoạn 1: Tiêm mã độc bằng ký tự "vô hình”

Trong trường hợp trên, kẻ tấn công đã tiêm vào source code của các extension trên CodeJoy đoạn mã độc vô hình. Đây thực chất là các những ký tự đặc biệt thuộc chuẩn Unicode nhưng không được hiển thị trên phía người dùng, khiến nó dễ dàng đánh lừa người dùng bởi trông như những dòng trắng hoặc khoảng trắng bình thường.

Nguy hiểm hơn, việc sử dụng các ký tự Unicode vô hình trên khiến các công cụ phân tích tĩnh, rà quét mã độc không thể tìm ra malware. Thậm chí, chế độ hiển thị diff của Github hay tính năng tô màu cú pháp trong IDE cũng không hiển thị bất kỳ điều bất thường nào, điều này thực sự đi ngược lại với quy luật thông thường khi tin tặc có xu hướng ẩn các đoạn mã độc bằng cách xáo trộn mã bằng kỹ thuật (obfuscated) hoặc giấu mã độc trong các file đã được rút gọn (minified).

  1. Giai đoạn 2: Kết nối với máy chủ C2 không thể bị tiêu diệt

Kẻ tấn công không dùng máy chủ thông thường mà tận dụng blockchain Solana để gửi lệnh điều khiển. Chúng chèn đường dẫn tải mã độc vào phần ghi chú của giao dịch tiền mã hoá — giống như viết một dòng chú thích công khai. Phần mềm độc hại trên máy nạn nhân đọc những chú thích này và biết chỗ tải xuống giai đoạn tiếp theo.

Vì giao dịch trên blockchain là không thể sửa hoặc xóa, bất kỳ lệnh nào đã đăng lên đó sẽ tồn tại mãi. Hơn nữa, ví mã hoá chỉ mang tên giả (khó truy ra người thật), chi phí đăng lệnh rất rẻ, và các kết nối tới blockchain trông hoàn toàn bình thường — nên rất khó phát hiện và chặn. Trong trường hợp các biện pháp bảo mật phát hiện ra kết nối bất thường và chặn URL tải xuống payload, kẻ tấn công dễ dàng thay đổi một phiên kết nối mới với URL khác và mọi thứ đều trở lại như cũ, các hệ thống bị lây nhiễm tự động nằm trong tầm kiểm soát của kẻ tấn công.

  1. Giai đoạn 3: Đánh cắp thông tin của nạn nhân

Từ địa chỉ máy chủ C2 ở trên, mã độc tải xuống máy nạn nhân một gói dữ liệu lớn đã mã hoá. Bên cạnh đó, khoá giải mã cho dữ liệu được khéo léo lồng ghép trong HTTP header mà máy chủ C2 phản hồi về máy bị lây nhiễm. Phần dữ liệu sau khi giải mã bắt đầu “săn” thông tin: token xác thực NPM để xuất bản các gói độc hại, token GitHub để chiếm kho mã, thông tin đăng nhập OpenVSX/Git để chèn mã độc, và dữ liệu từ 49 tiện ích mở rộng ví tiền điện tử (ví dụ MetaMask, Phantom...).

Nếu máy chủ C2 bị chặn, GlassWorm triển khai phương án dự phòng của nó: sử dụng Google Calendar để ra lệnh cho máy bị lây nhiễm bằng cách lợi dụng các sự kiện công khai trên ứng dụng này, tiêm vào đó đoạn mã chứa các đường dẫn mã hoá, và có thể dễ dàng gửi lệnh mới thông qua chỉnh sửa các tiêu đề của sự kiện trên.

  1. Giai đoạn 4: ZOMBI

Giai đoạn cuối của GlassWorm — mô-đun ZOMBI — một payload JavaScript cực kỳ tinh vi, biến mọi máy trạm của nhà phát triển bị nhiễm thành một nút trong mạng lưới hạ tầng tội phạm.

Mã độc cài đặt SOCKS proxy (đưa IP của nạn nhân làm điểm chuyển tiếp), dùng WebRTC để thiết lập kết nối ngang hàng né tường lửa và BitTorrent DHT để phát tán lệnh theo kiểu phi tập trung, khiến việc vô hiệu hóa gần như bất khả thi. Nó còn triển khai HVNC (Hidden VNC) — truy cập desktop ẩn để kẻ tấn công lặng lẽ dùng trình duyệt, đọc email, xem mã nguồn và lấy thêm thông tin đăng nhập.

Hậu quả gây ra là các máy bị lây nhiễm trở thành điểm truy cập vào mạng nội bộ, kênh rò rỉ dữ liệu và nút trong mạng proxy/botnet toàn cầu. ZOMBI tự khởi động lại khi bị can thiệp và có thể cập nhật từ xa, nên rất khó bị dập tắt — và tất cả bắt đầu từ một ký tự Unicode vô hình trong một tiện ích mở rộng.

Khuyến nghị & Khắc phục

Chiến dịch phát tán và lây lan GlassWorm ước tính có khoảng 35.800 nạn nhân với 07 extension thuộc OpenVSX bị xâm phạm và một số các extension thuộc VS Code cũng đang bị nhắm tới. Để đối phó với sự tấn công từ mã độc này, các tổ chức và người dùng cần thực hiện các biện pháp bảo mật toàn diện và ngay lập tức. Dưới đây là một số khuyến nghị quan trọng nhằm giảm thiểu nguy cơ lây nhiễm và bảo vệ hệ thống:

  • Cập nhật và kiểm tra các tiện ích mở rộng (extensions): Gỡ ngay và chặn các extension bị nghi nhiễm; tạm vô hiệu hoá tự động cập nhật extension trên môi trường sản xuất. Ngoài ra cần hạn chế quyền write/publish từ tài khoản dev, áp dụng nguyên tắc least‑privilege cho token và CI/CD; kiểm duyệt extension trước khi cho vào môi trường.

  • Kiểm tra và thay đổi mật khẩu: Thu hồi và đổi mọi token / mật khẩu nghi ngờ bị rò rỉ (NPM, GitHub, OpenVSX, Git) và bật xác thực đa yếu tố (MFA).

  • Giám sát và bảo mật hệ thống: Quét và cách ly hệ thống bằng EDR/antivirus; tìm dấu hiệu SOCKS proxy, HVNC, kết nối tới IPs/hosts lạ (ví dụ 217.69.3[.]218). Thông qua theo dõi logs, kiểm soát lưu lượng mạng vào/ra, các giao dịch blockchain bất thường và sự kiện Google Calendar liên quan; lập kế hoạch ứng phó sự cố để nhanh chóng cô lập và thực hiện khôi phục từ bản sao lưu sạch nếu cần thiết.

  • Đào tạo và nâng cao nhận thức bảo mật: Thực hiện đào tạo đội ngũ nhân viên về những mối nguy hiểm từ các cuộc tấn công supply chain và tầm quan trọng của việc kiểm tra kỹ lưỡng các tiện ích mở rộng, đặc biệt là các mã nguồn từ các bên thứ ba. Ngoài ra, các developer luôn luôn phải cảnh giác trước các ký tự vô hình hoặc các đoạn mã không hiển thị trong quá trình kiểm tra mã nguồn.

GlassWorm là một loại mã độc cực kỳ tinh vi và nguy hiểm, sử dụng nhiều cơ chế để phát tán và tấn công, từ việc lén lút xâm nhập mã nguồn, cho đến việc sử dụng blockchain và các dịch vụ hợp pháp như Google Calendar để duy trì và phát triển cơ sở hạ tầng tấn công. Việc áp dụng các biện pháp bảo mật mạnh mẽ, giám sát liên tục và đào tạo nhận thức bảo mật là những yếu tố quan trọng để ngăn ngừa và giảm thiểu thiệt hại từ loại mã độc này.

Tham khảo

Newsletters

Part 1 of 50

More from this blog

F

FPT IS Security

761 posts

Dedicated to providing insightful articles on cybersecurity threat intelligence, aimed at empowering individuals and organizations to navigate the digital landscape safely.