{
 "public_id": "AIR-2025-0150",
 "incident_id": "2025-10-glassworm-openvsx",
 "date_disclosed": "2025-10-18",
 "date_occurred": "2025-10-17",
 "title": "GlassWorm: self-propagating VS Code / OpenVSX extension worm hidden in invisible Unicode with Solana-based C2",
 "class": "in_the_wild",
 "attack_surface": "skill_plugin",
 "initial_vector": "stolen_publisher_credentials_then_malicious_extension_update",
 "agent_capability_abused": [
  "editor_extension_privileges",
  "extension_code_execution",
  "credential_access"
 ],
 "target_product": "OpenVSX and Microsoft VS Code Marketplace extensions (e.g. CodeJoy)",
 "target_vendor": "Eclipse Foundation (OpenVSX) / Microsoft",
 "autonomy_level": "assistant",
 "impact_realized": true,
 "impact_type": [
  "credential_theft",
  "crypto_theft",
  "persistence",
  "remote_control",
  "supply_chain_compromise",
  "financial_theft"
 ],
 "blast_radius": "15 extensions identified across both marketplaces; ~35,800 installations",
 "cve": [],
 "taxonomy": {
  "owasp_asi": [
   "ASI05",
   "ASI04",
   "ASI03",
   "ASI08"
  ],
  "mitre_atlas": [
   "AML.T0010"
  ],
  "labels": [
   "worm",
   "invisible_unicode",
   "blockchain_c2",
   "ide_extension",
   "credential_theft",
   "variation_selectors",
   "self_propagating_worm",
   "solana_c2",
   "developer_tooling_supply_chain",
   "crypto_wallet_drainer"
  ]
 },
 "defense_present": "marketplace review and human code review",
 "defense_bypassed": true,
 "fix_shipped": "extensions removed in waves; further waves observed later",
 "primary_sources": [
  "https://www.koi.ai/blog/glassworm-first-self-propagating-worm-using-invisible-code-hits-openvsx-marketplace",
  "https://www.truesec.com/hub/blog/glassworm-self-propagating-vscode-extension"
 ],
 "verified_quote": "The malware is invisible. Not obfuscated. Not hidden in a minified file. Actually invisible to the human eye.",
 "confidence": "high",
 "notes": "Koi Security. Uses Unicode variation selectors that render as nothing in editors but execute in JavaScript. Steals npm, GitHub, OpenVSX and Git credentials and uses them to auto-infect further packages, hence self-propagating. Targets 49 crypto wallet extensions, deploys a SOCKS proxy and hidden VNC. C2 reads base64 payload URLs from Solana transaction memos, with a Google Calendar event and 217.69.3.218 as fallbacks. BORDERLINE FOR THIS CORPUS: it is the developer-extension supply chain that AI coding agents run inside, but the worm itself is not agent-specific. Also reported as: 'GlassWorm: self-propagating VS Code / OpenVSX extension worm hidden in invisible Unicode'.",
 "risk_category": "security_fraud",
 "risk_secondary": [],
 "risk_subcategory": "Prompt Injection",
 "risk_sub_secondary": [
  "Supply Chain Compromise",
  "Credential & Secret Theft",
  "Remote Code Execution & Sandbox Escape",
  "Persistence & Covert C2",
  "Multi-agent contagion"
 ],
 "ai_entity": "generative",
 "agency": "ai_as_target",
 "agency_debatable": true,
 "agency_reason": "a conventional extension worm stealing credentials in the AI tooling ecosystem",
 "vector_family": "malicious_component",
 "vector_detail": "stolen_publisher_credentials_then_malicious_extension_update",
 "guardrail_kind": [
  "unknown"
 ],
 "guardrail_outcome": "silent",
 "xrefs": {
  "aiid": [],
  "atlas": [
   "AML.T0010"
  ],
  "cve": [],
  "ghsa": []
 },
 "primary_asi": "ASI05",
 "agent_framework": "unknown",
 "model_provider": "microsoft",
 "model_name": "",
 "detection_mechanism": "external_researcher",
 "tool_access": "unknown",
 "financial_loss_band": "unknown",
 "eai_category": "credential_theft",
 "eai_domain": "access_control_and_permissions",
 "eai_secondary": [
  "privilege_escalation",
  "supply_chain_vulnerabilities"
 ],
 "eai_reason": "impact rule: credential_theft",
 "asi_curated": [
  "ASI05"
 ],
 "asi_scope": "in_scope",
 "asi_provenance": "curated_plus_rule",
 "asi_reason": "curated: ASI05 | added ASI04 (vector_family=malicious_component), ASI03 (eai_category=credential_theft), ASI08 (signal=cascade)",
 "submitted_by": "EAI Internal"
}