Kompromis med udviklerarbejdsstation: ondsindet afhængighed eller IDE-udvidelsessvar¶
Nødnumre varierer fra land til land. Denne side bruger 911, nummeret for USA og Canada. Mange andre lande bruger 112, 999 eller et andet nummer. Find nummeret for dit land.
At opdage, at en softwarepakke, du lige har installeret via npm install, pip install, cargo build, gem install, eller go get, eller en nyligt opdateret Visual Studio Code, Cursor eller JetBrains IDE-udvidelse, er en ondsindet typosquat, afhængighedsforvirrende nyttelast eller kapret upstream-udgivelse repræsenterer en kritisk infrastrukturnødsituation. I modsætning til almindelige forbrugercomputere har en softwareingeniør, DevOps-arkitekt eller dataforsker-arbejdsstation direkte kryptografiske nøgler til produktionsskymiljøer, kildekodelagre, containerregistre, CI/CD-pipelines og kundedatabaser. Når en ondsindet preinstall eller postinstall script indeni package.json, en bevæbnet setup.py i et Python-hjul, eller et kompromitteret .vsix udvidelsen udføres på din bærbare computer, kører den med dine fulde brugerrettigheder og høster straks -/.aws/credentials, -/.ssh/id_ed25519, -/.npmrc, -/.pypirc, -/.kube/config, lokale .env filer, macOS nøglering eller Linux libsecret indtastninger og aktive browsersessionscookies inden for få sekunder.
Hvis du lige indså, at du udførte en ondsindet open source-afhængighed, klonede og byggede et våbenbaseret lager (såsom et falsk teknisk interviewprojekt fra en rekrutterer-fidus), eller installerede en trojaniseret IDE-udvidelse, tillader hvert sekund, din maskine forbliver forbundet til netværket, at nyttelasten kan dreje ind i din virksomheds sky eller udgive selvudbredende registreringsorme ved hjælp af dine pakkeforplantende registry orme. Hvis angrebet involverer afpresning, fysiske trusler eller kritiske forstyrrelser i den offentlige infrastruktur, skal du ringe til dit lokale alarmnummer (911 i USA og Canada, 112 i hele EU, 999 i Storbritannien) eller konsulter vores internationale alarmnumre vejviser. Følg disse procedurer for indeslutning, retsmedicinsk triage og kryptografisk nøglerotation med det samme.
Gør dette nu¶
- Afbryd alle netværksforbindelser på udviklerarbejdsstationen med det samme (sluk Wi-Fi, afbryd Ethernet, og dræb aktive VPN- eller SSH-tunneler), men Sluk IKKE for eller genstart maskinen endnu: Hvis du kobler Ethernet fra og slår Wi-Fi fra, stopper en aktiv omvendt shell, C2-beacon eller automatiseret orm i at bruge dine lokale ondsindede tokens til at sende flere ondsindede tokens. Hold maskinen tændt i en offline-tilstand (eller suspender den kun efter at have registreret flygtige proceslister), så du kan inspicere kørende underordnede processer, åbne netværkssockets, shell-historik og præcis hvilke
.envog legitimationsfiler lå på disken på tidspunktet for udførelse. - Brug en separat, ren enhed (såsom din smartphone på mobildata eller en uberørt bærbar computer) til at underrette dit Security Operations Center (SOC) og tilbagekalde dine Single Sign-On (SSO) og Cloud IAM-sessioner: Log aldrig ind på AWS, GCP, Azure, GitHub eller Okta fra den inficerede arbejdsstation for at rotere nøgler. Hvis en hukommelsesresident stjæler, ondsindet IDE-udvidelse eller shell-hook ser på din terminal og browser, fanges ethvert nyt token, du genererer på den maskine, øjeblikkeligt.
- Tilbagekald og roter dine udviklertokens med høj eksplosionsradius i streng prioriteret rækkefølge inden for de første 15 minutter:
- Prioritet 1 (Cloud & Kubernetes): Deaktiver alle lokale AWS IAM-adgangsnøgler (
AKIA...), tilbagekald Google Cloud Application Standard legitimationsoplysninger (gcloud auth application-default revoke), ugyldiggøre Azure CLI-tokens (az account clear+ Entra ID-session tilbagekaldelse), og roter Kuberneteskubeconfigklientcertifikater eller servicekontotokens. - Prioritet 2 (kildekode & CI/CD): Slet alle offentlige GitHub-, GitLab- og Bitbucket SSH-nøgler, personlige adgangstokens (
ghp_...,github_pat_...,glpat-...), og OAuth CLI-tokens (-/.config/gh/hosts.yml), og inspicer repository webhook-indstillinger og GitHub Actions / GitLab CI-hemmeligheder. - Prioritet 3 (Package Registries & Containers): Tilbagekald npm-automatisering og udgiv tokens (
-/.npmrc), PyPI API-tokens (-/.pypirc), Docker Hub / GHCR / ECR login-tokens (-/.docker/config.json), og Terraform Cloud-tokens (-/.terraform.d/credentials.tfrc.json). - Tjek npm, PyPI, Cargo og GitHub LIGE NU for at bekræfte, at malware ikke allerede brugte dine lokale tokens til at udgive en ormeinficeret version af dine egne pakker eller skubbe ondsindede commits: Moderne forsyningskædens nyttelast (som f.eks.
ua-parser-js,coa,rc,ctx,lottie-player, ogultralyticskompromiser) automatisk analysere offerets udviklers-/.npmrc,-/.pypirc, og-/.gitconfigfor straks at udgive bagdørs patch-versioner af hver open source eller intern pakke, som udvikleren vedligeholder, eller oprette skjulte GitHub Actions-arbejdsgange i udviklerens repositories. - Scan hver projektmappe på arbejdsstationen for at opbygge en komplet opgørelse over eksponerede
.envfiler, databaseforbindelsesstrenge og hårdkodede API-nøgler: Før du sletter arbejdsstationen, skal du køre et offline-script på den isolerede maskine for at vise alle.env,.env.local,terraform.tfstate, ogapplication.ymlfil på din harddisk, så du kan rotere alle tredjepartshemmeligheder (Stripe, Twilio, SendGrid, OpenAI, Anthropic, Datadog, Slack, Postgres, MongoDB og Redis-legitimationsoplysninger), der kunne læses af din brugerkonto. - Afbryd alle browsersessioner og hardware wallet-forbindelser: Fordi udviklerkompromiser ofte implementerer råvareinfostealere (såsom Lumma, RedLine eller Atomic macOS Stealer) sammen med udviklerspecifikke credential-høstere, skal du følge vores Session cookie-kapring og infostealer token tilbagekaldelse guide og hvis du laver Web3-udvikling eller har digitale aktiver, så udfør vores cryptocurrency wallet dræn og seed phrase kompromis guide.
Danger
Hvorfor løbe npm uninstall <package> eller pip uninstall <package> renser IKKE din arbejdsstation: I Node.js (npm, yarn, pnpm) og Python (pip) økosystemer, ondsindet kode venter næsten aldrig, indtil du import eller require() biblioteket i din ansøgningskode. I stedet placerer angribere nyttelasten i pakkens livscykluskroge (preinstall, install, eller postinstall ind package.json, eller udførelse på topniveau indeni setup.py under bygning af kildedistributionshjul). Øjeblikket du trykkede på Enter på npm install eller pip install, angriberens vilkårlige shell-script eller binære udført på dit operativsystem, kopierede din -/.ssh, -/.aws, og .env filer til en ekstern server, og ofte injiceret en vedvarende bagdør ind -/.bashrc, -/.zshrc, crontab, eller -/Library/LaunchAgents. Afinstallation af pakken bagefter sletter kun mappen inde node_modules eller site-packages mens du efterlader de stjålne nøgler i angriberens hænder og persistensmekanismen kører på dit OS.
Beslutningstræ: Udviklerarbejdsstations forsyningskædekompromis triage¶
Brug denne hændelsesreaktions-workflow til at indeholde eksplosionsradius på tværs af både dit personlige udviklingsmiljø og produktionsvirksomhedens infrastruktur:
flowchart TD
Detect["Mistænkt ondsindet npm / PyPI / Cargo Package, Trojanized IDE Extension eller Fake Recruiter Repo udført"] --> Isolate["TRIN 1: Afbryd øjeblikkeligt Workstation Wi-Fi & Ethernet (Hold maskinen tændt for offline triage)"]
Isolate --> ScopeCheck{"Forekom udførelse på værts OS eller inde i isoleret container/VM?"}
ScopeCheck -->|"Host OS (Mac / Linux / Windows / WSL2)"| FullCompromise["Antag, at 100 % af hjemmekataloget (-/.aws, -/.ssh, -/.npmrc, .env, browsercookies) blev eksfiltreret"]
ScopeCheck -->|"DevContainer / Docker"| MountCheck["Check Volume Mounts (-v -/.ssh, -v -/.aws, Docker Socket /var/run/docker.sock eller Host Network)"]
MountCheck --> FullCompromise
FullCompromise --> CleanDevice["TRIN 2: Fra en separat renseenhed skal du advare SOC og tilbagekalde Cloud IAM, SSO, GitHub/GitLab og Registry Tokens"]
CleanDevice --> WormCheck["TRIN 3: Audit GitHub Commits, CI/CD Workflows og npm/PyPI offentliggjorte versioner til Automated Worm Propagation"]
WormCheck --> OfflineAudit["TRIN 4: På offline arbejdsstation, inventar alle .env-filer, Terraform State-filer og Persistence-bagdøre"]
OfflineAudit --> RotateEnv["TRIN 5: Roter hver databaseadgangskode, Webhook-hemmelighed, GPG-signeringsnøgle og API-nøgle fundet i .env/State-filer"]
RotateEnv --> RebuildOS["TRIN 6: Slet arbejdsstation via Clean OS Geninstallation -> Håndhæv hardware-understøttede SSH-nøgler, OIDC og --ignore-scripts"]
Forståelse af, hvordan udviklerforsyningskæden og IDE-vektorer udføres¶
Moderne angreb mod softwareingeniører er rettet mod fire forskellige udførelsesflader på en arbejdsstation. Identifikation af, hvilken vektor der rammer din maskine, fortæller dig, hvilke privilegier og filstier nyttelasten har adgang til:
1. Ondsindede pakke livscykluskroge (npm, pnpm, yarn, pip, cargo, gem)¶
- Node.js (
package.jsonscripts): Kører som standardnpm installudfører automatisk enhver shell-kommando defineret i"preinstall","install", eller"postinstall"felter afpackage.json, ikke kun for den pakke på øverste niveau, du skrev, men for enhver transitiv afhængighed i træet. Angribere bruger typosquatting (f.eks.reqeusts,crossenv,lodahs), afhængighedsforvirring (udgivelse af en offentlig pakke på npm eller PyPI med nøjagtig samme navn og et højere versionsnummer, som f.eks.99.99.9, som din virksomheds interne private pakke), eller vedligeholdelseskontoovertagelser for at smide en enkelt linje som"postinstall": "node index.js"ind i en pakke. - Python (
setup.pyog.pthfiler): Hvornårpipinstallerer en kildedistribution (sdist.tar.gz), udføres detsetup.pymed fulde Python-tolkerettigheder. Selv ved installation af prækompilerede binære hjul (.whl), der ikke udføressetup.pyunder installationen inkluderer angribere ondsindet.pth(stikonfiguration) filer faldt direkte ind isite-packages/. Enhver linje inde i en.pthfil, der starter medimportudføres automatisk af Python-fortolkeren hver eneste gangpythonstarter op på det system. - Rust (
build.rs) og Go: I Rust kompilerer og udfører Cargo automatiskbuild.rsikke kun undercargo buildellercargo run, men straks nårrust-analyzer(inde i VS Code eller IntelliJ) åbner en projektmappe til indekstyper. Blot at åbne et klonet Rust-depot i din IDE medrust-analyzeraktiveret udfører vilkårlig kode indenibuild.rsfør du nogensinde skriver en terminalkommando.
2. Ondsindede eller kaprede IDE-udvidelser (VS Code Marketplace, OpenVSX, JetBrains)¶
- Visual Studio Code, Cursor, Windsurf og VSCodium udvidelser (
.vsix) køres i hovedprocessen for Node.js Extension Host på din arbejdsstation med nul sandboxing. Enhver installeret udvidelse har fuld læse-/skriveadgang til hele dit filsystem, kan afføde tavse underordnede processer (child_process.exec), kan læse alle åbne editorbuffere og.envfil, og kan tilslutte din integrerede terminal. - Trusselskuespillere udgiver rutinemæssigt falske temaudvidelser (
Darcula Official), falske AI-kodningsassistenter eller typosquaterede linter/smukke udvidelser, der lydløst downloader en anden-trins infostealer eller omvendt shell i det øjeblik, hvor IDE lanceres.
3. Bevæbnet Git Repositories & IDE Workspace Auto-Execution ("Falske rekrutterer / Take-Home Test" fælder)¶
- Nordkoreanske statssponserede grupper (
Contagious Interview/Lazarus Group) og krypto-fokuserede trusselsaktører henvender sig rutinemæssigt til udviklere på LinkedIn, Upwork eller GitHub og udgiver sig for at være rekrutterere eller CTO'er, der tilbyder højtbetalende fjernroller. De beder udvikleren om at klone et Bitbucket- eller GitHub-lager til en "15-minutters debugging-vurdering" eller "Web3 gaming MVP-gennemgang." - Disse arkiver indeholder skjulte udførelsesfælder, der udløser enten, når de åbnes i en IDE eller under build:
.vscode/tasks.jsonmed"runOn": "folderOpen": Kører automatisk et baggrundsshell-script i det øjeblik du klikker på "Ja, jeg stoler på forfatterne" i VS Code.- ** Ondsindet
.git/hooks/eller.gitmodules**: Udnytter Git undermodul konfiguration eller build scripts (Makefile,webpack.config.js,next.config.js,vite.config.ts), der indlæser slørede JavaScript-nyttelaster (ofte polstret med tusindvis af mellemrum uden for skærmen for at skjule ved kolonne 2.000+) kalder en ekstern C2-server.
Fase 1: Fuldfør udviklerlegitimationsoplysninger og hemmelig rotationsmatrix¶
Brug en ren sekundær bærbar eller smartphone til at arbejde systematisk gennem denne 12-punkts opgørelse af udviklerlegitimationsoplysninger. Antag, at enhver fil, der kan læses af din ikke-root OS-brugerkonto (chmod 600 eller 644 ejet af din bruger) blev uploadet til hackerens server inden for 3 sekunder efter udførelse af nyttelast.
| Credential kategori | Præcis lokale filstier høstet på arbejdsstation | Obligatorisk tilbagekaldelse og rotationshandling (fra en ren enhed) |
|---|---|---|
| 1. AWS IAM & SSO | -/.aws/credentials-/.aws/config-/.aws/sso/cache/*.json-/.aws/cli/cache/*.json |
1. I AWS IAM-konsol skal du straks deaktivere og slette alle statiske adgangsnøgler (AKIA...) gemt på den bærbare computer.2. I AWS IAM Identity Center (SSO) skal du tilbagekalde aktive brugersessioner og slette registrerede OIDC-klientenhedstokens. 3. Revision AWS CloudTrail for GetCallerIdentity, CreateUser, CreateAccessKey, AssumeRole, ListBuckets, og SecretsManager:GetSecretValue opkald, der stammer fra usædvanlige IP'er eller brugeragenter (Boto3, aws-cli, Go-http-client). |
| 2. Google Cloud (GCP) og Firebase | -/.config/gcloud/credentials.db-/.config/gcloud/access_tokens.db-/.config/gcloud/application_default_credentials.json-/.config/configstore/firebase-tools.json*-service-account.json |
1. Gå til myaccount.google.com/permissions og tilbagekald adgang til Google Cloud SDK og Firebase CLI.2. I GCP Console > IAM & Admin > Service Accounts skal du slette enhver Service Account JSON-nøgle ( private_key_id), der blev downloadet til arbejdsstationens harddisk.3. Undersøg Cloud Audit Logs for uautoriserede IAM-bindinger eller Compute Engine-oprettelse. |
| 3. Microsoft Azure & Entra ID | -/.azure/msal_token_cache.bin-/.azure/accessTokens.json-/.azure/azureProfile.json |
1. Lad en Entra ID Admin køre Revoke-MgUserSignInSession -UserId <your-user-id> for at ugyldiggøre alle opdateringstokens og primære opdateringstokens (PRT).2. Slet eventuelle Service Principal-klienthemmeligheder eller certifikater, der er gemt lokalt. |
| 4. Kubernetes & Helm | -/.kube/config-/.kube/cache/-/.config/helm/registry/config.json |
1. Hvis -/.kube/config indeholdt statiske klientcertifikater (client-certificate-data / client-key-data) eller langlivede ServiceAccount-bærer-tokens, tilbagekald certifikatet via din klynge-CA (CSR / RBAC fjernelse) eller slet og genskab ServiceAccount hemmelig med det samme.2. Revider Kubernetes API Server-revisionslogfiler for exec, pods, eller secrets liste/hent verber. |
| 5. GitHub, GitLab og Bitbucket | -/.ssh/id_ed25519, -/.ssh/id_rsa-/.config/gh/hosts.yml-/.git-credentials, -/.netrc-/.gitconfig |
1. Gå til github.com/settings/keys (og GitLab/Bitbucket-ækvivalenter) og Slet den offentlige SSH-nøgle og GPG/SSH-commit-signeringsnøgle fra den inficerede maskine.2. Gå til github.com/settings/tokens og github.com/settings/applications for at tilbagekalde alle personlige adgangstokens (ghp_, github_pat_), OAuth-apps (GitHub CLI, VS Code, Git Credential Manager), og aktive websessioner.3. Tjek Sikkerhedslog ( github.com/settings/security-log) for repo.clone, org.Invite_member, eller hook.create. |
| 6. GPG- og kodesigneringsnøgler | -/.gnupg/private-keys-v1.d/-/Library/Keychains/login.keychain-db (Apple Developer ID / .p12) |
1. Hvis din private GPG-nøgle blev gemt på disk uden et hardware-smartcard (YubiKey OpenPGP), og adgangssætningen var cachelagret i gpg-agent eller skrevet for nylig, generer og udgiv et GPG-tilbagekaldelsescertifikat med det samme og fjern GPG-nøglen fra GitHub/GitLab.2. Tilbagekald enhver eksporteret Apple-udvikler .p12 eller Android Keystore .jks kodesigneringscertifikater gemt på maskinen. |
| 7. Pakkeregistreringer (npm, PyPI, Cargo, RubyGems, NuGet) | -/.npmrc (_authToken=...)-/.pypirc-/.cargo/credentials.toml-/.gem/credentials |
1. Log ind på npmjs.com > Adgangstokens, pypi.org > Kontoindstillinger > API-tokens, crates.io > Kontoindstillinger > API-tokens og rubygems.org, og Tilbagekald alle aktive tokens med det samme. 2. Revider dine offentliggjorte pakker (se fase 2 nedenfor) for at bekræfte, at angriberen ikke har presset en bagdørsudgivelse i de sidste par timer. |
| 8. Docker- og containerregistre | -/.docker/config.json (Base64 auths til Docker Hub, GHCR, ECR, GCR, Quay) |
1. Husk det "auth" ind -/.docker/config.json (når den ikke bruges credsStore: osxkeychain eller wincred) er blot ukrypteret Base64 username:password_or_token.2. Tilbagekald personlige adgangstokens i Docker Hub ( hub.docker.com/settings/security), GitHub Container Registry og Quay.io. |
| 9. Infrastruktur-som-kode (Terraform / Pulumi / Ansible Vault) | -/.terraform.d/credentials.tfrc.json**/terraform.tfstate (Lokalstatsfiler)-/.pulumi/credentials.json-/.vault-token |
1. Tilbagekald Terraform Cloud / Enterprise-bruger-API-tokens og HashiCorp Vault-tokens. 2. KRITISK: Alle lokale terraform.tfstatefilen på din disk indeholder klartekstadgangskoder, RDS-masterlegitimationsoplysninger, private TLS-nøgler og IAM-hemmelige nøgler for hver ressource, der administreres af den pågældende stat. Roter hver hemmelighed, der henvises til i lokalt .tfstate filer. |
| 10. Databaser og cache-CLI-historier | -/.psql_history, -/.pgpass-/.mysql_history, -/.my.cnf-/.rediscli_history-/.mongodb/mongosh/DBeaver / TablePlus / DataGrip-konfigurationer |
1. GUI-databaseadministratorer (TablePlus, DBeaver, DataGrip, Postico, pgAdmin, MongoDB Compass) gemmer krypterede eller slørede databaseadgangskoder lokalt, som stjæle rutinemæssigt dekrypterer. 2. Roter databasebrugeradgangskoder til enhver iscenesættelse eller produktionsdatabase, der er tilgængelig via VPN, bastion eller offentlig IP fra din arbejdsstation. |
11. Ansøgning .env Filer og tredjeparts SaaS-nøgler |
**/.env, **/.env.local, **/.env.production, **/.env.development |
Roter hver API-nøgle, der er gemt i det lokale projekt .env filer: Stripe (sk_live_...), OpenAI (sk-...), antropisk (sk-ant-...), Twilio, SendGrid, AWS SES, Slack Bot Tokens (xoxb-...), Discord Bot-tokens, Datadog, Sentry, Supabase (service_role), Firebase Admin og JWT signeringshemmeligheder. |
| 12. SSH-kendte værter og Bastion Jump-servere | -/.ssh/config-/.ssh/known_hosts-/.zsh_history, -/.bash_history |
Angribere analyserer straks -/.ssh/config og -/.zsh_history for at finde hver intern server-IP, bastion-vært og brugernavn, du opretter forbindelse til, og brug derefter din stjålne -/.ssh/id_ed25519 nøglen til at logge direkte ind på disse servere. Fjern din gamle offentlige nøgle fra -/.ssh/authorized_keys på hver ekstern Linux-server og tjek /var/log/auth.log på disse servere for uautoriserede SSH-logins. |
Fase 2: Kontrol af automatiseret forsyningskædeormudbredelse (GitHub, CI/CD og pakkeregistre)¶
I modsætning til generisk malware er udviklermålrettede nyttelaster specifikt programmeret til at udbrede sig selv på tværs af softwareforsyningskæden inden for få sekunder efter landing på din arbejdsstation. Før du vender tilbage til at rense din bærbare computer, skal du bruge din rene enhed til at bekræfte, at dine stjålne legitimationsoplysninger ikke allerede er blevet brugt til at inficere dit team eller dine downstream-brugere:
- Revider dine GitHub / GitLab-lagre for stille bagdøre og ondsindede arbejdsgange:
- Tjek
.github/workflows/*.ymlpå tværs af alle depoter, du har skriveadgang til: Seneste forsyningskædeorme (Shai-Hulud,tj-actions/changed-fileskompromiser, ogultralyticsudnytter) automatisk bruge stjålne udviklertokens til at begå en ondsindet GitHub Actions-arbejdsgang eller ændre en eksisterende arbejdsgang til at dumpe${{ toJSON(secrets) }}(eksfiltrerer din organisations hemmeligheder for produktionsimplementering fra GitHub Actions-løbere). - Bekræft nylige commits efter forfatter og committer-tidsstempel: Husk, at alle kan forfalske et Git-forfatternavn og -tidsstempel (
git commit --date="..." --author="..."). I GitHub skal du inspicere Push-begivenheder i lageret Aktivitetsvisning eller organisationens Revisionslog (repo.push), som registrerer det sande tidsstempel på serversiden og det nøjagtige autentificeringstoken (oauth_application_idellerssh_key_fingerprint), der pressede koden. - Tjek lagerwebhooks, implementer nøgler og samarbejdspartnere: Se under Indstillinger > Webhooks, Indstillinger > Implementer nøgler og Indstillinger > Samarbejdspartnere og teams på dine lagre for at sikre, at angriberen ikke tilføjede en vedvarende læse/skrive-implementeringsnøgle eller webhook, der peger på en ekstern server.
- Revision npm, PyPI, Cargo og Docker Hub for uautoriserede pakkeudgivelser:
- Hvis du er vedligeholder eller samarbejdspartner på en offentlig eller privat pakke på npm, PyPI, RubyGems eller Crates.io, skal du tjekke fanen Versions/Udgivelseshistorik for hver pakke under din konto.
- Hvis en patchversion (f.eks.
1.4.2efter din sidste lovlige frigivelse1.4.1) blev udgivet inden for tidsrammen for kompromitteringen af din arbejdsstation, fraskriv eller træk den version med det samme (npm deprecate <pkg>@<version> "CRITICAL: Compromised version, do not use"eller ryk på PyPI) og kontakt npm Support (security@npmjs.com/ GitHub Security) eller PyPI Security (security@pypi.org) for at fjerne de ondsindede artefakter og karantæne berørte versioner. - Tjek efter Secret TruffleHog / Git Clone Exfiltration:
- Supply-chain-tyvere ringer ofte til GitHub/GitLab API'et ved at bruge dit stjålne token til at klone alle private organisatoriske arkiver, du har adgang til, og køre automatiske hemmelige scannere (
TruffleHogellerGitleaks) mod hele din virksomheds forpligtelseshistorie. Hvis din organisation nogensinde ved et uheld har begået en hemmelighed til et privat depots Git-historie uden at rotere den, rotér disse historiske hemmeligheder nu.
Fase 3: Offline retsmedicinsk triage på den kompromitterede arbejdsstation¶
Med din arbejdsstation helt afbrudt fra Wi-Fi og Ethernet, skal du åbne et terminalvindue for at udføre offline triage. Dit mål er todelt: (A) lokaliser hver .env og konfigurationsfil på disken, så du ved, hvilke hemmeligheder du skal rotere, og (B) fanger bevis på, hvad den ondsindede pakke eller udvidelse rent faktisk udførte, før du sletter operativsystemet.
Trin 1: Opgørelse af hver eksponering .env, privat nøgle og tilstandsfil på din disk¶
Kør denne skrivebeskyttede kommando på din offline macOS-, Linux- eller WSL2-arbejdsstation for at generere en komplet tjekliste over hver lokal fil, der indeholder hemmeligheder, som malwaren kunne have læst:
# Create an offline audit list of all .env files, Terraform states, kubeconfigs, and private keys in your home directory:
find ~ -maxdepth 5 \( \
-name ".env" -o \
-name ".env.*" -o \
-name "*.tfstate" -o \
-name "*.tfstate.backup" -o \
-name "*.pem" -o \
-name "*.key" -o \
-name "*.p12" -o \
-name "*.pfx" -o \
-name "*service-account*.json" -o \
-name "credentials.json" -o \
-name ".npmrc" -o \
-name ".pypirc" -o \
-name ".netrc" \
\) -not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/Library/Caches/*" 2>/dev/null > ~/exposed_secrets_inventory.txt
cat ~/exposed_secrets_inventory.txt
Gennemgå -/exposed_secrets_inventory.txt linje for linje og åbne hver .env eller .tfstate fil offline, så du kan rotere hver enkelt API-nøgle, databaseadgangskode og webhook-hemmelighed, der er angivet i dem, fra din rene enhed.
Trin 2: Undersøg, hvad den ondsindede pakke eller IDE-udvidelse udførte¶
Før du sletter den fornærmende mappe, skal du inspicere den nøjagtige nyttelast og kontrollere, hvor den installerede persistens på dit operativsystem:
# 1. Inspect package.json lifecycle scripts in the suspect project and its node_modules:
grep -rnE '"(preinstall|install|postinstall|prepublish|prepare)"' ./package.json ./node_modules/*/package.json ./node_modules/@*/*/package.json 2>/dev/null
# 2. Check Python site-packages for malicious .pth startup hook files:
find . -path "*/site-packages/*.pth" -exec head -n 20 {} + 2>/dev/null
# 3. Inspect recently installed or modified VS Code / Cursor / Windsurf Extensions:
ls -lt ~/.vscode/extensions/ ~/.cursor/extensions/ ~/.windsurf/extensions/ 2>/dev/null | head -n 30
# 4. Check for persistence injected into your Shell RC profiles and Git global hooks:
tail -n 30 ~/.zshrc ~/.bashrc ~/.bash_profile ~/.zprofile ~/.profile 2>/dev/null
git config --global --list | grep -E "core.hooksPath|alias|credential|filter"
Trin 3: Jagt efter persistens på OS-niveau faldet af udviklermalware (macOS, Linux og Windows)¶
Ondsindede afhængigheder og "falske rekrutterer"-lagre taber ofte vedvarende baggrundsagenter forklædt som systemopdateringer, Node-dæmoner eller Spotlight-indeksere:
- På Apple macOS:
# 1. Check user and system LaunchAgents / LaunchDaemons for recently added .plist files: ls -laht ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons # 2. Check active cron jobs and running background node/python/curl/nohup processes: crontab -l ps aux | grep -iE "node|python|osascript|curl|wget|nc|bash -i|/tmp/|/var/tmp/|Library/Application Support" - På Linux / Ubuntu / Fedora / WSL2:
# 1. Check user systemd services, cron jobs, and SSH authorized_keys: ls -la ~/.config/systemd/user/ /etc/systemd/system/ crontab -l cat ~/.ssh/authorized_keys # 2. Check running processes executing out of /tmp, /dev/shm, or ~/.cache: ls -la /proc/*/exe 2>/dev/null | grep -E "/tmp/|/dev/shm/|\.cache|\.local" - På Windows (native eller vært for WSL2):
- Husk, at et ondsindet npm- eller Python-script, der kører inde i WSL2 (Windows Subsystem til Linux) kan få direkte adgang til hele din Windows-vært
C:\kørsel via/mnt/c/Users/<username>/og kan påberåbepowershell.exeellercmd.exedirekte inde fra Linux-skallen for at inficere Windows-værtsregistret (HKCU:\Software\Microsoft\Windows\CurrentVersion\Run), Planlagte opgaver og Chrome/EdgeCookiesdatabaser. - Kør den fulde Windows PowerShell persistensrevision i vores session cookie hijacking og infostealer guide og vores malware, ransomware og spyware infektion guide.
Fase 4: Hvorfor skal du tørre og genopbygge udviklerarbejdsstationen¶
Også selvom du finder og sletter det ondsindede node_modules mappe, den .vsix udvidelse og en slyngel -/Library/LaunchAgents plist, du bør aldrig fortsætte med at bruge en kompromitteret udviklerarbejdsstation til produktionsteknik uden at udføre en ren OS-sletning og geninstallation.
Sofistikerede udviklermålrettede nyttelaster ændrer eksisterende legitime binære filer eller konfigurationsfiler på dit system, som ingen antivirusscanner markerer som ondsindet:
1. Trojaniserede lokale CLI-binære filer (git, ssh, sudo, aws, kubectl, docker): En nyttelast, der kører under din brugerkonto, kan ikke overskrive /usr/bin/ssh uden sudo, så i stedet dropper den et wrapper-script på -/.local/bin/ssh, -/bin/git eller -/bin/sudo og sætter den mappe foran din PATH. Næste gang du skriver sudo eller ssh -i efter at have genoprettet forbindelsen til internettet, opsnapper wrapperen lydløst din adgangskode eller adgangssætning og videresender den til angriberen, før den kalder den rigtige binære.
2. Inficerede lokale pakkecacher (-/.npm/_cacache, -/.cache/pip, -/.cargo/registry, -/Library/Caches/pnpm): Malware kan forgifte cachelagrede tarballs inde i din lokale pakkeadministrator-cache, så selv når du installerer en ren, legitim pakke i næste uge, pakker din pakkeadministrator den bagdørs-tarball ud fra din lokale cache.
3. Ændrede IDE-kernefiler (workbench.desktop.main.js): Visse VS-kode- og markørnyttelast patcher elektronen direkte asar arkiv eller workbench.desktop.main.js inde i IDE-applikationspakken, så bagdøren overlever fjernelse af alle udvidelser.
Sikkerhedskopier kun ren kildekode (verificeret via git status og git diff på en ren maskine) og personlige dokumenter, og udfør derefter en ren macOS Slet alt indhold og indstillinger / DFU-gendannelse, en ren Linux USB-installation eller en ren Windows 11 USB-installation.
Hærdning af din nye udviklerarbejdsstation mod fremtidige forsyningskædeangreb¶
Når du opsætter din nyligt slettede udviklerarbejdsstation, skal du erstatte statiske almindelige tekstfiler i din hjemmemappe med hardware-understøttede, flygtige og sandboxede arbejdsgange, så selvom en ondsindet afhængighed udføres i fremtiden, er der nul statiske hemmeligheder på disken, som den kan stjæle:
1. Deaktiver Automatisk Lifecycle Script Execution i Pakkeadministratorer¶
Konfigurer npm, pnpm, yarn, og pip så upålidelige afhængigheder kan ikke i det stille udføre shell-scripts under installationen:
- Node.js (npm / yarn / pnpm):
# Globally disable automatic preinstall/postinstall script execution in npm:
npm config set ignore-scripts true
pnpm.onlyBuiltDependencies ind package.json, laver pnpm v10+ betydeligt sikrere mod forsyningskædeorme end standard npm.)
- Python (pip / uv):
# Refuse to run arbitrary setup.py scripts from source distributions (.tar.gz); require binary wheels only:
export PIP_ONLY_BINARY=":all:"
npm config set before, pnpm minimumReleaseAge, eller Socket.dev / Artifactory firewall) for at afvise pakkeversioner offentliggjort inden for de sidste 48 til 72 timer.
2. Fjern almindelig tekst -/.ssh/id_ed25519, -/.aws/credentials, og .env Filer fra disk¶
- Flyt SSH-nøgler til en hardware YubiKey (
ed25519-sk) eller Secure Enclave / Biometric Agent: - Efterlad aldrig en ukrypteret eller adgangssætningsfri
-/.ssh/id_ed25519fil på disk. Generer enten en hardware-resident FIDO2 SSH-nøgle (ssh-keygen -t ed25519-sk -O verify-required) på en fysisk YubiKey (som kræver din fysiske fingerberøring på metalkontakten for hvergit pushellersshforbindelse), eller gem dine SSH-nøgler inde i 1Password SSH Agent / Secretive (macOS Secure Enclave), hvor den private nøgle aldrig eksisterer som en fil i-/.ssh/og hver signatur beder om Touch ID / Windows Hello. - Udskift statisk
-/.aws/credentials(AKIA...) med kortvarig SSO (aws sso loginelleraws-vault): - Slet alle permanente IAM brugeradgangsnøgler (
AKIA...). Brug AWS IAM Identity Center (aws sso login) med kort sessionsvarighed (1 til 4 timer) eller pak legitimationsoplysninger indeaws-vaultunderstøttet af macOS nøglering / Windows Credential Manager med biometriske prompter. - Erstat almindelig tekst
.envFiler med Runtime Secret Injection (1Password CLI op run,Doppler, elleraws-vault): - I stedet for at opbevare
STRIPE_SECRET_KEY=sk_live_...i klartekst.envfil at evtnode_modulesscript kanfs.readFileSync('.env'), butiksreferencer somSTRIPE_SECRET_KEY="op://Dev-Vault/Stripe/secret_key"og start din lokale udviklerserver viaop run --env-file=".env.template" -- npm run devefter godkendelse med Touch ID. - Brug Trusted Publishing (OIDC) i stedet for Long-Lived
-/.npmrcog-/.pypircTokens: - Opbevar aldrig et token, der kan publicere
-/.npmrceller-/.pypircpå din bærbare computer. Både PyPI og npm (via herkomst / OIDC) giver dig mulighed for udelukkende at udgive pakker fra isolerede GitHub Actions / GitLab CI Trusted Publishers ved hjælp af kortvarige OpenID Connect (OIDC)-tokens, hvilket betyder, at der aldrig eksisterer nogen publicerings-tokens på enhver vedligeholders bærbare computer.
3. Isoler ikke-pålidelige repositories og byg scripts inde i hærdede DevContainere eller VM'er¶
- Klon og kør aldrig en "Recruiter Take-Home Assessment", ukendt open source-projekt eller bounty-repo direkte på dit host-OS:
- Kør ukendte projekter inde i et GitHub Codespace, en engangs cloud-VM eller en lokal Docker DevContainer, der IKKE bind-monterer din værtshjemmemappe (
-), monteres IKKE/var/run/docker.sock, og sender kun et scoped, skrivebeskyttet Git-token, hvis det er nødvendigt. - Revision VS-kode/markørudvidelser og deaktiver automatiske opdateringer for ikke-verificerede udgivere:
- Husk, at Cursor, Windsurf og VSCodium trækker udvidelser fra OpenVSX Registry (
open-vsx.org) i stedet for Microsofts officielle Visual Studio Marketplace. Bekræft det nøjagtige udgivernavneområde og antal installationer, før du installerer en udvidelse, hold din liste over installerede udvidelser minimal, og afinstaller udvidelser, du ikke længere bruger aktivt.
Ofte stillede spørgsmål¶
Løber npm install --ignore-scripts fuldstændig beskytte mig mod en ondsindet npm-pakke?¶
Løb npm install --ignore-scripts blokerer den mest almindelige forsyningskædeangrebsvektor: automatisk udførelse af forudinstaller, installere, og efterinstallation shell-kommandoer defineret inde package.json på monteringstidspunktet. Det beskytter dig dog ikke, når du rent faktisk udfører pakkens JavaScript-kode (f.eks. når du kører npm køre dev, npm test, spøg, webpack, eller vite, eller når din IDE's ESLint/TypeScript-plugin indlæser et ondsindet plugin fra node_modules). Fordi Node.js som standard ikke har noget runtime-filsystem eller netværkssandbox, kan enhver kode, der importeres under dit bygge- eller testtrin stadig læses -/.aws og -/.ssh medmindre du isolerer buildet inde i en container eller bruger Nodes eksperimentelle tilladelsesmodel (node --tilladelse).
Jeg åbnede et mistænkeligt lager i VS Code fra en rekrutterer på LinkedIn, og jeg klikkede på "Ja, jeg stoler på forfatterne", før jeg indså, at det var en fidus. Kørte koden, selvom jeg aldrig kørte npm install?¶
Ja, du må antage, at vilkårlig kode blev udført i det nøjagtige sekund, du klikkede på "Ja, jeg stoler på forfatterne." I Visual Studio Code and Cursor tillader tildeling af Workspace Trust øjeblikkeligt depotets .vscode/tasks.json fil til at køre baggrundsskalopgaver konfigureret med "runOn": "mappeÅben", tillader arbejdsområde-defineret .vscode/settings.json at pege sprogservere (såsom Python, TypeScript, ESLint eller Rust Analyzer) til ondsindede eksekverbare stier inde i depotmappen og udløser automatisk udførelse af bygge.rs i Rust-projekter. Afbryd straks maskinen fra netværket, og følg fase 1 for at rotere alle legitimationsoplysninger.
Hvis den ondsindede npm- eller PyPI-pakke kørte inde i en Docker-container eller DevContainer, er min værts-Mac eller Windows-laptop sikker?¶
Det afhænger helt af, hvilke volumenmonteringer, miljøvariabler og sockets der blev sendt ind i den beholder. Standard DevContainer skabeloner og lokale docker-compose.yml opsætninger videresender ofte automatisk din vært SSH_AUTH_SOCK (tillader malware inde i containeren at bruge din værts SSH-nøgler til at oprette forbindelse til fjernservere eller push til GitHub), bind-mount -/.aws, -/.gitconfigeller dit arbejdsområde .env filer, eller monter værtens Docker-socket (/var/run/docker.sock), som giver øjeblikkelig root-adgang til hele værtsoperativsystemet. Undersøg din devcontainer.json og havnearbejder eftersyn monteres for at se præcis, hvilke værtsressourcer der blev eksponeret inde i containeren.
Hvordan kan jeg kontrollere, om en pakkeversion, jeg er ved at installere, har skjulte installationsscripts eller sløret telemetri, før jeg installerer den?¶
Inden du installerer en ukendt npm-, PyPI-, Go- eller Rust-pakke, skal du inspicere den på Socket.dev eller Deps.dev (af Google Open Source Insights), som statisk analyserer hver version for installationsscripts, netværksanmodninger, filsystemadgang,eval() sløring og vedligeholderændringer. Du kan også løbe npm view i din terminal for at inspicere dens livscyklusscripts uden at downloade eller udføre pakken.
Kilder tjekket¶
- Cybersikkerheds- og Infrastruktursikkerhedsagentur (
CISA) & National Security Agency (NSA) (USA): Sikring af softwareforsyningskæden: Anbefalet praksis for udviklere og reaktion på kompromitterede afhængigheder. - GitHub Security Lab & npm Security Advisories: Responser på kompromitterede npm-pakker, ondsindet
.vscode/tasks.jsonDepotfælder (Contagious Interview), og GitHub Actions Workflow Secret Exfiltration Mitigations. - Python Packaging Authority (
PyPA) & PyPI-sikkerhed: Håndtering af ondsindet hjul.pthFiler,setup.pyVilkårlig udførelse og betroet udgivelse (OIDC) Implementeringsvejledninger. - Open Worldwide Application Security Project (
OWASP): Software Supply Chain Security Cheat Sheet & CI/CD Security Top 10 Risici. - Nationalt Cybersikkerhedscenter (
NCSC) (Storbritannien): Forsvar af udviklermiljøer og skystyringsplaner mod målrettet indsamling af legitimationsoplysninger.
Relaterede guider¶
- Session-cookiekapring, infostealere og tilbagekaldelse af tokens
- Cryptocurrency tegnebogsdræn og seed phrase kompromis
- Ondsindede browserudvidelser, udklipsholdere og fjernelse af adware
- Falske jobtilbud-svindel, svindel med udstyrstjek og identitetstyveri ombord
- Malware, ransomware og spyware infektion
- Nødnumre efter land