Worm tự lây lan 'GlassWorm' lây nhiễm các tiện ích mở rộng (extensions) của VS Code trong một cuộc tấn công chuỗi cung ứng (supply chain attack) trên diện rộng

Các nhà nghiên cứu an ninh mạng đã phát hiện ra một worm tự lây lan (self-propagating worm) lây nhiễm qua các tiện ích mở rộng (extensions) của Visual Studio Code (VS Code) trên Open VSX Registry và Microsoft Extension Marketplace, nhấn mạnh việc các nhà phát triển đã trở thành mục tiêu chính của các cuộc tấn công. Mối đe dọa tinh vi này, được Koi Security đặt tên là GlassWorm, là cuộc tấn công chuỗi cung ứng (supply chain attack) thứ hai nhằm vào không gian DevOps trong vòng một tháng.
Tấn công chuỗi cung ứng
Minh họa tấn công chuỗi cung ứng vào VS Code

Các nhà nghiên cứu an ninh mạng đã phát hiện ra một worm tự lây lan (self-propagating worm) lây nhiễm qua các tiện ích mở rộng (extensions) của Visual Studio Code (VS Code) trên Open VSX Registry và Microsoft Extension Marketplace, nhấn mạnh việc các nhà phát triển đã trở thành mục tiêu chính của các cuộc tấn công.

Mối đe dọa tinh vi này, được Koi Security đặt tên là GlassWorm, là cuộc tấn công chuỗi cung ứng (supply chain attack) thứ hai nhằm vào không gian DevOps trong vòng một tháng sau worm Shai-Hulud đã nhắm mục tiêu vào hệ sinh thái npm vào giữa tháng 9 năm 2025.

Điểm nổi bật của cuộc tấn công này là việc sử dụng blockchain Solana cho hệ thống máy chủ điều khiển và kiểm soát (C2), giúp cơ sở hạ tầng có khả năng chống lại các nỗ lực vô hiệu hóa. Nó cũng sử dụng Google Calendar làm cơ chế C2 dự phòng.

Một khía cạnh mới lạ khác là chiến dịch GlassWorm dựa vào "các ký tự Unicode vô hình khiến mã độc hại biến mất khỏi các trình soạn thảo mã," Idan Dardikman cho biết trong một báo cáo kỹ thuật. "Kẻ tấn công đã sử dụng Unicode variation selectors – các ký tự đặc biệt là một phần của đặc tả Unicode nhưng không tạo ra bất kỳ đầu ra hình ảnh nào."

Mục tiêu cuối cùng của cuộc tấn công là thu thập thông tin xác thực (credentials) của npm, Open VSX, GitHub và Git, rút tiền từ 49 tiện ích mở rộng ví tiền điện tử khác nhau, triển khai các máy chủ proxy SOCKS để biến máy tính của nhà phát triển thành kênh dẫn cho các hoạt động tội phạm, cài đặt các máy chủ VNC ẩn (HVNC) để truy cập từ xa, và vũ khí hóa các thông tin xác thực bị đánh cắp để thỏa hiệp các gói và tiện ích mở rộng bổ sung nhằm lây lan rộng hơn.

Các tiện ích mở rộng bị lây nhiễm

Tên của các tiện ích mở rộng bị lây nhiễm, trong đó có 13 trên Open VSX và một trên Microsoft Extension Marketplace, được liệt kê dưới đây. Các tiện ích mở rộng này đã được tải xuống khoảng 35.800 lần. Làn sóng lây nhiễm đầu tiên diễn ra vào ngày 17 tháng 10 năm 2025. Hiện vẫn chưa rõ làm thế nào các tiện ích mở rộng này bị chiếm quyền kiểm soát (hijacked).

  • codejoy.codejoy-vscode-extension 1.8.3 và 1.8.4
  • l-igh-t.vscode-theme-seti-folder 1.2.3
  • kleinesfilmroellchen.serenity-dsl-syntaxhighlight 0.3.2
  • JScearcy.rust-doc-viewer 4.2.1
  • SIRILMP.dark-theme-sm 3.11.4
  • CodeInKlingon.git-worktree-menu 1.0.9 và 1.0.91
  • ginfuru.better-nunjucks 0.3.2
  • ellacrity.recoil 0.7.4
  • grrrck.positron-plus-1-e 0.0.71
  • jeronimoekerdt.color-picker-universal 2.8.91
  • srcery-colors.srcery-colors 0.3.9
  • sissel.shopify-liquid 4.0.1
  • TretinV3.forts-api-extention 0.3.1
  • cline-ai-main.cline-ai-agent 3.1.3 (Microsoft Extension Marketplace)

Mã độc hại được che giấu bên trong các tiện ích mở rộng được thiết kế để tìm kiếm các transactions liên quan đến một ví tiền điện tử do kẻ tấn công kiểm soát trên blockchain Solana, và nếu tìm thấy, nó sẽ tiếp tục trích xuất một chuỗi được mã hóa Base64 từ trường memo giải mã thành máy chủ C2 ("217.69.3[.]218" hoặc "199.247.10[.]166") được sử dụng để lấy payload giai đoạn tiếp theo.

Payload là một trình đánh cắp thông tin (information stealer) thu thập thông tin xác thực (credentials), token xác thực (authentication tokens) và dữ liệu ví tiền điện tử, đồng thời liên hệ với một sự kiện Google Calendar để phân tích cú pháp một chuỗi được mã hóa Base64 khác và liên hệ với cùng máy chủ đó để lấy một payload có tên mã Zombi. Dữ liệu được exfiltrated đến một endpoint từ xa ("140.82.52[.]31:80") do tác nhân đe dọa quản lý.

Được viết bằng JavaScript, mô-đun Zombi về cơ bản biến một lây nhiễm GlassWorm thành một sự thỏa hiệp hoàn chỉnh bằng cách thả một SOCKS proxy, các mô-đun WebRTC để giao tiếp peer-to-peer, Distributed Hash Table (DHT) của BitTorrent để phân phối lệnh phi tập trung, và HVNC để kiểm soát từ xa.

Vấn đề trở nên phức tạp hơn bởi thực tế là các tiện ích mở rộng của VS Code được cấu hình để tự động cập nhật (auto-update), cho phép các tác nhân đe dọa đẩy mã độc hại một cách tự động mà không cần bất kỳ tương tác nào của người dùng.

"Đây không phải là một cuộc tấn công chuỗi cung ứng (supply chain attack) đơn lẻ," Dardikman nói. "Đó là một worm được thiết kế để lây lan khắp hệ sinh thái nhà phát triển như cháy rừng."

"Những kẻ tấn công đã tìm ra cách để tạo ra phần mềm độc hại chuỗi cung ứng (supply chain malware) tự duy trì. Chúng không chỉ còn thỏa hiệp các gói riêng lẻ nữa – chúng đang xây dựng các worm có thể tự động lây lan qua toàn bộ hệ sinh thái phát triển phần mềm."

Sự phát triển này diễn ra khi việc sử dụng blockchain để dàn xếp các payload độc hại đã chứng kiến sự gia tăng do tính ẩn danh và linh hoạt của nó, thậm chí cả các tác nhân đe dọa từ Triều Tiên cũng tận dụng kỹ thuật này để dàn dựng các chiến dịch gián điệp và có động cơ tài chính của họ.