
GitHub a fost hackuit printr-o extensie VS Code (mai 2026): Planul de urgență de 60 de minute pe care fiecare dezvoltator ar trebui să îl ruleze diseară
Pe 20 mai 2026, GitHub a confirmat că aproximativ 3.800 dintre repositoriile sale interne de cod sursă au fost exfiltrate printr-o extensie malicioasă VS Code instalată pe stația de lucru a unui angajat. Dacă ai folosit un GitHub PAT sau un token npm în interiorul VS Code în ultimele 14 zile, următoarele 60 de minute contează. Acesta este planul de acțiune: ce s-a întâmplat de fapt, dacă ești afectat și ce credențiale trebuie rotite primele.
Puncte Cheie
- Ce s-a întâmplat: Infrastructura de producție GitHub.com nu a fost compromisă; VS Code-ul unui angajat a instalat o extensie otrăvită (foarte probabil Nx Console v18.95.0) care a exfiltrat PAT-urile și a descărcat ~3.800 de repositorii interne.
- Datele clienților: Nu sunt afectate. Datele compromise sunt codul sursă intern al GitHub, nu codul sau conturile clienților.
- Cine este în pericol: Orice dezvoltator care a instalat o extensie VS Code între aproximativ 18 mai, 12:36 UTC și 18 mai, 12:47 UTC (fereastra de 11 minute) sau oricine folosește GitHub PAT-uri cu durată lungă de viață din interiorul VS Code.
- Ce trebuie făcut acum: Rotește mai întâi GitHub PAT-urile, apoi token-urile npm, apoi cheile AWS/cloud; găsești planul complet în secțiunea „Ce trebuie să facă dezvoltatorii” de mai jos.
TL;DR: Cele 6 lucruri de făcut în următoarea oră
Cel mai rapid mod de a limita impactul poveștii despre extensia vscode github hackuită este să rotești credențialele pe care o extensie otrăvită le poate accesa, să auditezi ce este instalat pe laptopul tău și să verifici jurnalul organizației GitHub pentru fereastra UTC 18-20 mai. Șase acțiuni, ordonate după impact.
- Revocă fiecare GitHub Personal Access Token creat sau utilizat în VS Code în ultimele 30 de zile.
- Rotește token-urile npm prin
npm token revokeși reemite-le cu 2FA + publicare de încredere (trusted publishing). - Scanează laptopul pentru Indicatori de Compromitere (IoC) din GHSA-c9j4-9m59-847w (căi de fișiere, procese; comenzi mai jos).
- Auditează
code --list-extensions --show-versionsși dezinstalează orice nu poți justifica. - Fixează versiunile extensiilor în
devcontainer.jsonși impune o listă de permisiuni (allow-list) la nivel de organizație. - Verifică jurnalul de audit al organizației GitHub pentru push-uri suspecte în repositorii între 18-20 mai UTC.
Dacă ai timp doar pentru două, fă #1 și #3. Restul pot aștepta o oră.
A fost GitHub hackuit cu adevărat? Să clarificăm titlul
Nu, infrastructura de producție GitHub.com nu a fost compromisă pe 20 mai 2026. Stația de lucru a unui singur angajat GitHub a fost compromisă după ce acesta a instalat o extensie VS Code malicioasă (foarte probabil Nx Console v18.95.0). Atacatorul, care se numește TeamPCP (monitorizat ca UNC6780), a exfiltrat aproximativ 3.800 dintre repositoriile interne de cod sursă ale GitHub. Codul clienților, conturile clienților și serviciile de producție GitHub nu sunt afectate.
Iată versiunea mai clară a ceea ce s-a întâmplat și ce nu s-a întâmplat.
| Ce s-a întâmplat | Ce NU s-a întâmplat |
|---|---|
| Laptopul unui angajat a fost compromis printr-o extensie VS Code otrăvită | Infrastructura de producție GitHub.com a fost compromisă |
| ~3.800 de repositorii interne de cod sursă au fost exfiltrate | Repositoriile sau conturile clienților au fost atinse |
| Credentialele angajaților GitHub de pe acel endpoint au fost furate | PAT-urile clienților, token-urile npm sau granturile OAuth au fost furate din sistemele GitHub |
| TeamPCP a cerut o răscumpărare (conform Tom's Hardware) | GitHub a plătit (nu există dovezi de plată) |
De ce contează această încadrare? Pentru că concluzia nu este că „github a fost hackuit”. Concluzia este că endpoint-urile dezvoltatorilor sunt acum punctul slab al fiecărei organizații de inginerie. Fiecare secret deținut de echipa ta (GitHub PATs, token-uri npm, chei AWS, sesiuni vault, chei pentru provideri AI) se află pe un laptop cu o acoperire EDR minimă sau inexistentă. O singură extensie otrăvită care rulează în IDE-ul tău moștenește totul.
Purtătorul de cuvânt al GitHub, citat în Bleeping Computer, a confirmat încadrarea incidentului la nivelul endpoint-ului angajatului și afirmația „fără date ale clienților”. Help Net Security a adăugat atribuirea către TeamPCP. Lanțul tehnic de custodie pentru extensie se găsește în advisory-ul GHSA-c9j4-9m59-847w.
GitHub.com nu a fost compromis. Un angajat GitHub a fost. Păstrează această perspectivă în minte în timp ce citești restul articolului.
Ce s-a întâmplat de fapt: Cronologia breșei din mai 2026
Povestea breșei github 2026 s-a desfășurat în patru etape pe parcursul a aproximativ 48 de ore. O extensie otrăvită a fost publicată pe 18 mai la 12:36 UTC, eliminată 11 minute mai târziu, detectată de GitHub a doua zi și divulgată public pe 20 mai. Cronologia compactă, cu surse:
| Timp (UTC) | Eveniment | Sursă |
|---|---|---|
| 18 mai, 12:36 | Nx Console v18.95.0 publicat pe OpenVSX / Visual Studio Marketplace (foarte probabil) | StepSecurity / GHSA-c9j4-9m59-847w |
| 18 mai, 12:47 | Versiunea malicioasă eliminată, fereastră de 11 minute | StepSecurity |
| 19 mai | GitHub detectează compromiterea endpoint-ului angajatului; izolează incidentul | Purtător de cuvânt GitHub via Bleeping Computer |
| 20 mai | Divulgare publică; TeamPCP / UNC6780 revendică public responsabilitatea | Help Net Security, Hackread |
Această fereastră de 11 minute este cel mai ciudat detaliu. Sugerează că atacatorul a rotit extensiile pentru a evita detectarea de către marketplace, același model documentat de Koi Security în viermele GlassWorm OpenVSX din octombrie 2025. TeamPCP / UNC6780 a revendicat anterior compromiteri în 2026 împotriva Trivy, KICS, LiteLLM, TanStack și MistralAI. Același grup, același plan de acțiune, ținte diferite.
Luna trecută au fost variabilele de mediu Vercel. Astăzi sunt repositoriile GitHub. Modelul pe care l-am urmărit evoluând timp de 9 luni continuă să deplaseze impactul spre exterior. Vezi analiza noastră despre răspunsul la breșa Vercel pentru incidentul înrudit.
Extensia probabil vinovată: Nx Console v18.95.0 (Și de ce GitHub nu confirmă)
GitHub nu a numit oficial extensia implicată în compromiterea endpoint-ului angajatului. Dovezile forensice se aliniază puternic cu Nx Console v18.95.0, dar acest lucru rămâne foarte probabil, neconfirmat. Vom actualiza acest post dacă GitHub numește public o altă extensie. Consideră restul acestei secțiuni ca fiind cea mai bună atribuire disponibilă, nu un fapt declarat.
Patru piese de dovezi circumstanțiale aliniază Nx Console cu divulgarea GitHub:
- Potrivirea temporală: Fereastra advisory-ului GHSA-c9j4-9m59-847w (18 mai, 12:36-12:47 UTC) se încadrează în fereastra de compromitere a endpoint-ului angajatului GitHub din propria divulgare a GitHub.
- Suprapunerea IoC forensici: Analiza payload-ului Nx Console publicată de StepSecurity (căi de fișiere, procese precum
__DAEMONIZED, endpoint-uri de rețea) se potrivește cu artefactele văzute pe endpoint-ul compromis conform raportului Wiz. - Modelul de atribuire TeamPCP: TeamPCP / UNC6780 a fost activ în spațiul lanțului de aprovizionare VS Code (Trivy, KICS, LiteLLM, TanStack, MistralAI în 2026) cu o structură consistentă a payload-ului.
- Fereastra de eliminare de 11 minute: Caracteristică atacurilor asupra lanțului de aprovizionare unde atacatorul controlează momentul publicării, dar marketplace-ul îl detectează rapid.
Dacă nu ai instalat Nx Console, nici măcar atunci nu ești complet în siguranță. Modelul larg de atac (procesele __DAEMONIZED, abuzul IMDS, exfiltrarea ~/.claude/settings.json) se generalizează la orice extensie otrăvită. Triajul din secțiunea următoare se aplică indiferent de extensia suspectată.

Ești afectat? Triajul de 5 minute
Există trei teste rapide. (1) Ai instalat sau ai făcut auto-update la o extensie VS Code între 18 mai, 12:36 și 12:47 UTC? (2) Se află vreunul dintre fișierele IoC din GHSA-c9j4-9m59-847w pe laptopul tău chiar acum? (3) Ai folosit un GitHub PAT în interiorul VS Code în ultimele 14 zile? Rulează toate trei în sub cinci minute.
Testul 1, Auditul extensiilor
# 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"Orice s-a actualizat automat între 17 și 18 mai merită o a doua privire. Dacă vezi Nx Console exact la versiunea 18.95.0, este o potrivire probabilă. Versiunea patch-uită este 18.100.0. Fie dezinstaleaz-o, fie treci direct la planul de acțiune de mai jos.
Testul 2, Scanarea 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/nullUn laptop curat nu ar trebui să returneze nimic pentru grep-ul __DAEMONIZED, fără fișiere .daemonized și fără hit-uri IMDS în istoricul shell-ului. Dacă apare oricare dintre acestea, presupune că laptopul este compromis și tratează fiecare credențială atinsă în ultimele 30 de zile ca fiind arsă (compromisă).
Testul 3, Expunerea PAT
Dacă ai folosit un GitHub PAT (clasic sau granular fin) în orice terminal VS Code, git integrat sau orice extensie care apelează API-ul GitHub în ultimele 14 zile, presupune că este compromis și treci la planul de rotație de mai jos. Aceasta este abordarea conservatoare implicită; nu poți audita „era token-ul în memorie cât timp extensia era activă”. Rotește-l.
Dacă folosești Claude Code, lista IoC include specific ~/.claude/settings.json. Verifică ghidul nostru pentru hook-urile Claude Code pentru a vedea ce este stocat în acel fișier și ce chei trebuie rotite primele.
Verdict. Dacă oricare dintre aceste trei teste dă un rezultat pozitiv, oprește-te din citit narativul. Treci direct la planul de acțiune din secțiunea următoare. Următoarele 55 de minute contează mai mult decât analiza post-mortem.
Ce trebuie să facă dezvoltatorii: Planul de urgență de 60 de minute
Rotește credențialele în ordinea priorității. Nivelul 0 (următoarele 30 min): GitHub PATs și token-uri npm. Nivelul 1 (astăzi): Chei AWS / cloud, 1Password / Vault, secrete GitHub Actions. Nivelul 2 (săptămâna aceasta): SaaS terțe, granturi OAuth, chei SSH. Nivelul 3 (când este convenabil): Chei read-only și publice. Fiecare nivel corespunde unei reduceri specifice a impactului.

CHIAU ACUM: Dacă crezi că ești afectat
Dacă triajul a dat pozitiv, fă aceste trei lucruri în ordine înainte de orice altceva.
- Oprește daemon-ul și dezinstalează extensia suspectă:
# 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- Scoate cablul de rețea al laptopului dacă ai orice dovadă a unei exfiltrări active. Sună extrem. Și este. Fă-o oricum. Poți reinvestiga offline.
- Sună echipa de securitate sau postează în canalul Slack
#securityînainte de a rula orice altceva. Dacă lucrezi singur, treci la Nivelul 0 de mai jos.
Nivelul 0 (Următoarele 30 de minute): GitHub + npm
Revocarea GitHub PAT prin CLI-ul gh și interfața web de setări:
# 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}/installationsRotația token-urilor 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-publishersDacă menții pachete publicate, token-ul tău npm este cea mai periculoasă credențială pe care o deții. Rotește-o înainte de AWS.
Nivelul 1 (Astăzi): Cloud + Vault-uri + Secrete CI
Urmează cheile de acces AWS. IoC-urile arată abuzul IMDS, așa că orice utilizator IAM care a atins endpoint-ul compromis este suspect:
# 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: deconectează-te de pe fiecare dispozitiv (op signout --all), regenerează token-urile de sesiune și auditează accesul recent la vault prin jurnalul de audit web 1Password pentru orice a rulat de pe endpoint-ul compromis.
HashiCorp Vault: revocă token-ul de utilizator (vault token revoke -self) și cere unui administrator să emită unul nou cu un TTL mai scurt.
Secrete GitHub Actions: dacă orice credențială rotită se află și în Actions, actualizeaz-o. Folosește gh secret set GITHUB_PAT --body <new-pat> per repo, sau interfața la nivel de organizație pentru secretele org.
Cheile API Anthropic și OpenAI: lista IoC GHSA-c9j4-9m59-847w menționează specific ~/.claude/settings.json ca țintă de colectare. Revocă și reemite cheia API din consola Anthropic și orice cheie OpenAI stocată vreodată în acel fișier.
Nivelul 2 (Săptămâna aceasta): SSH + OAuth + Manageri de parole
Cheile SSH se mișcă mai lent, dar sunt tot în sfera de impact. Extensia avea acces de citire la sistemul de fișiere pe ~/.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]Managerul de parole din browser și keychain-ul OS: rotește orice parolă pe care extensia ar fi putut plauzibil să o vadă prin clipboard. Expunerea realistă o constituie parolele copiate în clipboard cât timp extensia era activă.
Nivelul 3 (Când este convenabil): Audit + Verificare
Auditează jurnalul organizației GitHub pentru fereastra de compromitere. Acest lucru necesită drepturi de admin 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_keyDacă jurnalul de audit arată push-uri din fereastra de compromitere pe care nu le-ai făcut tu, escaladează către echipa de securitate și păstrează JSON-ul jurnalului de audit. Nu încerca să „anulezi” nimic în repo. Păstrează dovezile mai întâi.
Am acoperit aceeași logică de rotație în trepte pentru breșa variabilelor de mediu Vercel din aprilie: aceeași formă, strat diferit.
Cadrul de audit al extensiilor în 5 întrebări (Folosește-l mereu)
Înainte de a instala sau de a avea încredere în orice extensie VS Code, trece-o prin cinci teste: vechimea domeniului publisher-ului, viteza versiunilor, evenimentele de activare din package.json, sfera permisiunilor vs comportamentul așteptat și auditul repo-ului open-source. Nx Console v18.95.0 ar fi picat Testul #2: un salt brusc de versiune după un cadru stabil de lansare este indicatorul clasic al unui atac asupra lanțului de aprovizionare.
- Vechimea domeniului publisher-ului. Domeniul publisher-ului are mai mult de un an? Publisher-ii noi pe domenii înregistrate recent prezintă un risc mai mare. Verifică prin pagina publisher-ului din Visual Studio Marketplace sau prin
whoispe domeniul email-ului publisher-ului. - Viteza versiunilor. Istoricul versiunilor arată un cadru normal (o lansare la fiecare 1-4 săptămâni) sau un vârf brusc (trei lansări în 24 de ore)? Viteza bruscă este un semnal. Nx Console v18.95.0 a fost o anomalie de viteză.
- Evenimente de activare
package.json. Deschide fișierul.vsix(este un zip) și citeșteactivationEvents. Extensiile care se activează pe*(mereu active) au cea mai mare suprafață de atac. Preferă extensiile care se activează pe o limbă specifică sau un nume de fișier. - Permisiuni necesare vs comportament așteptat. O extensie de „temă” solicită acces la rețea? O extensie de „snippet” are nevoie de scriere în sistemul de fișiere? Nepotrivirile sunt steaguri roșii. Verifică încrucișat cu documentația de securitate runtime a extensiilor de la Microsoft.
- Auditul repo-ului open-source. Sursa este pe GitHub? Citește ultimele cinci commit-uri pentru modificări suspecte: hook-uri post-instalare, blob-uri codate base64, apeluri de rețea către domenii nefamiliare.
O extensie care se activează pe * și cere acces la rețea este funcțional un shell remote cu VS Code atașat de el.
Același cadru de audit se aplică serverelor MCP, următoarea suprafață de atac a lanțului de aprovizionare de tip extensie. Vezi analiza noastră despre cele mai bune servere MCP 2026 pentru a vedea în care avem încredere și de ce.
De ce se întâmplă asta mereu: Valul lanțului de aprovizionare 2025-2026
Breșa GitHub din 20 mai este un nod într-un arc de 9 luni: viermele npm Shai-Hulud (sept. 2025), viermele OpenVSX GlassWorm (oct.-nov. 2025), Shai-Hulud 2.0 (nov. 2025, >25.000 de repositorii afectate), Mini Shai-Hulud (începutul lui 2026), Nx Console (18 mai 2026), compromiterea endpoint-ului GitHub (20 mai 2026). Endpoint-urile dezvoltatorilor au devenit noul punct slab.
- Sept. 2025, viermele npm Shai-Hulud. Malware auto-propagant în pachete npm populare. CISA a emis o alertă privind compromiterea widespread.
- Oct.-Nov. 2025, GlassWorm. Primul vierme auto-propagant care țintește extensiile VS Code pe OpenVSX. Divulgare Koi Security.
- Nov. 2025, Shai-Hulud 2.0. Peste 25.000 de repositorii exfiltrate. Microsoft Security Blog a publicat ghiduri de contenție.
- Începutul lui 2026, Mini Shai-Hulud. Varianta TeamPCP. Repetări la scară mai mică împotriva Trivy, KICS, LiteLLM, TanStack și MistralAI.
- 18 mai 2026, Nx Console v18.95.0. Vector foarte probabil pentru compromiterea endpoint-ului GitHub.
- 20 mai 2026, GitHub divulgă. ~3.800 de repositorii interne exfiltrate. Conform seriei forensice Shai-Hulud de la Wiz, modelul de abuz IMDS este o evoluție directă.
Modelul este clar: laptopurile dezvoltatorilor conțin fiecare secret din organizație (GitHub PATs, chei AWS, token-uri vault, chei provideri AI) și au o acoperire EDR aproape nulă. Până când acest dezechilibru se inversează, acest val continuă.
AI-ul defensiv este o parte a răspunsului. Am acoperit acest unghi în analiza noastră despre cum previne AI breșele de date earlier this year.
Răspunsul mai larg al GitHub: Publicare de încredere, FIDO 2FA, Token-uri de 90 de zile
GitHub implementase deja patru controale ale lanțului de aprovizionare înainte de 20 mai: 2FA obligatorie pentru publisher-ii npm, o limită de 90 de zile pentru token-urile de scriere granulare, deprecierea TOTP în favoarea FIDO și passkeys, și publicarea de încredere OIDC pentru GitHub Actions și GitLab CI. Breșa din mai accelerează o migrare deja începută; nu introduce o politică nouă.
| Control | Status | Acțiune pentru tine |
|---|---|---|
| 2FA npm obligatorie | Activ | Activează acum: npm profile enable-2fa auth-and-writes |
| Limită de 90 de zile pentru token-uri de scriere granulare | În derulare (token-urile existente forțate să expire) | Migrează la PAT-uri granulare fine cu TTL ≤90 zile |
| Deprecierea TOTP, FIDO / passkeys | Lansare fazată 2026 | Înregistrează un passkey pe fiecare cont GitHub astăzi |
| Publicare de încredere OIDC | Activ pentru GitHub Actions + GitLab CI | Migrează CI de la token-uri npm cu durată lungă la OIDC |
Planul GitHub pentru un lanț de aprovizionare npm mai sigur precede acest incident cu luni. Cu cât te aliniezi mai rapid la el, cu atât impactul va fi mai mic data viitoare.
Consolidare: Cum să supraviețuiești următorului incident
Șase mutări orientate spre viitor: fixează versiunile extensiilor în devcontainer.json, impune o listă de permisiuni (allow-list) la nivel de organizație, rulează EDR cu vizibilitate asupra proceselor de extensie, scanează secretele la fiecare push, limitează PAT-urile la un singur repo și adoptă publicarea de încredere OIDC în locul token-urilor cu durată lungă de viață. Niciuna dintre acestea nu ar fi prevenit fiecare incident, dar împreună reduc impactul de la „totul de pe laptop” la „un singur repo”.
{
"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"
}
}Pe scurt:
- Fixează fiecare versiune de extensie în
devcontainer.jsonpentru a opri auto-update-ul. - Listă de permisiuni la nivel de organizație direcționând
VSCODE_GALLERY_SERVICE_URLcătre o oglindă internă. - EDR cu vizibilitate procese IDE: Crowdstrike, SentinelOne sau Microsoft Defender for Endpoint cu VS Code în sferă.
- Scanare secrete la fiecare push: pre-commit și la push, lato-server.
- Limitează fiecare PAT la un singur repo: fără scope-uri
*, niciodată. - Publicare de încredere OIDC: fără token-uri npm sau de registry cu durată lungă de viață în CI.
CVE-ul copy_file_range Linux de săptămâna trecută este o poveste înrudită: strat diferit, aceeași lecție. Limita de încredere pe care ai uitat-o este cea care te lovește.
Dacă iei în considerare agenți de codare AI în continuare, aplică același cadru de audit. Au același profil de încredere ca extensiile. Analiza noastră despre cei mai buni agenți de codare AI 2026 parcurge care agenți câștigă această încredere.
Întrebări frecvente
A fost GitHub hackuit?
Nu, nu în sensul implicat de majoritatea titlurilor. Infrastructura de producție GitHub.com nu a fost compromisă. Un angajat GitHub a instalat o extensie VS Code malicioasă pe stația sa de lucru, care a exfiltrat aproximativ 3.800 de repositorii interne de cod sursă ale GitHub. Codul clienților, conturile clienților și serviciile de producție GitHub nu sunt afectate.
Ce extensie VS Code a fost implicată efectiv?
GitHub nu a confirmat oficial numele extensiei. Dovezile forensice de la StepSecurity, Wiz și GHSA-c9j4-9m59-847w indică foarte probabil Nx Console v18.95.0, publicată pe 18 mai la 12:36 UTC și eliminată 11 minute mai târziu. Tratăm acest lucru ca „foarte probabil, neconfirmat” până când GitHub o numește.
Este Nx Console sigur de utilizat acum?
Versiunea patch-uită este 18.100.0. Dacă ai o versiune mai veche v18.95.0 instalată, dezinstaleaz-o imediat, rulează scanarea IoC din secțiunea noastră de triaj și reinstaleaz-o doar de la publisher-ul oficial Nrwl la versiunea 18.100.0 sau ulterioară. Verifică domeniul publisher-ului înainte de reinstalare și fixează versiunea în devcontainer.json.
Au fost afectate datele clienților de breșa GitHub?
Nu. Conform declarației oficiale GitHub prin Bleeping Computer, codul sursă al clienților, conturile clienților, token-urile OAuth și datele de producție găzduite de GitHub nu au fost accesate. Datele compromise sunt codul sursă intern al GitHub de pe endpoint-ul angajatului. Tratează acest lucru ca un incident de laptop al angajatului, nu ca o breșă a platformei.
Cum știu dacă GitHub PAT-ul meu a fost furat?
Nu poți ști cu certitudine. Presupunerea conservatoare: dacă ai folosit orice GitHub PAT în interiorul VS Code în ultimele 14 zile, tratează-l ca fiind compromis și rotește-l. Verifică jurnalul de audit GitHub prin gh api /orgs/{ORG}/audit-log pentru evenimente de push nefamiliare între 18-20 mai UTC, apoi revocă și reemite token-ul.
Ce sunt TeamPCP și UNC6780?
TeamPCP este un grup de actori amenințători; UNC6780 este ID-ul de tracking asignat de vendorii de răspuns la incidente. Ei au revendicat public responsabilitatea pentru breșa GitHub. Același grup a revendicat compromiteri în 2026 împotriva Trivy, KICS, LiteLLM, TanStack și MistralAI, un model consistent de țintire a lanțului de aprovizionare VS Code și npm.
Sunt extensiile VS Code sandbox-ed?
Nu, nu într-un mod semnificativ. Extensiile VS Code rulează în procesul Node.js al IDE-ului cu privilegii complete de sistem de fișiere și rețea ale utilizatorului. Pot citi fiecare fișier din directorul home, inclusiv chei SSH, ~/.aws/credentials, ~/.claude/settings.json și memoria proceselor prin /proc/*/mem pe Linux. Microsoft documentează modelul de securitate runtime și limitele sale în documentația oficială a extensiilor.
A afectat acest incident GitHub Codespaces sau runner-ele CI?
Nu există dovezi până acum. Compromiterea a fost o stație de lucru a unui angajat, nu infrastructura găzduită de GitHub. Codespaces, runner-ele GitHub Actions și infrastructura CI orientată către clienți nu sunt raportate ca fiind afectate. Vom actualiza acest post dacă noi IoC schimbă această imagine.
Concluzie
Trei lucruri de reținut:
- GitHub.com nu a fost hackuit. Stația de lucru VS Code a unui angajat a fost. Lecția se generalizează la fiecare dezvoltator.
- Rotește acum, auditează mereu. Planul de 60 de minute este patch-ul; cadrul de audit în 5 întrebări este sistemul imunitar.
- Acesta nu este un caz izolat. Este nodul #6 într-un val al lanțului de aprovizionare de 9 luni care nu încetinește.
Ultima actualizare: 20 mai 2026. Vom revizui acest post pe 27 mai 2026 cu noi IoC, advisories de la vendori și orice atribuire de extensie confirmată de GitHub.
Dacă echipa ta are nevoie de ajutor pentru a audita suprafața extensiilor VS Code, igiena PAT și token-urilor sau pentru a construi o politică de listă de permisiuni la nivel de organizație, obține o consultație gratuită. Ne-am concentrat intens pe securitatea endpoint-urilor dezvoltatorilor încă de la breșa Vercel din aprilie, iar planul de mai sus este cel pe care îl rulăm cu clienții din prima zi.