MaliciousCorgi: bösartige VS-Code-AI-Extensions exfiltrieren Quellcode aus Entwickler-Workspaces an externe Server
Blog

MaliciousCorgi: VS-Code „AI“-Extensions stehlen Quellcode – was Unternehmen jetzt prüfen müssen

Zwei VS-Code AI-Extensions mit ~1,5 Mio. Installationen exfiltrieren Quellcode an Server in China. So prüfen Sie Betroffenheit und setzen Sofortmaßnahmen um.

Mika Schmidt, IT Security Experte

Mika Schmidt

IT Security Experte

Zwei scheinbar legitime AI-Coding-Extensions für Visual Studio Code wurden als Spionage-Tool identifiziert: Sie funktionieren wie beworben, senden aber geöffnete Dateien und Code-Änderungen im Hintergrund an externe Server. Für Unternehmen ist das kritisch, weil Entwickler-Workspaces oft Secrets, interne Repos und Produkt-Quellcode enthalten.

Die Kampagne wird als MaliciousCorgi beschrieben und betrifft u. a. diese Extension-IDs: whensunset.chatgpt-china und zhukunpeng.chat-moss.

TL;DR – die wichtigsten Schritte

  1. 1

    Betroffenheit prüfen

    Installierte VS-Code-Extensions inventarisieren.

  2. 2

    Sofortmaßnahmen

    Verdächtige Extensions deinstallieren, Secrets rotieren, Logs prüfen.

  3. 3

    Containment

    Egress/DNS zu verdächtigen Zielen blocken oder monitoren, DLP/Proxy-Rules ergänzen.

  4. 4

    Prävention

    Extension-Allowlist und Freigabeprozess (Enterprise-Policy oder Private Marketplace).

Ausgangslage

Developer-Tools sind Teil der Supply Chain: Eine Extension hat Zugriff auf Arbeitsbereiche, Dateien und teils indirekt auch auf Tokens (z. B. in lokalen Configs). Der VS-Code Marketplace hat Schutzmechanismen, aber diese ersetzen keine Unternehmens-Policies.

Bin ich betroffen?

Prüfen Sie auf Entwickler-Maschinen (oder via Endpoint-Management), ob eine der folgenden Extensions installiert ist:

Betroffene Extensions

Falls eine dieser Extensions installiert war, betrachten Sie Quellcode und ggf. enthaltene Secrets als potenziell kompromittiert.
Name (Marketplace)Extension IDRisiko
ChatGPT - 中文版whensunset.chatgpt-chinaExfiltration geöffneter Dateien/Edits
ChatGPT - ChatMoss(CodeMoss)zhukunpeng.chat-mossExfiltration + Remote-Trigger für Workspace-Dateien

Sofortmaßnahmen (heute)

Sofortmaßnahmen

  1. 1

    Deinstallieren & VS Code neu starten

    Entfernen Sie die Extensions und prüfen Sie, ob weitere „AI“-Forks vom gleichen Publisher installiert sind.

  2. 2

    Secrets rotieren

    API Keys, PATs, Cloud-Creds, Signing Keys – insbesondere, wenn sie jemals im Repo oder Workspace sichtbar waren (auch in .env, CI-Files, IaC).

  3. 3

    Proxy/DNS/EDR prüfen

    Suchen Sie nach Auffälligkeiten im Egress (neue Domains, ungewöhnliche Upload-Spikes aus Developer-Netzen).

  4. 4

    Scope klären

    Welche Repos und Verzeichnisse wurden geöffnet? Welche Branches/PRs enthalten sensitive Informationen?

Quick Check per CLI (PowerShell, Windows)

Ein One-Liner für die schnelle Selbstprüfung in der PowerShell. Wird eine Zeile ausgegeben, ist die entsprechende Extension installiert.

powershell
code --list-extensions | ? { $_ -in "whensunset.chatgpt-china","zhukunpeng.chat-moss" }
Quick Check: prüft, ob eine der betroffenen Extensions installiert ist.

Intune-ready Detection & Remediation Script

Für IT-Administratoren: Vollständiges PowerShell-Script für die Microsoft-Intune-Verteilung. Es prüft automatisiert, ob bekannte MaliciousCorgi-VS-Code-Extensions installiert sind, und kann optional automatisch deinstallieren. Das Script ist für Intune Proactive Remediations oder Detection Scripts optimiert.

powershell MaliciousCorgi-Check.ps1
<#
MaliciousCorgi – VS Code Extension Detection & Remediation (Intune-ready)

Exit-Codes (für Intune Detection):
  0 = nicht gefunden (Compliant)
  1 = gefunden (Non-Compliant, betroffen)
  2 = VS Code CLI fehlt (Not Applicable)

Für Intune Proactive Remediations:
  Detection Script: Prüft nur (kein -Uninstall)
  Remediation Script: Führt automatische Deinstallation durch (-Uninstall)

Verwendung in Intune:
  - Detection: Script ohne Parameter ausführen
  - Remediation: Script mit -Uninstall Parameter ausführen
#>

[CmdletBinding()]
param(
  [switch]$Uninstall,
  [string]$LogPath = "$env:TEMP\MaliciousCorgi-Check.log"
)

$Ext1 = "whensunset.chatgpt-china"
$Ext2 = "zhukunpeng.chat-moss"
$Targets = @($Ext1, $Ext2)

function Write-Log {
  param($Level, $Message)
  $Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
  $LogEntry = "[$Timestamp] [$Level] $Message"

  # Logging für Intune (kann in Intune-Logs eingesehen werden)
  Add-Content -Path $LogPath -Value $LogEntry -ErrorAction SilentlyContinue

  # Console-Output für manuelle Ausführung
  switch ($Level) {
    "INFO"  { Write-Host "[INFO]  $Message" }
    "OK"    { Write-Host "[OK]    $Message" }
    "ALERT" { Write-Host "[ALERT] $Message" }
    "ERROR" { Write-Host "[ERROR] $Message" }
    default { Write-Host "[INFO]  $Message" }
  }
}

# Prüfen, ob VS Code CLI verfügbar ist
if (-not (Get-Command code -ErrorAction SilentlyContinue)) {
  Write-Log "ERROR" "VS Code CLI ('code') nicht gefunden. Script nicht anwendbar."
  exit 2
}

Write-Log "INFO" "Starte MaliciousCorgi Extension Check..."
$Installed = code --list-extensions 2>$null

if ($null -eq $Installed) {
  Write-Log "ERROR" "Konnte VS Code Extensions nicht auflisten."
  exit 2
}

$Found = @()

foreach ($Ext in $Targets) {
  if ($Installed -contains $Ext) {
    Write-Log "ALERT" "Gefunden: $Ext"
    $Found += $Ext
  } else {
    Write-Log "OK" "Nicht gefunden: $Ext"
  }
}

if ($Found.Count -gt 0) {
  Write-Log "ALERT" "Betroffenheit bestätigt: $($Found.Count) Extension(s) gefunden"
  Write-Log "INFO" "Empfohlene Sofortmaßnahmen: Secrets rotieren, Egress-Logs prüfen, Scope klären"

  if ($Uninstall) {
    Write-Log "INFO" "Starte automatische Deinstallation..."
    foreach ($Ext in $Found) {
      try {
        code --uninstall-extension $Ext 2>&1 | Out-Null
        Write-Log "OK" "Deinstalliert: $Ext"
      } catch {
        Write-Log "ERROR" "Fehler beim Deinstallieren von $Ext : $_"
      }
    }
    Write-Log "INFO" "Deinstallation abgeschlossen. VS Code sollte neu gestartet werden."
  }

  exit 1
}

Write-Log "INFO" "Keine der bekannten MaliciousCorgi-Extensions installiert. System ist compliant."
exit 0
Intune-Konfiguration: Exit-Code 0 = Compliant · 1 = Non-Compliant (betroffen) · 2 = Not Applicable (VS Code CLI fehlt). Log unter $env:TEMP\MaliciousCorgi-Check.log.

Prävention: so härten Sie VS Code im Unternehmen

Für Unternehmen ist das Ziel nicht „keine Extensions”, sondern kontrollierte Extensions: Allowlist statt Wildwuchs. Microsoft unterstützt zentrale Policies und Private-Marketplace- bzw. Rehosting-Modelle für geprüfte VSIX-Pakete.

Kontrollen für VS-Code-Extensions

Pragmatische Kontrollen, um Marketplace-Installationen als Supply-Chain-Risiko zu beherrschen.
KontrolleEmpfehlung (pragmatisch)Wirkung
Extension-AllowlistNur definierte Publisher/Extensions erlauben, alles andere blockenReduziert Marketplace-Risiko massiv
Private Marketplace / RehostingÖffentliche Extensions intern spiegeln und prüfen (VSIX)Bessere Kontrolle über Updates/Versionen
Workspace TrustUnbekannte Workspaces nur im eingeschränkten ModusWeniger Risiko durch fremden Code

Warum das (auch) Build-Systeme betrifft: PackageGate

Parallel zeigt die Diskussion um PackageGate, dass selbst etablierte Schutzrezepte nicht immer die erwartete Wirkung entfalten. Für JS-Stacks heißt das: Policies, Scanning und kontrollierte Installationspfade kombinieren.

Beispiel: Für pnpm wurde ein Bypass als CVE-2025-69264 dokumentiert; betroffen sind Versionen 10.0.0 bis 10.25 (laut Advisory), Fix via Update.

FAQ

Häufige Fragen aus der Praxis

Bin ich betroffen, wenn ich VS Code nutze?
Betroffen sind Sie vor allem, wenn eine der Extensions „ChatGPT - 中文版“ (whensunset.chatgpt-china) oder „ChatGPT - ChatMoss(CodeMoss)“ (zhukunpeng.chat-moss) installiert ist. Dann sollten Sie von potenzieller Exfiltration geöffneter Dateien und Änderungen ausgehen.
Muss ich von Datenabfluss ausgehen?
Wenn die betroffenen Extensions installiert waren: ja – zumindest für Workspaces und Dateien, die geöffnet oder bearbeitet wurden. Deshalb ist die Rotation von Secrets in der Praxis fast immer der erste sinnvolle Schritt.
Welche Sofortmaßnahmen sind sinnvoll?
Extensions deinstallieren, Tokens und Secrets rotieren, verdächtige Netzwerkziele blocken oder monitoren und eine Allowlist-Strategie für Extensions einführen. Für Teams empfiehlt sich zusätzlich ein privater Marketplace bzw. das Re-Hosting geprüfter Extensions.
Reicht „Marketplace schützt uns“ als Argument?
Der Marketplace hat Schutzmechanismen, aber Unternehmen brauchen zusätzlich Governance: Allowlisting, Freigaben, Endpoint-Audits und ggf. einen privaten Marketplace für geprüfte Versionen.
Wie reduziere ich das Risiko langfristig?
Erzwingen Sie in VS Code eine Extension-Allowlist, auditieren Sie Entwickler-Endpunkte, nutzen Sie Workspace Trust konsequent und behandeln Sie Marketplace-Installationen als Supply-Chain-Risiko mit Freigabeprozess.

Themen

VS CodeSupply Chain SecurityDeveloper SecurityData ExfiltrationSecure SDLCIT-Security

Quellen

  1. The Hacker News: Malicious VS Code AI Extensions with 1.5 Million Installs Steal Developer Source CodeThe Hacker News, 26.01.2026
  2. Koi Security: MaliciousCorgi – AI Extensions leaking code from 1.5M developersKoi Security Research, 22.01.2026
  3. Microsoft VS Code Docs: Extension runtime securityMicrosoft VS Code Docs, aktualisiert 08.01.2026
  4. Microsoft VS Code Docs: Manage extensions in enterprise environmentsMicrosoft VS Code Docs, aktualisiert 08.01.2026
  5. GitHub Advisory: pnpm v10+ Git Dependency Script Execution Bypass (CVE-2025-69264)GitHub Advisory Database, 07.01.2026
  6. NVD: CVE-2025-69264 (pnpm 10.0.0–10.25)NIST NVD, 07.01.2026
  7. Koi Security: PackageGate – 6 Zero-Days in JS Package Managers But NPM Won’t ActKoi Security Research, 26.01.2026