
GitHub zhakowany przez rozszerzenie VS Code (maj 2026): 60-minutowy plan awaryjny, który każdy deweloper powinien wdrożyć jeszcze dziś
20 maja 2026 r. GitHub potwierdził, że około 3800 jego wewnętrznych repozytoriów z kodem źródłowym zostało wykradzionych za pośrednictwem złośliwego rozszerzenia VS Code zainstalowanego na stacji roboczej pracownika. Jeśli używałeś tokena PAT GitHub lub tokena npm wewnątrz VS Code w ciągu ostatnich 14 dni, następne 60 minut ma kluczowe znaczenie. Oto plan działania: co dokładnie się stało, czy jesteś zagrożony i jakie poświadczenia należy rotować w pierwszej kolejności.
Kluczowe wnioski
- Co się stało: Infrastruktura produkcyjna GitHub.com nie została naruszona. Pracownik zainstalował zatrute rozszerzenie VS Code (najprawdopodobniej Nx Console v18.95.0), które wykradło tokeny PAT i spowodowało wyciek ~3800 wewnętrznych repozytoriów.
- Dane klientów: Nie zostały naruszone. Skompromitowane dane to wewnętrzny kod źródłowy GitHuba, a nie kod ani konta klientów.
- Kto jest zagrożony: Każdy deweloper, który zainstalował rozszerzenie VS Code między około 18 maja, godz. 12:36 UTC a 12:47 UTC (okno 11 minut), lub każda osoba używająca długoterminowych tokenów PAT GitHub z poziomu VS Code.
- Co zrobić teraz: Najpierw rotuj tokeny PAT GitHub, potem tokeny npm, a następnie klucze AWS/chmurowe. Pełny plan działania znajdziesz w sekcji „Co muszą zrobić deweloperzy” poniżej.
TL;DR: 6 rzeczy do zrobienia w ciągu najbliższej godziny
Najszybszym sposobem na ograniczenie zasięgu szkód wynikających z historii github hacked vscode extension jest rotacja poświadczeń, do których może dotrzeć zatrute rozszerzenie, audyt tego, co jest zainstalowane na Twoim laptopie, oraz sprawdzenie logów organizacji GitHub pod kątem okna czasowego 18–20 maja UTC. Sześć działań, uszeregowanych według wpływu, w kolejności.
- Unieważnij każdy osobisty token dostępu (PAT) GitHub utworzony lub używany w VS Code w ciągu ostatnich 30 dni.
- Rotuj tokeny npm za pomocą
npm token revokei wydaj je ponownie z uwierzytelnianiem dwuskładnikowym (2FA) oraz zaufanym publikowaniem (trusted publishing). - Przeskanuj swój laptop pod kątem wskaźników kompromitacji (IoC) z GHSA-c9j4-9m59-847w (ścieżki plików, procesy; polecenia poniżej).
- Zaudituj wynik
code --list-extensions --show-versionsi odinstaluj wszystko, czego nie możesz uzasadnić. - Zapinaj wersje rozszerzeń w
devcontainer.jsoni wymuszaj listę dozwolonych rozszerzeń na poziomie organizacji. - Sprawdź dziennik audytu swojej organizacji GitHub pod kątem nieznanych pushy do repozytoriów w okresie 18–20 maja UTC.
Jeśli masz czas tylko na dwie czynności, wykonaj #1 i #3. Reszta może poczekać godzinę.
Czy GitHub naprawdę został zhakowany? Wyjaśnijmy nagłówki
Nie, infrastruktura produkcyjna GitHub.com nie została naruszona 20 maja 2026 r. Skompromitowana została stacja robocza pojedynczego pracownika GitHuba po zainstalowaniu złośliwego rozszerzenia VS Code (najprawdopodobniej Nx Console v18.95.0). Atakujący, nazywający siebie TeamPCP (śledzony jako UNC6780), wykradł około 3800 wewnętrznych repozytoriów z kodem źródłowym GitHuba. Kod klientów, konta klientów oraz usługi produkcyjne GitHuba nie zostały naruszone.
Oto czystsza wersja tego, co się stało, a czego nie.
| Co się stało | Czego NIE było |
|---|---|
| Laptop pracownika został skompromitowany poprzez zatrute rozszerzenie VS Code | Naruszenie produkcji GitHub.com |
| Wykradziono ~3800 wewnętrznych repozytoriów z kodem źródłowym | Naruszenie repozytoriów lub kont klientów |
| Skradziono poświadczenia pracownika GitHuba z tego endpointu | Skradziono tokeny PAT klientów, tokeny npm lub granty OAuth z systemów GitHuba |
| TeamPCP zażądało okupu (według Tom's Hardware) | GitHub zapłacił (brak dowodów na płatność) |
Dlaczego to rozróżnienie jest ważne? Ponieważ wnioskiem nie jest „github hacked”. Wnioskiem jest to, że endpointy deweloperskie stały się obecnie miękkim podbrzuszem każdej organizacji inżynieryjnej. Każda tajemnica, którą posiada Twój zespół (tokeny PAT GitHub, tokeny npm, klucze AWS, sesje Vault, klucze dostawców AI), znajduje się na laptopie z niewielkim lub zerowym pokryciem przez systemy EDR (wykrywanie i reagowanie na endpointach). Pojedyncze zatrute rozszerzenie działające w Twoim IDE dziedziczy dostęp do wszystkiego.
Rzecznik GitHuba, cytowany w Bleeping Computer, potwierdził ramy incydentu dotyczącego endpointu pracownika oraz stwierdzenie „brak danych klientów”. Help Net Security dodało informację o przypisaniu ataku do grupy TeamPCP. Techniczny łańcuch dowodowy dotyczący rozszerzenia znajduje się w poradzie bezpieczeństwa GHSA-c9j4-9m59-847w.
GitHub.com nie został naruszony. Zhakowano pracownika GitHuba. Miej to na uwadze, czytając dalej.
Co naprawdę się stało: Oś czasu naruszenia z maja 2026 r.
Historia github breach 2026 rozwinęła się w czterech etapach na przestrzeni około 48 godzin. Zatrute rozszerzenie zostało opublikowane 18 maja o 12:36 UTC, usunięte 11 minut później, wykryte przez GitHuba następnego dnia, a publicznie ujawnione 20 maja. Zwięzła oś czasu ze źródłami:
| Czas (UTC) | Wydarzenie | Źródło |
|---|---|---|
| 18 maja, 12:36 | Nx Console v18.95.0 opublikowane w OpenVSX / Visual Studio Marketplace (najprawdopodobniej) | StepSecurity / GHSA-c9j4-9m59-847w |
| 18 maja, 12:47 | Usunięcie złośliwej wersji, okno 11 minut | StepSecurity |
| 19 maja | GitHub wykrywa kompromitację endpointu pracownika; izoluje incydent | Rzecznik GitHuba via Bleeping Computer |
| 20 maja | Publiczne ujawnienie; TeamPCP / UNC6780 publicznie przyznaje się do ataku | Help Net Security, Hackread |
To 11-minutowe okno to najdziwniejszy szczegół. Sugeruje, że atakujący rotował rozszerzenia, aby ominąć wykrywanie przez marketplace, co jest tym samym wzorcem, który Koi Security udokumentował w przypadku robaka GlassWorm w OpenVSX w październiku 2025 r. TeamPCP / UNC6780 wcześniej zgłaszał kompilacje z 2026 r. przeciwko Trivy, KICS, LiteLLM, TanStack i MistralAI. Ta sama grupa, ten sam plan działania, inne cele.
W ubiegłym miesiącu chodziło o zmienne środowiskowe Vercel. Dziś o repozytoria GitHuba. Wzorzec, który obserwujemy od 9 miesięcy, stale przesuwa zasięg szkód na zewnątrz. Zobacz naszą analizę reakcji na naruszenie Vercel w kontekście pokrewnego incydentu.
Rozszerzenie prawdopodobnie winne: Nx Console v18.95.0 (i dlaczego GitHub nie potwierdza)
GitHub formalnie nie nazwał rozszerzenia zaangażowanego w kompromitację endpointu pracownika. Dowody forenzyjne silnie wskazują na Nx Console v18.95.0, ale pozostaje to wysoce prawdopodobne, a nie potwierdzone. Zaktualizujemy ten wpis, jeśli GitHub publicznie wskaże inne rozszerzenie. Traktuj resztę tej sekcji jako najlepszą dostępną atrybucję, a nie ustalony fakt.
Cztery poszlaki łączą Nx Console z ujawnieniem przez GitHuba:
- Zbieżność czasowa: Okno advisory GHSA-c9j4-9m59-847w (18 maja, 12:36–12:47 UTC) mieści się w oknie kompromitacji endpointu pracownika GitHuba zgodnie z własnym ujawnieniem GitHuba.
- Pokrycie wskaźników IoC: Opublikowana przez StepSecurity analiza payloadu Nx Console (ścieżki plików, procesy takie jak
__DAEMONIZED, punkty końcowe sieciowe) pasuje do artefaktów widocznych na skompromitowanym endpoincie zgodnie z raportem Wiz. - Wzorzec atrybucji TeamPCP: TeamPCP / UNC6780 działa w przestrzeni łańcucha dostaw VS Code (Trivy, KICS, LiteLLM, TanStack, MistralAI w 2026 r.) z konsekwentną strukturą payloadu.
- 11-minutowe okno usunięcia: Charakterystyczne dla ataków na łańcuch dostaw, gdzie atakujący kontroluje moment publikacji, ale marketplace szybko go wykrywa.
Jeśli nie zainstalowałeś Nx Console, nadal nie jesteś bezpieczny. Szerszy wzorzec ataku (procesy __DAEMONIZED, nadużywanie IMDS, wykradanie ~/.claude/settings.json) uogólnia się na każde zatrute rozszerzenie. Triagaż w następnej sekcji ma zastosowanie niezależnie od tego, które rozszerzenie podejrzewasz.

Czy jesteś zagrożony? 5-minutowy triaż
Są trzy szybkie testy. (1) Czy zainstalowałeś lub czy automatycznie zaktualizowało się jakieś rozszerzenie VS Code między 18 maja, godz. 12:36 a 12:47 UTC? (2) Czy na Twoim laptopie znajdują się obecnie jakieś pliki IoC z GHSA-c9j4-9m59-847w? (3) Czy używałeś tokena PAT GitHub wewnątrz VS Code w ciągu ostatnich 14 dni? Wykonaj wszystkie trzy w mniej niż pięć minut.
Test 1, Audyt rozszerzeń
# List all installed extensions with versions
code --list-extensions --show-versions
# Specifically check for Nx Console v18.95.0
code --list-extensions --show-versions | grep -i "nrwl.angular-console\|nx-console"Wszystko, co zaktualizowało się automatycznie między 17 a 18 maja, zasługuje na drugie spojrzenie. Jeśli widzisz Nx Console dokładnie w wersji 18.95.0, jest to prawdopodobne dopasowanie. Wersja z poprawką to 18.100.0. Albo odinstaluj, albo przejdź bezpośrednio do planu działania poniżej.
Test 2, Skanowanie IoC
# Check for the daemonized credential-harvest process artifacts (GHSA-c9j4-9m59-847w)
ps aux | grep -i "__DAEMONIZED" | grep -v grep
ls -la ~/.local/share/kitty/ 2>/dev/null
find ~ -name "*.daemonized*" 2>/dev/null
# IMDS abuse indicator (AWS credential harvest)
# Check shell history for unexpected curl to 169.254.169.254
grep -E "169\.254\.169\.254|metadata\.google\.internal" ~/.zsh_history ~/.bash_history 2>/dev/nullCzysta maszyna powinna nie zwrócić nic dla grepowania __DAEMONIZED, brak plików .daemonized i brak trafień IMDS w historii shell. Jeśli którakolwiek z tych rzeczy wystąpi, załóż, że laptop jest skompromitowany i traktuj każde poświadczenie, którego dotknął w ciągu ostatnich 30 dni, jako spalone.
Test 3, Ekspozycja PAT
Jeśli używałeś tokena PAT GitHub (klasycznego lub fine-grained) w jakimkolwiek terminalu VS Code, zintegrowanym gicie lub dowolnym rozszerzeniu wywołującym API GitHuba w ciągu ostatnich 14 dni, załóż, że jest skompromitowany i przejdź do poniższego planu rotacji. Jest to zachowawcze domyślne założenie – nie można zweryfikować, „czy token był w pamięci, gdy rozszerzenie było aktywne”. Rotuj go.
Jeśli używasz Claude Code, lista IoC specyficznie zawiera ~/.claude/settings.json. Sprawdź nasz przewodnik po hookach Claude Code, aby dowiedzieć się, co jest przechowywane w tym pliku i które klucze rotować w pierwszej kolejności.
Werdykt. Jeśli którykolwiek z tych trzech testów da wynik pozytywny, przestań czytać narrację. Przejdź bezpośrednio do planu działania w następnej sekcji. Następne 55 minut jest ważniejsze niż pośmiertna analiza.
Co muszą zrobić deweloperzy: 60-minutowy plan awaryjny
Rotuj poświadczenia w kolejności priorytetowej. Poziom 0 (następne 30 min): Tokeny PAT GitHub i tokeny npm. Poziom 1 (dzisiaj): Klucze AWS/chmurowe, 1Password / Vault, sekrety GitHub Actions. Poziom 2 (w tym tygodniu): SaaS stron trzecich, granty OAuth, klucze SSH. Poziom 3 (gdy będzie okazja): Klucze tylko do odczytu i publiczne. Każdy poziom odpowiada konkretnemu zmniejszeniu zasięgu szkód.

TERAZ: Jeśli myślisz, że zostałeś trafiony
Jeśli Twój triaż dał wynik pozytywny, wykonaj te trzy rzeczy w kolejności, zanim zrobisz cokolwiek innego.
- Zabij demona i odinstaluj podejrzane rozszerzenie:
# Kill the malicious payload (GHSA-c9j4-9m59-847w)
pkill -f __DAEMONIZED
pkill -f "nx-console.*18.95.0"
# Uninstall the suspect extension immediately
code --uninstall-extension nrwl.angular-console- Odłącz kabel sieciowy laptopa, jeśli masz jakiekolwiek dowody na aktywny wyciek. Brzmi ekstremalnie. Takie jest. Zrób to mimo wszystko. Możesz przeprowadzić dochodzenie offline.
- Zadzwoń do zespołu bezpieczeństwa lub napisz na kanale
#securityna Slacku przed uruchomieniem czegokolwiek innego. Jeśli działasz solo, przejdź do Poziomu 0 poniżej.
Poziom 0 (Następne 30 minut): GitHub + npm
Unieważnianie tokenów PAT GitHub przez CLI gh i interfejs webowy ustawień:
# Confirm what you're authenticated as
gh auth status
# List app installations the token has access to (helps inventory blast radius)
gh api -H "Accept: application/vnd.github+json" /user/installations
# The gh CLI cannot revoke classic PATs directly — use the web UI:
# https://github.com/settings/tokens
# Click "Revoke" on EVERY token. Do not selectively keep "the one that's probably fine."
# Re-issue with fine-grained PATs + ≤90-day expiration:
# https://github.com/settings/personal-access-tokens/new
# Scope one repo at a time, never the whole account.
# For org-owned PATs and installations:
gh api /orgs/{ORG}/installationsRotacja tokenów npm:
# List and revoke every npm token
npm token list
npm token revoke <token-id-1>
npm token revoke <token-id-2>
# Force 2FA on auth and writes
npm profile enable-2fa auth-and-writes
# For CI: migrate to OIDC trusted publishing — no more long-lived tokens
# Docs: https://docs.npmjs.com/trusted-publishersJeśli utrzymujesz publikowane pakiety, Twój token npm jest najbardziej niebezpiecznym poświadczeniem, jakie posiadasz. Rotuj go przed AWS.
Poziom 1 (Dzisiaj): Chmura + Sejfy + Sekrety CI
Klucze dostępu AWS są następne. Wskaźniki IoC pokazują nadużywanie IMDS, więc każdy użytkownik IAM, który miał kontakt ze skompromitowanym endpointem, jest podejrzany:
# List access keys for the current IAM user
aws iam list-access-keys --user-name $(aws sts get-caller-identity --query 'Arn' --output text | cut -d/ -f2)
# Deactivate the old key (don't delete yet — let workloads fail loudly first)
aws iam update-access-key --access-key-id AKIA... --status Inactive --user-name <user>
# Create a new key
aws iam create-access-key --user-name <user>
# Once deployed and verified, delete the old key
aws iam delete-access-key --access-key-id AKIA... --user-name <user>
# If any EC2 instance was using IMDSv1, force IMDSv2 immediately
aws ec2 modify-instance-metadata-options --instance-id i-... --http-tokens required1Password CLI: wyloguj się z każdego urządzenia (op signout --all), wygeneruj ponownie tokeny sesji i zaudituj ostatni dostęp do sejfu za pośrednictwem internetowego dziennika audytu 1Password pod kątem wszystkiego, co było uruchamiane ze skompromitowanego endpointu.
HashiCorp Vault: unieważnij swój token użytkownika (vault token revoke -self) i poproś administratora o wydanie nowego z krótszym TTL.
Sekrety GitHub Actions: jeśli którakolwiek rotowana poświadczenie znajduje się również w Actions, zaktualizuj je. Użyj gh secret set GITHUB_PAT --body <new-pat> dla każdego repozytorium lub interfejsu na poziomie organizacji dla sekretów org.
Klucze API Anthropic i OpenAI: Lista IoC GHSA-c9j4-9m59-847w specyficznie wskazuje ~/.claude/settings.json jako cel zbierania danych. Unieważnij i wydaj ponownie swój klucz API z konsoli Anthropic oraz każdy klucz OpenAI, który kiedykolwiek przechowywałeś w tym pliku.
Poziom 2 (W tym tygodniu): SSH + OAuth + Menedżery haseł
Klucze SSH zmieniają się wolniej, ale nadal są w zakresie. Rozszerzenie miało odczyt systemu plików w ~/.ssh/:
# Audit existing SSH keys (when were they generated?)
for key in ~/.ssh/id_*; do
if [ -f "$key" ]; then
echo "Key: $key"
stat -c '%y' "$key" 2>/dev/null || stat -f '%Sm' "$key"
fi
done
# Generate a new Ed25519 key
ssh-keygen -t ed25519 -C "rotated-$(date +%Y%m%d)" -f ~/.ssh/id_ed25519_new
# Upload public key to GitHub
gh ssh-key add ~/.ssh/id_ed25519_new.pub --title "rotated-$(date +%Y%m%d)"
# Delete the old key from GitHub via web UI, then verify SSH still works
ssh -T [email protected]Menedżer haseł w przeglądarce i systemowy keychain: rotuj każde hasło, które rozszerzenie mogło realistycznie zobaczyć poprzez schowek. Realistyczna ekspozycja to hasła skopiowane do schowka, gdy rozszerzenie było aktywne.
Poziom 3 (Gdy będzie okazja): Audyt + Weryfikacja
Zaudituj dziennik swojej organizacji GitHub pod kątem okna kompromitacji. Wymaga to uprawnień admina org:
# Pull push events for the May 18-20 window
gh api -X GET /orgs/{ORG}/audit-log \
--paginate \
-f phrase='action:repo.push created:2026-05-18..2026-05-20' | jq '.[] | {actor, created_at, repo}'
# Spot-check suspicious commits (unexpected authors, large diffs)
gh api -X GET /repos/{ORG}/{REPO}/commits \
-f since=2026-05-18T00:00:00Z \
-f until=2026-05-20T23:59:59Z | jq '.[] | {sha, author: .commit.author, message: .commit.message}'
# Refresh OAuth grants
gh auth refresh -s admin:org -s admin:public_keyJeśli dziennik audytu pokazuje pushy z okna kompromitacji, których nie wykonałeś, eskaluj sprawę do zespołu bezpieczeństwa i zachowaj JSON dziennika audytu. Nie próbuj „cofać” niczego w repozytorium. Najpierw zachowaj dowody.
Omówiliśmy tę samą logikę rotacji warstwowej w przypadku naruszenia zmiennych env Vercel w kwietniu: ten sam kształt, inna warstwa.
Framework audytu rozszerzeń w 5 pytaniach (Używaj go zawsze)
Przed zainstalowaniem lub zaufaniem dowolnemu rozszerzeniu VS Code, poddaj je pięciu testom: wiek domeny wydawcy, szybkość wersji, zdarzenia aktywacji w package.json, zakres uprawnień wobec oczekiwanego zachowania oraz audyt repozytorium open-source. Nx Console v18.95.0 oblałby Test #2: nagły skok wersji po stabilnym rytmie wydań to klasyczny sygnał ataku na łańcuch dostaw.
- Wiek domeny wydawcy. Czy domena wydawcy istnieje dłużej niż rok? Nowi wydawcy na nowo zarejestrowanych domenach niosą większe ryzyko. Sprawdź na stronie wydawcy w Visual Studio Marketplace lub przez
whoisdla domeny e-maila wydawcy. - Szybkość wersji. Czy historia wersji pokazuje normalne tempo (jedno wydanie co 1–4 tygodnie) czy nagły skok (trzy wydania w 24 godziny)? Nagła szybkość to sygnał. Nx Console v18.95.0 był anomalą szybkości.
- Zdarzenia aktywacji
package.json. Otwórz plik.vsix(to zip) i przeczytajactivationEvents. Rozszerzenia, które aktywują się na*(zawsze włączone), mają największą powierzchnię ataku. Preferuj rozszerzenia, które aktywują się dla konkretnego języka lub nazwy pliku. - Wymagane uprawnienia vs oczekiwane zachowanie. Czy rozszerzenie „motyw” żąda dostępu do sieci? Czy rozszerzenie „snippet” potrzebuje zapisu do systemu plików? Niedopasowania to czerwone flagi. Zweryfikuj z dokumentacją bezpieczeństwa runtime rozszerzeń Microsoft.
- Audyt repozytorium open-source. Czy źródło jest na GitHubie? Przeczytaj ostatnich pięć commitów pod kątem podejrzanych zmian: hooki post-install, zakodowane base64 bloby, wywołania sieciowe do nieznanych domen.
Rozszerzenie, które aktywuje się na * i żąda dostępu do sieci, funkcjonalnie jest zdalną powłoką z przyspawanym VS Code.
Ten sam framework audytu dotyczy serwerów MCP, następnej powierzchni łańcucha dostaw klasy rozszerzeń. Zobacz naszą analizę najlepszych serwerów MCP 2026, aby dowiedzieć się, którym ufamy i dlaczego.
Dlaczego to się ciągle dzieje: Fala ataków na łańcuch dostaw 2025–2026
Naruszenie GitHuba z 20 maja to jeden węzeł w 9-miesięcznym łuku: robak npm Shai-Hulud (wrzesień 2025), robak OpenVSX GlassWorm (październik–listopad 2025), Shai-Hulud 2.0 (listopad 2025, >25 000 dotkniętych repozytoriów), Mini Shai-Hulud (wczesny 2026), Nx Console (18 maja 2026), kompromitacja endpointu GitHub (20 maja 2026). Endpointy deweloperskie stały się nowym miękkim podbrzuszem.
- Wrzesień 2025, robak npm Shai-Hulud. Samo-rozprzestrzeniające się malware w popularnych pakietach npm. CISA wydała alert dotyczący powszechnej kompromitacji.
- Paź–Lis 2025, GlassWorm. Pierwszy samo-rozprzestrzeniający się robak celujący w rozszerzenia VS Code na OpenVSX. Ujawnienie Koi Security.
- Listopad 2025, Shai-Hulud 2.0. Wykradziono ponad 25 000 repozytoriów. Microsoft Security Blog opublikował wytyczne dotyczące containmentu.
- Wczesny 2026, Mini Shai-Hulud. Wariant TeamPCP. Mniejsze powtórki przeciwko Trivy, KICS, LiteLLM, TanStack i MistralAI.
- 18 maja 2026, Nx Console v18.95.0. Najprawdopodobniejszy wektor kompromitacji endpointu GitHuba.
- 20 maja 2026, ujawnienie przez GitHub. Wykradziono ~3800 wewnętrznych repozytoriów. Według serii forenzyjnej Shai-Hulud od Wiz, wzorzec nadużywania IMDS jest bezpośrednią ewolucją.
Wzorzec jest jasny: laptopy deweloperów przechowują każdą tajemnicę w organizacji (tokeny PAT GitHub, klucze AWS, tokeny vault, klucze dostawców AI) i mają bliskie zeru pokrycie przez EDR. Dopóki ta nierównowaga się nie odwróci, fala trwa.
Defensywna AI jest jedną częścią odpowiedzi. Omówiliśmy ten aspekt w naszej analizie jak AI zapobiega wyciekom danych wcześniej w tym roku.
Większa odpowiedź GitHuba: Zaufane publikowanie, FIDO 2FA, tokeny 90-dniowe
GitHub już przed 20 maja wdrażał cztery kontrole łańcucha dostaw: obowiązkowe 2FA dla wydawców npm, limit 90 dni dla tokenów zapisu granularnego, deprecjację TOTP na rzecz FIDO i passkeys oraz OIDC zaufane publikowanie dla GitHub Actions i GitLab CI. Majowe naruszenie przyspiesza już trwającą migrację; nie wprowadza nowej polityki.
| Kontrola | Status | Działanie dla Ciebie |
|---|---|---|
| Obowiązkowe 2FA npm | Aktywne | Włącz teraz: npm profile enable-2fa auth-and-writes |
| Limit 90 dni dla tokenów zapisu granularnego | Wdrażane (istniejące tokeny wymuszone do wygaśnięcia) | Migracja do fine-grained PAT z TTL ≤90 dni |
| Deprecjacja TOTP, FIDO / passkeys | Fazowane wdrażanie 2026 | Zarejestruj passkey na każdym koncie GitHub dzisiaj |
| OIDC trusted publishing | Aktywne dla GitHub Actions + GitLab CI | Migracja CI z długoterminowych tokenów npm do OIDC |
Szerszy plan GitHuba dla bezpieczniejszego łańcucha dostaw npm wyprzedza ten incydent o miesiące. Im szybciej się do niego dostosujesz, tym mniejszy będzie zasięg szkód następnym razem.
Hardening: Jak przetrwać kolejny atak
Sześć ruchów patrzących w przyszłość: pinuj wersje rozszerzeń w devcontainer.json, wymuszaj listę dozwolonych rozszerzeń na poziomie organizacji, uruchamiaj EDR z widocznością procesów rozszerzeń, skanuj sekrety przy każdym pushu, zawężaj scope PAT do jednego repozytorium i przyjmuj OIDC trusted publishing zamiast długoterminowych tokenów. Żadne z nich nie zapobiegłoby każdemu incydentowi, ale razem zmniejszają zasięg szkód z „wszystkiego na laptopie” do „jednego repozytorium”.
{
"name": "secure-dev",
"extensions": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"settings": {
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
},
"containerEnv": {
"VSCODE_GALLERY_SERVICE_URL": "https://your-internal-allow-list.example.com"
}
}W skrócie:
- Pinuj każdą wersję rozszerzenia w
devcontainer.json, aby zabić auto-update. - Lista dozwolonych na poziomie organizacji przez skierowanie
VSCODE_GALLERY_SERVICE_URLdo wewnętrznego mirroru. - EDR z widocznością procesów IDE: Crowdstrike, SentinelOne lub Microsoft Defender for Endpoint z VS Code w zakresie.
- Skanowanie sekretów przy każdym pushu: pre-commit i w czasie push, po stronie serwera.
- Scope każdego PAT do jednego repozytorium: nigdy scope
*. - OIDC trusted publishing: brak długoterminowych tokenów npm lub registry w CI.
Zeszłotygodniowy CVE Linuxa copy_file_range to pokrewna historia: inna warstwa, ta sama lekcja. Granica zaufania, o której zapomniałeś, to ta, która boli.
Jeśli rozważasz agentów kodujących AI, zastosuj ten sam framework audytu. Mają ten sam profil zaufania co rozszerzenia. Nasza analiza najlepszych agentów kodujących AI 2026 przeprowadza przez to, którzy agenci zasługują na to zaufanie.
Często zadawane pytania
Czy GitHub został zhakowany?
Nie, nie w sensie, jaki sugerują większość nagłówków. Produkcja GitHub.com nie została naruszona. Pracownik GitHuba zainstalował złośliwe rozszerzenie VS Code na swojej stacji roboczej, co doprowadziło do wykradzenia około 3800 wewnętrznych repozytoriów z kodem źródłowym GitHuba. Kod klientów, konta klientów oraz usługi produkcyjne GitHuba nie zostały naruszone.
Jakie rozszerzenie VS Code było faktycznie zaangażowane?
GitHub formalnie nie potwierdził nazwy rozszerzenia. Dowody forenzyjne od StepSecurity, Wiz i GHSA-c9j4-9m59-847w wskazują wysoce prawdopodobnie na Nx Console v18.95.0, opublikowane 18 maja o 12:36 UTC i usunięte 11 minut później. Traktujemy to jako „wysoce prawdopodobne, a nie potwierdzone”, dopóki GitHub nie poda nazwy.
Czy Nx Console jest teraz bezpieczny w użyciu?
Wersja z poprawką to 18.100.0. Jeśli masz zainstalowaną starszą v18.95.0, natychmiast odinstaluj, uruchom skanowanie IoC z naszej sekcji triażu i zainstaluj ponownie tylko od oficjalnego wydawcy Nrwl w wersji 18.100.0 lub nowszej. Zweryfikuj domenę wydawcy przed reinstalacją i zapnij wersję w devcontainer.json.
Czy dane klientów zostały naruszone przez wyciek GitHuba?
Nie. Zgodnie z oficjalnym oświadczeniem GitHuba via Bleeping Computer, kod źródłowy klientów, konta klientów, tokeny OAuth i dane produkcyjne hostowane na GitHubie nie zostały uzyskane. Skompromitowane dane to wewnętrzny kod źródłowy GitHuba z endpointu pracownika. Traktuj to jako incydent laptopa pracownika, a nie naruszenie platformy.
Jak mogę wiedzieć, czy mój token PAT GitHub został skradziony?
Nie możesz mieć pewności. Zachowawcze założenie: jeśli używałeś jakiegokolwiek tokena PAT GitHub wewnątrz VS Code w ciągu ostatnich 14 dni, traktuj go jako skompromitowany i rotuj. Sprawdź dziennik audytu GitHuba przez gh api /orgs/{ORG}/audit-log pod kątem nieznanych zdarzeń push między 18–20 maja UTC, a następnie unieważnij i wydaj ponownie token.
Czym są TeamPCP i UNC6780?
TeamPCP to grupa aktorów zagrożeń; UNC6780 to identyfikator śledzenia przypisany przez dostawców reagowania na incydenty. Publicznie przyznali się do ataku na GitHuba. Ta sama grupa zgłosiła kompilacje z 2026 r. przeciwko Trivy, KICS, LiteLLM, TanStack i MistralAI, co stanowi spójny wzorzec celowania w łańcuch dostaw VS Code i npm.
Czy rozszerzenia VS Code są piaskownicowane (sandboxed)?
Nie, nie w znaczącym stopniu. Rozszerzenia VS Code działają w procesie Node.js IDE z pełnymi uprawnieniami systemu plików i sieci użytkownika. Mogą odczytać każdy plik w katalogu domowym, w tym klucze SSH, ~/.aws/credentials, ~/.claude/settings.json oraz pamięć procesów przez /proc/*/mem w Linuksie. Microsoft dokumentuje model bezpieczeństwa runtime i jego ograniczenia w oficjalnej dokumentacji rozszerzeń.
Czy wpłynęło to na GitHub Codespaces lub runnery CI?
Brak dowodów jak dotąd. Kompromitacja dotyczyła stacji roboczej pracownika, a nie infrastruktury hostowanej przez GitHuba. Codespaces, runnery GitHub Actions i infrastruktura CI skierowana do klientów nie są zgłaszane jako dotknięte. Zaktualizujemy ten wpis, jeśli nowe IoC zmienią ten obraz.
Podsumowanie
Trzy rzeczy, które warto zapamiętać:
- GitHub.com nie został zhakowany. Zhakowano stację roboczą VS Code pracownika. Lekcja uogólnia się na każdego dewelopera.
- Rotuj teraz, framework audytu na zawsze. 60-minutowy plan to łatka; 5-pytaniowy framework audytu to układ odpornościowy.
- To nie jest jednorazowy incydent. To węzeł nr 6 w 9-miesięcznej fali ataków na łańcuch dostaw, która nie zwalnia.
Ostatnia aktualizacja: 20 maja 2026 r. Przejrzymy ten wpis 27 maja 2026 r., dodając nowe IoC, porady dostawców i wszelkie potwierdzone przez GitHub atrybucje rozszerzeń.
Jeśli Twój zespół potrzebuje pomocy w audycie powierzchni rozszerzeń VS Code, higienie tokenów PAT i innych poświadczeń lub budowaniu polityki listy dozwolonych na poziomie organizacji, uzyskaj bezpłatną konsultację. Od czasu naruszenia Vercel w kwietniu intensywnie zajmujemy się bezpieczeństwem endpointów deweloperskich, a powyższy plan to to, co wdrażamy z klientami pierwszego dnia.