Krytyczne ryzyko łańcucha dostaw w marketplace’ach rozszerzeń VS Code: co odkrył Wiz i jak się zabezpieczyć - Security Bez Tabu

Krytyczne ryzyko łańcucha dostaw w marketplace’ach rozszerzeń VS Code: co odkrył Wiz i jak się zabezpieczyć

Wprowadzenie do problemu / definicja luki

Zespół Wiz Research ujawnił 15 października 2025 r. systemowy problem bezpieczeństwa w ekosystemie rozszerzeń VS Code: setki kluczy i tokenów dostępowych zostały nieumyślnie spakowane w paczki rozszerzeń i opublikowane w Visual Studio Code Marketplace oraz Open VSX. W ponad stu przypadkach były to tokeny umożliwiające… aktualizację samego rozszerzenia — a ponieważ VS Code domyślnie autoaktualizuje rozszerzenia, przejęcie takiego tokenu pozwalałoby rozesłać złośliwą aktualizację do całej bazy instalacji danego rozszerzenia.

W skrócie

  • Wiz znalazł 550+ ważnych sekretów w 500+ rozszerzeniach od setek wydawców; w tym tokeny Azure DevOps (VS Marketplace) i Access Tokens Open VSX. Łącznie dotknięta baza instalacji to ponad 85 tys. (VS Marketplace) i 100 tys. (Open VSX).
  • Po zgłoszeniu przez Wiz, Microsoft włączył skanowanie sekretów i blokowanie publikacji rozszerzeń zawierających wykryte klucze; skanowanie objęło też istniejące rozszerzenia.
  • Open VSX wprowadził prefiks tokenu („ovsxp_”) ułatwiający wykrywanie wycieków przez narzędzia skanujące.

Kontekst / historia / powiązania

Ryzyko łańcucha dostaw w IDE narasta od lat: rozszerzenia mają dostęp do środowiska dewelopera i mogą wykonywać kod. Microsoft dokumentował mechanizmy kontroli i „trust” w runtime rozszerzeń, ale tajne klucze w paczkach to inny wektor — działa poza samym silnikiem uprawnień: atak następuje na etapie publikacji/aktualizacji. Dlatego Microsoft zapowiedział i wdrożył „Secret Detection for Extensions” w Marketplace, a dodatkowo opisał szerszy plan podniesienia zaufania do ekosystemu.

Analiza techniczna / szczegóły luki

Wiz rozpakowywał paczki .vsix (to zwykłe archiwa ZIP) i znajdował w nich m.in.:

  • Dotfiles i pliki konfiguracyjne (np. .env, config.json, mcp.json, .cursorrules) zawierające klucze;
  • Twardo zakodowane sekrety w kodzie/package.json/README;
  • Tokeny wydawców:
    • Azure DevOps PAT (dla publikacji do VS Marketplace),
    • Open VSX Access Tokens (dla Open VSX).

Najgroźniejsze były tokeny publikacyjne — przejęcie ich pozwalałoby wypchnąć złośliwą wersję do całej bazy odbiorców danego rozszerzenia (przy włączonym auto-update). Wiz potwierdził 100+ ważnych PAT-ów VS Marketplace (ok. 85 tys. instalacji) oraz 30+ tokenów Open VSX (ok. 100 tys. instalacji).

Praktyczne konsekwencje / ryzyko

  • Masowa dystrybucja malware przez zaufany kanał aktualizacji rozszerzeń.
  • Ukierunkowane ataki na firmy korzystające z wewnętrznych/„vendor-specific” rozszerzeń opublikowanych publicznie „dla wygody”.
  • „Fałszywe poczucie bezpieczeństwa” przy motywie/tematach (themes) — choć zwykle nie zawierają kodu, nic nie blokuje dołączenia złośliwych payloadów do takiej paczki.

Rekomendacje operacyjne / co zrobić teraz

Dla użytkowników i zespołów developerskich

  1. Minimalizacja rozszerzeń – instaluj tylko niezbędne; oceń reputację wydawcy, historię wersji i liczbę instalacji.
  2. Zarządzanie autoaktualizacją – rozważ kontrolowane okna aktualizacji i obserwację zmian uprawnień/rozmiaru paczki; w środowiskach korporacyjnych wdrażaj aktualizacje etapowo.
  3. Inwentaryzacja i „allowlista” rozszerzeń (VS Code wspiera centralne polityki).

Dla wydawców rozszerzeń

  1. CI gate na sekrety: uruchamiaj skanery sekretów (np. GitHub Advanced Secret Scanning/partner program) i blokuj build/publikację przy wykryciu.
  2. Higiena repo/paczki: usuń .env i inne dotfiles z artefaktów (.vscodeignore / konfiguracja vsce), rotuj i skracaj TTL dla tokenów.
  3. Migracja tokenów: używaj tokenów z identyfikowalną strukturą/prefiksem (np. ovsxp_ w Open VSX) – to zwiększa skuteczność ochrony.

Dla operatorów platform

  1. Blokowanie publikacji z sekretami (pre-publish scanning) i skan „retro” istniejących rozszerzeń. Microsoft ogłosił i włączył tryb blocking w VS Marketplace.
  2. Standardyzacja sekretów (prefiksy, checksumy, CASK) oraz krótkie TTL.
  3. Transparentność i roadmapa bezpieczeństwa — publikowanie postępów i zasad (jak w aktualizacji Microsoft z czerwca 2025).

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

Ta kampania nie polegała głównie na publikacji ewidentnie złośliwych rozszerzeń, ale na wyciekach sekretów wydawców, co czyni wektor wyjątkowo niebezpiecznym: atakujący może podszyć się pod legalnego wydawcę i wykorzystać auto-update. To odróżnia sprawę od „klasycznych” kampanii złośliwych pluginów, a reakcje platform (blokowanie publikacji, skan istniejących paczek, prefiksy tokenów) są tu kluczowe.

Podsumowanie / kluczowe wnioski

  • Łańcuch dostaw IDE to realny wektor ataku: sekret w paczce rozszerzenia = potencjał RCE przez zaufaną aktualizację.
  • Reakcja platform (blokowanie publikacji, retro-skan, prefiksy tokenów) znacząco zmniejsza ryzyko, ale higiena po stronie wydawców i zespołów pozostaje niezbędna.
  • Organizacje powinny wdrożyć allowlistę, inwentaryzację, kontrolowane aktualizacje oraz policyjne skanowanie sekretów w CI/CD.

Źródła / bibliografia

  1. Wiz Research: “Dismantling a Critical Supply Chain Risk in VSCode Extension Marketplaces” (15 października 2025). (wiz.io)
  2. GitHub (Microsoft VS Marketplace): „Upcoming Security Enhancement: Secret Detection for Extensions” + ogłoszenie trybu blocking. (GitHub)
  3. Microsoft DevBlogs: „Security and Trust in Visual Studio Marketplace” (11 czerwca 2025). (Microsoft for Developers)
  4. Open VSX (Eclipse): dokumentacja prefiksu tokenów ovsx.token-prefix. (GitHub)
  5. VS Code Docs: „Extension runtime security” (sekcja o skanowaniu sekretów i blokowaniu publikacji). (Visual Studio Code)