Kompromi Workstation pamekar: Depéndensi jahat atanapi IDE Extension Response¶
Nomer darurat béda-béda dumasar nagara. Kaca ieu nganggo 911, nomer pikeun Amérika Serikat sareng Kanada. Seueur nagara sanés nganggo 112, 999, atanapi nomer sanés. Panggihan nomer pikeun nagara anjeun.
Ngajalajah yén pakét parangkat lunak anu anjeun pasang liwat npm install, pip install, cargo build, gem install, atawa go get, atawa Visual Studio Code anyar diropéa, Kursor, atawa extension JetBrains IDE, mangrupakeun typosquat jahat, muatan kabingungan dependensi, atawa release hulu ngabajak ngagambarkeun darurat infrastruktur kritis. Teu kawas komputer konsumen standar, insinyur software, arsiték DevOps, atawa workstation élmuwan data nahan konci cryptographic langsung ka lingkungan awan produksi, repositories kode sumber, pendaptaran wadahna, pipelines CI / CD, sarta database customer. Nalika jahat preinstall atawa postinstall naskah jero package.json, a weaponized setup.py dina kabayang Python, atanapi compromised .vsix extension executes on laptop anjeun, éta ngajalankeun kalawan hak husus pamaké pinuh anjeun sarta langsung harvests -/.aws/credentials, -/.ssh/id_ed25519, -/.npmrc, -/.pypirc, -/.kube/config, lokal .env file, macOS Keychain atanapi Linux libsecret éntri, sareng cookies sési browser aktip dina sababaraha detik.
Upami anjeun nembé sadar yén anjeun ngalaksanakeun katergantungan open-source anu jahat, dikloning sareng ngawangun gudang senjata (sapertos proyek wawancara téknis palsu ti scam Recruiter), atanapi masang ekstensi IDE anu di-trojan, unggal detik mesin anjeun tetep nyambung ka jaringan ngamungkinkeun payload ka pangsi kana awan perusahaan anjeun atanapi nyebarkeun cacing anu nyebarkeun diri nganggo token pendaptaran pakét anjeun. Upami seranganna kalebet pemerasan, ancaman fisik, atanapi gangguan infrastruktur umum anu kritis, nelepon nomer darurat lokal anjeun (911 di Amérika Serikat sareng Kanada, 112 sakuliah Uni Éropa, 999 di Inggris) atanapi konsultasi ka internasional kami nomer darurat diréktori. Turutan panyawat ieu, triase forensik, sareng prosedur rotasi konci kriptografi langsung.
Laksanakeun ieu ayeuna¶
- **Pareuman sadaya sambungan jaringan dina workstation pamekar geuwat (pareuman Wi-Fi, cabut Ethernet, sarta maéhan VPN aktip atawa torowongan SSH), tapi Entong mareuman atawa reboot mesin acan **: Unplugging Ethernet jeung toggling Wi-Fi off ngeureunkeun cangkang sabalikna aktip, C2 lantera, atawa cacing otomatis tina ngagunakeun tokens lokal Anjeun pikeun nyorong atawa exfiltrate commits jahat. Tetep mesin diaktipkeun dina kaayaan offline (atanapi ngagantungkeun éta ngan saatos nyandak daptar prosés anu teu stabil) ku kituna anjeun tiasa mariksa prosés anak anu ngajalankeun, socket jaringan kabuka, riwayat cangkang, sareng anu mana
.envjeung file credential resided dina disk dina momen palaksanaan. - ** Anggo alat anu misah sareng bersih (sapertos telepon sélulér anjeun dina data sélulér atanapi laptop anu teu kacekel) pikeun ngabéjaan Pusat Operasi Kaamanan (SOC) anjeun sareng cabut sési Single Sign-On (SSO) sareng Cloud IAM anjeun**: Ulah kantos lebet kana AWS, GCP, Azure, GitHub, atanapi Okta ti workstation anu kainféksi pikeun muterkeun kenop. Mun hiji maling memori-nyicingan, extension IDE jahat, atawa cangkang hook ningali terminal anjeun sarta browser, sagala token anyar nu dihasilkeun dina mesin eta bakal langsung direbut.
- Cabut sareng puterkeun token pamekar radius-ledakan tinggi anjeun dina urutan prioritas anu ketat dina 15 menit munggaran:
- Prioritas 1 (Cloud & Kubernetes): Nonaktipkeun sadaya Konci Aksés IAM AWS lokal (
AKIA...), cabut Kapercayaan Default Aplikasi Google Cloud (gcloud auth application-default revoke), ngabatalkeun token Azure CLI (az account clear+ Entra ID sési panyabutan), sarta muterkeun Kuberneteskubeconfigsertipikat klien atanapi token akun jasa. - Prioritas 2 (Kode Sumber & CI/CD): Pupus sadaya konci publik GitHub, GitLab, jeung Bitbucket SSH, Token Aksés Pribadi (
ghp_...,github_pat_...,glpat-...), sareng token OAuth CLI (-/.config/gh/hosts.yml), sareng pariksa setélan webhook gudang sareng Rahasia GitHub Actions / GitLab CI. - Prioritas 3 (Paket Registries & Wadah): Cabut otomatisasi npm sareng nyebarkeun token (
-/.npmrc), token API PyPI (-/.pypirc), Docker Hub / GHCR / token login ECR (-/.docker/config.json), sareng token Terraform Cloud (-/.terraform.d/credentials.tfrc.json). - Parios npm, PyPI, Cargo, sareng GitHub AYEUNA pikeun pariksa malware henteu acan nganggo token lokal anjeun pikeun nyebarkeun versi bungkusan anjeun sorangan anu katépa ku cacing atanapi nyorong komitmen jahat: Payloads ranté suplai modern (sapertos
ua-parser-js,coa,rc,ctx,lottie-player, jeungultralyticscompromises) otomatis parse pamekar korban urang-/.npmrc,-/.pypirc, jeung-/.gitconfigpikeun geuwat nyebarkeun versi patch backdoored tina unggal open-source atanapi pakét internal anu dijaga ku pamekar, atanapi jieun alur kerja GitHub Actions anu disumputkeun dina repositori pamekar. - Scan unggal diréktori proyék dina workstation pikeun ngawangun inventory lengkep kakeunaan
.envfile, string sambungan database, jeung konci API hardcoded: Sateuacan mupus workstation, jalankeun skrip offline dina mesin terasing pikeun daptar unggal.env,.env.local,terraform.tfstate, jeungapplication.ymlfile dina hard drive anjeun ku kituna anjeun tiasa muterkeun unggal rahasia pihak katilu (Stripe, Twilio, SendGrid, OpenAI, Anthropic, Datadog, Slack, Postgres, MongoDB, sareng kredensial Redis) anu tiasa dibaca ku akun pangguna anjeun. - Tutup sadaya sesi browser sareng sambungan dompét hardware: Kusabab pamekar kompromi sering nyebarkeun infostealer komoditi (sapertos Lumma, RedLine, atanapi Atomic macOS Stealer) sareng pemanen kredensial khusus pamekar, turutan kami. sési cookie ngabajak na infostealer token pituduh panyabutan jeung, lamun ngalakukeun ngembangkeun Web3 atawa nyekel aset digital, laksana kami dompet cryptocurrency solokan jeung frase cikal pituduh kompromi.
Danger
** Naha lumpat npm uninstall <package> atawa pip uninstall <package> TEU ngabersihan workstation anjeun**: Dina Node.js (npm, yarn, pnpm) jeung Python (pip) ékosistem, kode jahat ampir henteu kantos ngantosan dugi ka anjeun import atawa require() perpustakaan dina kode aplikasi Anjeun. Gantina, panyerang nempatkeun payload di jero pakét siklus hirup kait (preinstall, install, atawa postinstall di package.json, atanapi palaksanaan tingkat luhur di jero setup.py salila wangunan roda distribusi sumber). Momen anjeun mencet Enter asup npm install atawa pip install, skrip cangkang sawenang-wenang penyerang atanapi binér dieksekusi dina sistem operasi anjeun, nyalin -/.ssh, -/.aws, jeung .env file ka server éksternal, sarta mindeng nyuntik backdoor pengkuh kana -/.bashrc, -/.zshrc, crontab, atawa -/Library/LaunchAgents. Ngahapus pakét saatosna ngan ngahapus folder di jerona node_modules atawa site-packages bari ngantepkeun konci anu dipaling dina panangan panyerang sareng mékanisme kegigihan anu dijalankeun dina OS anjeun.
Tangkal kaputusan: pamekar workstation suplai-ranté kompromi triage¶
Anggo alur kerja réspon kajadian ieu pikeun ngandung radius ledakan dina lingkungan pangembangan pribadi anjeun sareng infrastruktur perusahaan produksi:
flowchart TD
Detect["Disangka jahat npm / PyPI / Paket Kargo, Ekstensi IDE Trojanized, atanapi Repo Recruiter Palsu Dieksekusi"] --> Isolate["Léngkah 1: Langsung Pegatkeun Sambungan Wi-Fi & Ethernet Workstation (Tetep Mesin Diaktipkeun pikeun Triage Offline)"]
Isolate --> ScopeCheck{"Naha Palaksanaan Kajadian dina Host OS atanapi Inside Isolated Container / VM?"}
ScopeCheck -->|"Host OS (Mac / Linux / Windows / WSL2)"| FullCompromise["Anggap 100% tina Diréktori Imah (-/.aws, -/.ssh, -/.npmrc, .env, Browser Cookies) Dieksfiltrasi"]
ScopeCheck -->|"DevContainer / Docker"| MountCheck["Pariksa Volume Mounts (-v -/.ssh, -v -/.aws, Docker Socket /var/run/docker.sock, atawa Host Network)"]
MountCheck --> FullCompromise
FullCompromise --> CleanDevice["Léngkah 2: Tina Alat Bersih anu Kapisah, Waspada SOC & Cabut Cloud IAM, SSO, GitHub/GitLab, sareng Token Pendaptaran"]
CleanDevice --> WormCheck["Léngkah 3: Audit GitHub Commits, CI/CD Workflows, sareng npm/PyPI Published Versions for Automated Worm Propagation"]
WormCheck --> OfflineAudit["Léngkah 4: Dina Workstation Offline, Inventory Sadaya File .env, File Terraform State, sareng Persistence Backdoors"]
OfflineAudit --> RotateEnv["Léngkah 5: Rotasikeun Unggal Sandi Pangkalan Data, Rahasia Webhook, Konci Signing GPG, sareng Konci API Dipendakan dina .env / File State"]
RotateEnv --> RebuildOS["Léngkah 6: Hapus Workstation via Clean OS Reinstall -> Laksanakeun SSH Keys, OIDC, sareng --ignore-scripts."]
Ngartos kumaha pamekar suplai-ranté sareng IDE vektor ngaéksekusi¶
Serangan modern ngalawan insinyur software nargétkeun opat permukaan palaksanaan anu béda dina workstation. Ngidentipikasi vektor mana anu pencét mesin anjeun nyarioskeun ka anjeun naon hak istimewa sareng jalur file anu diaksés ku payload:
1. Kait Daur Kahirupan Paket Ngabahayakeun (npm, pnpm, yarn, pip, cargo, gem)¶
- Node.js (
package.jsonskrip): Sacara standar, ngajalankeunnpm installotomatis executes sagala paréntah cangkang didefinisikeun dina"preinstall","install", atawa"postinstall"widangpackage.json, Henteu ngan pikeun pakét tingkat luhur anu anjeun ketik, tapi pikeun unggal kagumantungan transitif dina tangkal. Panyerang ngagunakeun typosquatting (misalna,reqeusts,crossenv,lodahs), kabingungan kagumantungan (medarkeun pakét umum dina npm atanapi PyPI kalayan nami anu sami sareng nomer vérsi anu langkung luhur, sapertos99.99.9, salaku pakét swasta internal perusahaan anjeun), atanapi pangambilalihan akun pangropéa pikeun ngagentos hiji garis sapertos"postinstall": "node index.js"kana pakét. - Python (
setup.pyjeung.pthfile): Irahapipmasang distribusi sumber (sdist.tar.gz), éta executessetup.pykalawan pinuh hak istimewa juru Python. Malah nalika masang roda binér anu tos disusun (.whl) anu henteu ngalaksanakeunsetup.pysalila instalasi, panyerang kaasup jahat **.pth(konfigurasi jalur) file ** turun langsung kanasite-packages/. Sakur garis di jero a.pthfile dimimitian kuimportotomatis dieksekusi ku juru Python unggal waktospythondimimitian dina sistem éta. - ** Karat (
build.rs) jeung Go**: Dina Rust, Cargo otomatis compiles jeung executesbuild.rshenteu ngan salilacargo buildatawacargo run, tapi langsung pas **rust-analyzer(di jero VS Code atanapi IntelliJ) ** muka folder proyék pikeun jinis indéks. Ngan muka gudang Rust kloning di IDE anjeun kalawanrust-analyzerdiaktipkeun executes kode wenang di jerobuild.rssateuacan anjeun ngetik paréntah terminal.
2. Ekstensi IDE jahat atanapi Dibajak (VS Code Marketplace, OpenVSX, JetBrains)¶
- Visual Studio Code, Cursor, Windsurf, sareng ekstensi VSCodium (
.vsix) dijalankeun dina prosés Node.js Extension Host utama dina workstation anjeun kalawan **enol sandboxing **. Sakur ekstensi anu dipasang ngagaduhan aksés maca / nyerat lengkep ka sadaya sistem file anjeun, tiasa nyababkeun prosés anak jempé (child_process.exec), tiasa maca unggal panyangga editor kabuka sareng.envfile, sarta bisa Hook terminal terpadu Anjeun. - Aktor ancaman rutin nyebarkeun ekstensi téma palsu (
Darcula Official), asisten coding AI palsu, atanapi typosquatted linter / extension Prettier anu cicingeun ngaunduh infostealer tahap kadua atanapi cangkang ngabalikkeun nalika IDE diluncurkeun.
3. Weaponized Git Repositories & IDE Workspace Auto-Execution ("Recruiter Palsu / Take-Home Test" Perangkap)¶
- Grup anu disponsoran nagara Koréa Kalér (
Contagious Interview/Lazarus Group) jeung aktor ancaman crypto-fokus rutin ngadeukeutan pamekar on LinkedIn, Upwork, atawa GitHub posing salaku recruiters atanapi CTOs maturan kalungguhan jauh-mayar tinggi. Aranjeunna naroskeun ka pamekar pikeun clone repositori Bitbucket atanapi GitHub pikeun "penilaian debugging 15 menit" atanapi "review MVP kaulinan Web3." - Repositories ieu ngandung perangkap palaksanaan disumputkeun anu memicu boh nalika dibuka dina IDE atanapi nalika ngawangun:
.vscode/tasks.jsonkalawan"runOn": "folderOpen": Sacara otomatis ngajalankeun skrip cangkang latar saatos anjeun klik "Leres, kuring percanten ka pangarang" dina Kode VS.- ** Jahat
.git/hooks/atawa.gitmodules**: Eksploitasi konfigurasi submodul Git atanapi ngawangun skrip (Makefile,webpack.config.js,next.config.js,vite.config.ts) nu ngamuat obfuscated payloads JavaScript (sering padded kalawan rébuan spasi kaluar-layar pikeun nyumputkeun dina kolom 2.000+) nelepon hiji server C2 éksternal.
Fase 1: Lengkep Kapercayaan Pamekar & Matriks Rotasi Rahasia¶
Ngagunakeun laptop sekundér bersih atanapi smartphone, jalankeun sacara sistematis ngaliwatan inventaris kredensial pamekar 12-titik ieu. Anggap file naon waé anu tiasa dibaca ku akun pangguna OS non-root anjeun (chmod 600 atawa 644 milik pamaké anjeun) diunggah ka server panyerang dina 3 detik saatos palaksanaan payload.
| Kategori Kapercayaan | Jalur File Lokal Persis Dipanén dina Workstation | Panyabutan Wajib & Aksi Rotasi (Ti Alat Beresih) |
|---|---|---|
| 1. AWS IAM & SSO | -/.aws/credentials-/.aws/config-/.aws/sso/cache/*.json-/.aws/cli/cache/*.json |
1. Dina AWS IAM Console, geuwat Pareuman sareng Pupus sadayana Konci Aksés statik (AKIA...) disimpen dina éta laptop.2. Dina ** AWS IAM Identity Center (SSO) **, nyabut sesi pamaké aktip tur mupus tokens alat klien OIDC didaptarkeun. 3. Inok ** AWS CloudTrail ** keur GetCallerIdentity, CreateUser, CreateAccessKey, AssumeRole, ListBuckets, jeung SecretsManager:GetSecretValue telepon anu asalna tina IP anu teu biasa atanapi agén pangguna (Boto3, aws-cli, Go-http-client). |
| 2. Google Cloud (GCP) & 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. Pindah ka myaccount.google.com/permissions sareng cabut aksés pikeun Google Cloud SDK sareng Firebase CLI.2. Dina GCP Console > IAM & Admin > Service Accounts, pupus sagala konci JSON Account Service ( private_key_id) anu diundeur kana hard drive workstation.3. Mariksa **Cloud Audit Logs ** pikeun beungkeutan IAM teu sah atawa kreasi Compute Engine. |
| 3. Microsoft Azure & ID Entra | -/.azure/msal_token_cache.bin-/.azure/accessTokens.json-/.azure/azureProfile.json |
1. Gaduh hiji Entra ID Admin ngajalankeun Revoke-MgUserSignInSession -UserId <your-user-id> pikeun ngabatalkeun sadaya Token Refresh sareng Token Refresh Primer (PRT).2. Pupus sagala Rahasia klien Principal Service atawa sertipikat disimpen lokal. |
| 4. Kubernetes & Helm | -/.kube/config-/.kube/cache/-/.config/helm/registry/config.json |
1. Lamun -/.kube/config ngandung sertipikat klien statik (client-certificate-data / client-key-data) atawa umur panjang ServiceAccount bearer tokens, cabut sertipikat via klaster CA anjeun (CSR / RBAC panyabutan) atanapi mupus tur jieun deui ServiceAccount rusiah geura.2. Inok Kubernetes API Server log audit pikeun exec, pods, atawa secrets daptar / meunang kecap gawe. |
| 5. GitHub, GitLab & Bitbucket | -/.ssh/id_ed25519, -/.ssh/id_rsa-/.config/gh/hosts.yml-/.git-credentials, -/.netrc-/.gitconfig |
1. Pindah ka github.com/settings/keys (sareng GitLab / Bitbucket equivalents) sareng ** Pupus ** konci umum SSH sareng konci commit-signing GPG / SSH tina mesin anu kainféksi.2. Pindah ka github.com/settings/tokensjeunggithub.com/settings/applications pikeun nyabut sadaya Token Aksés Pribadi (ghp_, github_pat_), aplikasi OAuth (GitHub CLI, VS Code, Git Credential Manager), sareng sési wéb aktip.3. Pariksa Log Kaamanan ( github.com/settings/security-log) keur repo.clone, org.Invite_member, atawa hook.create. |
| 6. GPG & Konci Signing Kode | -/.gnupg/private-keys-v1.d/-/Library/Keychains/login.keychain-db (ID pamekar Apple / .p12) |
1. Upami konci pribadi GPG anjeun disimpen dina disk tanpa kartu pinter hardware (YubiKey OpenPGP) sareng frasa sandina disimpen dina gpg-agent atawa diketik anyar, ngahasilkeun sarta nyebarkeun ** GPG Panyabutan sertipikat ** geuwat tur cabut konci GPG ti GitHub / GitLab.2. Cabut sagala Apple pamekar diékspor .p12 atanapi Android Keystore .jks sertipikat kode-signing disimpen dina mesin. |
| 7. Registries Paket (npm, PyPI, Cargo, RubyGems, NuGet) | -/.npmrc (_authToken=...)-/.pypirc-/.cargo/credentials.toml-/.gem/credentials |
1. Asup ka ** npmjs.com > Token Aksés **, pypi.org > Setélan akun > token API, crates.io > Setélan Akun > Token API, jeung rubygems.org, sarta Cabut kabeh token aktip geuwat. 2. Audit bungkusan anjeun anu diterbitkeun (tingali Fase 2 di handap) pikeun ngonfirmasi yén panyerang henteu nyorong sékrési backdoored dina sababaraha jam ka pengker. |
| 8. Docker & Container Registries | -/.docker/config.json (Dasar 64 auths pikeun Docker Hub, GHCR, ECR, GCR, Quay) |
1. Inget éta "auth" di -/.docker/config.json (lamun henteu nganggo credsStore: osxkeychain atawa wincred) ngan ** unencrypted Base64 username:password_or_token**.2. Cabut Token Aksés Pribadi dina Docker Hub ( hub.docker.com/settings/security), GitHub Container Registry, sareng Quay.io. |
| 9. Infrastruktur-sakumaha-Kode (Terraform / Pulumi / Ansible Vault) | -/.terraform.d/credentials.tfrc.json**/terraform.tfstate (File kaayaan lokal)-/.pulumi/credentials.json-/.vault-token |
1. Cabut Terraform Cloud / token API pamaké perusahaan sareng token HashiCorp Vault. 2. KRITIS: Lokal mana wae terraform.tfstate file dina disk anjeun ngandung **sandi téks polos, kredensial master RDS, konci TLS swasta, sareng konci rusiah IAM ** pikeun unggal sumber anu diurus ku nagara éta. Puterkeun unggal rusiah anu dirujuk di jero lokal .tfstate file. |
| 10. Database & Caching Sajarah CLI | -/.psql_history, -/.pgpass-/.mysql_history, -/.my.cnf-/.rediscli_history-/.mongodb/mongosh/DBeaver / TablePlus / DataGrip configs |
1. manajer database GUI (TablePlus, DBeaver, DataGrip, Postico, pgAdmin, MongoDB Kompas) nyimpen énkripsi atanapi obfuscated kecap akses database lokal nu stealers rutin ngadekrip. 2. Rotasikeun kecap akses pamaké database pikeun sagala pementasan atawa produksi database diaksés via VPN, bastion, atawa IP publik ti workstation Anjeun. |
11. Aplikasi .env File & Konci SaaS Pihak-katilu |
**/.env, **/.env.local, **/.env.production, **/.env.development |
Puterkeun unggal konci API anu disimpen di jero proyék lokal .env file: Belang (sk_live_...), OpenAI (sk-...), Antropik (sk-ant-...), Twilio, SendGrid, AWS SES, Slack Bot Token (xoxb-...), Discord Bot Token, Datadog, Sentry, Supabase (service_role), Firebase Admin, sareng Rahasia nandatanganan JWT. |
| 12. SSH Dipikawanoh Host & Bastion Jump Server | -/.ssh/config-/.ssh/known_hosts-/.zsh_history, -/.bash_history |
Panyerang geuwat parse -/.ssh/config jeung -/.zsh_history pikeun manggihan unggal IP server internal, bastion host, sarta ngaran pamaké anjeun nyambung ka, lajeng nganggo dipaling Anjeun -/.ssh/id_ed25519 konci pikeun asup langsung kana éta server. Hapus konci publik heubeul anjeun tina -/.ssh/authorized_keys dina unggal server jauh Linux Ubuntu jeung pariksa /var/log/auth.log dina éta server pikeun logins SSH teu sah. |
Fase 2: Mariksa Panyebaran Cacing-Chain Otomatis (GitHub, CI/CD & Registries Paket)¶
Beda sareng malware umum, payload anu ditargetkeun ku pamekar sacara khusus diprogram pikeun nyebarkeun diri kana ranté suplai parangkat lunak dina sababaraha detik saatos badarat di workstation anjeun. Sateuacan anjeun uih deui ka beberesih laptop anjeun, paké alat anu bersih pikeun pariksa yén kredensial anu dipaling anjeun henteu acan dianggo pikeun nginféksi tim anjeun atanapi pangguna hilir anjeun:
- Audit GitHub / GitLab Repositories anjeun pikeun Silent Backdoors sareng Alur Kerja Jahat:
- **Cék
.github/workflows/*.ymldi sadaya repositori anu anjeun gaduh aksés nyerat **: Cacing ranté suplai panganyarna (Shai-Hulud,tj-actions/changed-filescompromises, jeungultralyticsexploits) otomatis nganggo token pamekar anu dipaling pikeun ngalakukeun alur kerja GitHub Actions anu jahat atanapi ngarobih alur kerja anu tos aya pikeun dibuang${{ toJSON(secrets) }}(exfiltrating rusiah deployment produksi organisasi anjeun ti runners GitHub Actions). - Verifikasi komitmen panganyarna ku panulis sareng stempel waktu committer: Émut yén saha waé tiasa ngamalkeun nami pangarang Git sareng stempel waktos (
git commit --date="..." --author="..."). Dina GitHub, pariksa Push Events dina gudang Activity view or organization Audit Log (repo.push), anu ngarékam cap waktu sisi-server anu leres sareng token auténtikasi anu pasti (oauth_application_idatawassh_key_fingerprint) anu nyorong kodeu. - Cék Repository Webhooks, Deploy Keys, and Collaborators: Tingali dina Setélan > Webhooks, Setélan > Deploy key, sarta Setélan > Collaborators and teams dina repositori anjeun pikeun mastikeun yén panyerang henteu nambahkeun tombol deployment baca/tulis terus-terusan atawa webhook ngarah ka server éksternal.
- Audit npm, PyPI, Cargo, sareng Docker Hub pikeun Kaluaran Paket Teu Sah:
- Upami anjeun mangrupikeun pangropéa atanapi kolaborator dina pakét umum atanapi pribadi dina npm, PyPI, RubyGems, atanapi Crates.io, pariksa tab Vérsi / Rilis Rilis pikeun unggal pakét dina akun anjeun.
- Upami versi patch (contona,
1.4.2sanggeus release sah panungtungan anjeun1.4.1) dipedar dina jangka waktu kompromi workstation anjeun, geuwat deprecate atawa cabut vérsi éta (npm deprecate <pkg>@<version> "CRITICAL: Compromised version, do not use"atanapi yank dina PyPI) sareng ngahubungi npm Rojongan (security@npmjs.com/ GitHub Security) atanapi PyPI Security (security@pypi.org) pikeun ngahapus artefak jahat sareng versi anu kapangaruhan karantina. - ** Pariksa Rahasia TruffleHog / Git Clone Exfiltration **:
- Maling ranté suplai sering nyauran GitHub/GitLab API nganggo token anu dipaling anjeun pikeun ngaklon unggal gudang organisasi swasta anu anjeun gaduh aksés sareng ngajalankeun scanner rahasia otomatis (
TruffleHogatawaGitleaks) ngalawan sakabéh sajarah komitmen perusahaan anjeun. Upami organisasi anjeun kantos ngahaja ngalakukeun rusiah kana sajarah Git gudang pribadi tanpa muterkeunana, putarkeun rusiah sajarah éta ayeuna.
Fase 3: Triage Forensik Offline dina Workstation anu Dikompromi¶
Kalayan workstation anjeun dipegatkeun lengkep tina Wi-Fi sareng Ethernet, buka jandela terminal pikeun ngalakukeun triage offline. Tujuan anjeun dua kali: (A) maluruh unggal .env jeung file konfigurasi dina disk sangkan anjeun terang nu Rahasia muterkeun, sarta (B) bukti néwak naon paket jahat atawa extension sabenerna dieksekusi saméméh anjeun ngusap sistem operasi.
Lengkah 1: Inventaris Unggal Kakeunaan .env, Private Key, sareng State File dina Disk Anjeun¶
Jalankeun paréntah baca-hijina ieu dina stasiun kerja macOS, Linux, atanapi WSL2 offline anjeun pikeun ngahasilkeun daptar pariksa lengkep unggal file lokal anu ngandung rahasia anu tiasa dibaca ku malware:
# 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
Tinjauan -/exposed_secrets_inventory.txt baris ku garis tur muka unggal .env atawa .tfstate file offline ku kituna anjeun bisa muterkeun unggal konci API tunggal, sandi database, sarta webhook rusiah didaptarkeun di jero aranjeunna tina alat bersih Anjeun.
Lengkah 2: Mariksa Naon Paket Ngabahayakeun atanapi Ekstensi IDE Dieksekusi¶
Sateuacan ngahapus polder anu ngalanggar, pariksa payload anu pasti sareng pariksa dimana éta dipasang persistence dina sistem operasi anjeun:
# 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"
Léngkah 3: Milarian Persistensi Tingkat OS Diturunkeun ku Pangembang Malware (macOS, Linux, sareng Windows)¶
Ketergantungan jahat sareng repositori "Recruiter palsu" sering ngaleungitkeun agén latar tukang anu nyamar salaku tukang ngamutahirkeun sistem, daemon Node, atanapi indéks Spotlight:
- Dina 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" - Di 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" - Dina Windows (Native or Host of WSL2):
- Émut yén skrip npm atanapi Python jahat anu ngajalankeun di jero WSL2 (Windows Subsystem for Linux) tiasa langsung ngaksés sadaya host Windows anjeun.
C:\ngajalankeun via/mnt/c/Users/<username>/sareng tiasa nganuhunkeunpowershell.exeatawacmd.exelangsung ti jero cangkang Linux pikeun nginféksi pendaptaran host Windows (HKCU:\Software\Microsoft\Windows\CurrentVersion\Run), Tugas Dijadwalkeun, sareng Chrome/EdgeCookiespangkalan data. - Jalankeun audit kegigihan Windows PowerShell lengkep dina kami sési cookie ngabajak jeung pituduh infostealer jeung urang malware, ransomware, sareng pituduh inféksi spyware.
Fase 4: Naha Anjeun Kudu Ngusap jeung Ngawangun deui Workstation Pangembang¶
Sanaos anjeun mendakan sareng ngahapus anu jahat node_modules folder, éta .vsix extension, sarta rogue a -/Library/LaunchAgents plist, ** anjeun pernah kudu neruskeun migunakeun workstation pamekar compromised pikeun rékayasa produksi tanpa ngajalankeun OS bersih ngusap tur reinstall **.
Payloads anu disasarkeun ku pamekar canggih ngarobih binér anu sah atanapi file konfigurasi dina sistem anjeun anu henteu aya panyeken antipirus anu nunjukkeun bahaya:
1. ** Binari CLI Lokal Trojanized (git, ssh, sudo, aws, kubectl, docker): A payload ngajalankeun handapeun akun pamaké anjeun teu bisa nimpa /usr/bin/ssh tanpa sudo, jadi gantina eta pakait skrip wrapper di -/.local/bin/ssh, -/bin/git, atawa -/bin/sudo sarta prepends nu diréktori ka Anjeun PATH. Dina waktos salajengna basa Anjeun ngetik sudo atawa ssh -i Saatos nyambungkeun deui ka internét, bungkusna cicingeun nyegat kecap akses atanapi frasa sandi anjeun sareng teraskeun ka panyerang sateuacan nyauran binér nyata.
2. ** Katépa Caches Paket Lokal (-/.npm/_cacache, -/.cache/pip, -/.cargo/registry, -/Library/Caches/pnpm): Malware tiasa ngaracun tarballs sindangan di jero cache manajer pakét lokal anjeun ku kituna sanajan anjeun masang pakét anu bersih sareng sah minggu payun, manajer pakét anjeun ngabongkar tarball anu ditutupan tina cache lokal anjeun.
3. Dirobah IDE Core Files (workbench.desktop.main.js): Tangtu VS Code jeung Kursor payloads langsung patch éléktron asar arsip atawa workbench.desktop.main.js jero kebat aplikasi IDE jadi backdoor salamet nyoplokkeun sadayana ekstensi.
Cadangan ngan kode sumber murni (diverifikasi via git status jeung git diff dina mesin bersih) sareng dokumén pribadi, teras laksanakeun ** macOS bersih Hapus Sadayana Eusi sareng Setélan / DFU Mulangkeun **, ** pamasangan USB Linux bersih **, atanapi bersih Windows 11 pamasangan USB.
Hardening Workstation Pangembang Anyar Anjeun Ngalawan Serangan Supply-Chain Kahareup¶
Nalika nyetél workstation pamekar anjeun anu nembé dihapus, gentos file plaintext statik dina diréktori bumi anjeun sareng alur kerja anu didukung hardware, ephemeral, sareng sandboxed supados sanaos katergantungan jahat dieksekusi di hareup, aya enol rusiah statik dina disk pikeun maok:
1. Nonaktipkeun Palaksanaan Skrip Lifecycle Otomatis dina Manajer Paket¶
Konpigurasikeun npm, pnpm, yarn, jeung pip jadi kagumantungan anu teu dipercaya teu tiasa cicingeun ngaéksekusi skrip cangkang nalika instalasi:
- Node.js (npm / yarn / pnpm):
# Globally disable automatic preinstall/postinstall script execution in npm:
npm config set ignore-scripts true
pnpm.onlyBuiltDependencies di package.json, nyieun pnpm v10+ sacara signifikan langkung aman ngalawan cacing ranté suplai tibatan standar 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, atawa Socket.dev / Artifactory firewall) pikeun nampik versi pakét diterbitkeun dina panungtungan 48 nepi ka 72 jam.
2. Ngaleungitkeun Plaintext -/.ssh/id_ed25519, -/.aws/credentials, jeung .env File tina Disk¶
- ** Pindahkeun SSH Keys kana Hardware YubiKey (
ed25519-sk) atanapi Enclave Aman / Agen Biometrik**: - Ulah ninggalkeun unencrypted atanapi passphrase-kurang
-/.ssh/id_ed25519file dina disk. Boh ngahasilkeun ** konci FIDO2 SSH warga hardware (ssh-keygen -t ed25519-sk -O verify-required) ** dina YubiKey fisik (anu merlukeun touch ramo fisik anjeun dina kontak logam pikeun tiapgit pushatawasshsambungan), atawa simpen konci SSH anjeun di jero 1Password SSH Agent / Secretive (macOS Secure Enclave) dimana konci pribadi henteu pernah aya salaku file dina-/.ssh/sareng unggal tanda tangan nyarankeun Touch ID / Windows Hello. - ** Ganti statik
-/.aws/credentials(AKIA...) kalawan SSO Hirup Pondok (aws sso loginatawaaws-vault)**: - Pupus sadaya konci aksés pamaké IAM permanén (
AKIA...). Anggo AWS IAM Identity Center (aws sso login) kalayan durasi sési pondok (1 dugi ka 4 jam) atanapi bungkus kredensial di jeroaws-vaultDirojong ku macOS Keychain / Windows Credential Manager sareng pituduh biometrik. - ** Ganti Plaintext
.envFile sareng Runtime Secret Injection (1Password CLI op run,Doppler, atawaaws-vault)**: - Gantina nyimpen
STRIPE_SECRET_KEY=sk_live_...dina plaintext.envberkas nu mana waenode_modulesnaskah tiasafs.readFileSync('.env'), rujukan toko kawasSTRIPE_SECRET_KEY="op://Dev-Vault/Stripe/secret_key"sareng ngajalankeun server dev lokal anjeun viaop run --env-file=".env.template" -- npm run devsaatos auténtikasi sareng Touch ID. - ** Anggo Penerbitan Dipercanten (OIDC) Gantina Lila-lila
-/.npmrcjeung-/.pypircToken**: - Pernah nyimpen token anu tiasa nyebarkeun di jero
-/.npmrcatawa-/.pypircdina laptop Anjeun. Duanana ** PyPI ** sareng ** npm (via Provenance / OIDC) ** ngamungkinkeun anjeun nyebarkeun bungkusan sacara éksklusif tina ** GitHub Actions / GitLab CI Trusted Publishers ** ngagunakeun token OpenID Connect (OIDC) anu pondok, hartosna token nol nyebarkeun anu kantos aya dina laptop anu mana waé.
3. Ngasingkeun Repositories Untrusted jeung Ngawangun Aksara Di jero Hardened DevContainers atanapi VMs¶
- ** Entong clone sareng ngajalankeun "Recruiter Take-Home Assessment", proyék open-source anu teu biasa, atanapi bounty repo langsung dina OS host anjeun **:
- Jalankeun proyék anu teu biasa di jero GitHub Codespace, VM awan anu tiasa dibuang, atanapi Docker DevContainer lokal anu henteu NOT ngabeungkeut diréktori bumi host anjeun (
-), teu NO dipasang/var/run/docker.sock, sarta ngan lulus scoped, baca-hijina token Git lamun diperlukeun. - Audit Kode VS / Ekstensi Kursor sareng Nonaktipkeun Pembaruan Otomatis pikeun Penerbit anu Henteu Diverifikasi:
- Émut yén Cursor, Windsurf, sareng VSCodium narik ekstensi tina ** OpenVSX Registry (
open-vsx.org)** tinimbang Pasar Visual Studio resmi Microsoft. Verifikasi spasi ngaran penerbit anu pasti sareng pasang count sateuacan masang ekstensi naon waé, jaga daptar ekstensi anu dipasang anjeun minimal, sareng cabut pamasangan ekstensi anu anjeun henteu dianggo deui.
Patarosan anu sering ditaroskeun¶
Ngajalankeun npm install --ignore-scripts lengkep ngajaga kuring tina pakét npm jahat?¶
Lumpat npm install --ignore-scripts blok paling umum suplai-ranté serangan vektor: palaksanaan otomatis tina prapasang, masang, jeung postinstall paréntah cangkang diartikeun jero package.json dina waktos instalasi. Nanging, éta henteu ngajagi anjeun nalika anjeun leres-leres ngalaksanakeun kode JavaScript pakét (contona, nalika anjeun ngajalankeun npm ngajalankeun dev, uji npm, bobodoran, webpack, atawa vite, atawa lamun IDE anjeun ESLint / TypeScript plugin beban plugin jahat ti node_modules). Kusabab Node.js teu gaduh filesystem runtime atanapi sandbox jaringan sacara standar, kode naon waé anu diimpor nalika ngawangun atanapi léngkah tés anjeun masih tiasa dibaca. -/.aws jeung -/.ssh kacuali anjeun ngasingkeun wangunan di jero wadah atanapi nganggo modél ijin ékspérimén Node (node --idin).
Kuring muka gudang curiga di VS Code ti Recruiter on LinkedIn, sarta kuring diklik "Leres, abdi percanten pangarang" saméméh sadar éta scam a. Naha kode ngaéksekusi sanajan kuring henteu pernah lumpat npm install?¶
Leres, anjeun kedah nganggap kode sawenang-wenang dieksekusi sadetik anu anjeun klik "Leres, kuring percanten ka pangarang." Dina Visual Studio Code sareng Kursor, masihan Workspace Trust langsung ngamungkinkeun gudang .vscode/tasks.json file pikeun ngajalankeun tugas cangkang latar anu dikonpigurasikeun "runOn": "folderOpen", ngamungkinkeun workspace-diartikeun .vscode/settings.json pikeun nunjuk pangladén basa (sapertos Python, TypeScript, ESLint, atanapi Rust Analyzer) ka jalur anu tiasa dieksekusi jahat di jero folder gudang, sareng micu palaksanaan otomatis tina ngawangun.rs dina proyék Rust. Pegatkeun sambungan mesin tina jaringan langsung sareng turutan Fase 1 pikeun muterkeun sadaya kredensial.
Upami pakét npm atanapi PyPI jahat lumpat di jero wadah Docker atanapi DevContainer, naha host Mac atanapi Windows laptop kuring aman?¶
Éta sadayana gumantung kana volume anu dipasang, variabel lingkungan, sareng sockets anu dilebetkeun kana wadah éta. Témplat DevContainer standar sareng lokal docker-compose.yml setups remen otomatis-maju host anjeun SSH_AUTH_SOCK (ngawenangkeun malware di jero wadahna nganggo konci SSH host anjeun pikeun nyambung ka server jauh atanapi nyorong ka GitHub), bind-mount -/.aws, -/.gitconfig, atanapi ruang kerja anjeun .env file, atanapi pasang soket Docker host (/var/run/docker.sock), anu masihan aksés root instan ka sadaya sistem operasi host. Pariksa anjeun devcontainer.json jeung docker mariksa mounts ningali persis mana sumberdaya host anu kakeunaan di jero wadahna.
Kumaha carana abdi tiasa pariksa lamun versi pakét Kuring rék install geus disumputkeun install Aksara atanapi obfuscated telemetry saméméh masang?¶
Sateuacan masang pakét npm, PyPI, Go, atanapi Rust anu teu biasa, pariksa deui Socket.dev atawa Deps.dev (ku Google Open Source Insights), anu sacara statis nganalisa unggal versi pikeun masang skrip, pamundut jaringan, aksés sistem file,eval() obfuscation, sarta parobahan maintainer. Anjeun oge bisa ngajalankeun npm view dina terminal anjeun pikeun mariksa skrip daur hirupna tanpa ngaunduh atanapi ngaéksekusi pakét.
Sumber dipariksa¶
- Badan Kaamanan Siber sareng Infrastruktur (
CISA) & Badan Kaamanan Nasional (NSA) (Amérika Serikat): Ngamankeun Ranté Suplai Parangkat Lunak: Prakték Disarankeun pikeun Pamekar sareng Ngaréspon Depéndénsi anu Dikompromi. - Lab Kaamanan GitHub & Piwuruk Kaamanan npm: * Ngabales Paket npm Kompromi, Jahat
.vscode/tasks.jsonRepository Perangkap (Contagious Interview), sarta GitHub Actions Workflow Secret Exfiltration Mitigations*. - Otoritas bungkusan Python (
PyPA) & Kaamanan PyPI: * Nanganan roda jahat.pthFile,setup.pyPalaksanaan Sawenang-wenang, sareng Penerbitan Dipercaya (OIDC) Pedoman Palaksanaan*. - Buka Proyék Kaamanan Aplikasi Di sakuliah dunya (
OWASP): *Software Supply Chain Kaamanan curang lambar & CI / CD Kaamanan Top 10 resiko *. - Puseur Kaamanan Siber Nasional (
NCSC) (Inggris): Ngabela Lingkungan Pangembang sareng Pesawat Manajemén Awan Ngalawan Panén Kredensial Sasaran.
Panungtun patali¶
- Ngabajak cookie sési, maling info, sareng panyabutan token
- Dompét Cryptocurrency solokan sareng kompromi frasa siki
- Ekstensi browser jahat, pembajak clipboard, sareng ngahapus adware
- Penipuan tawaran padamelan palsu, panipuan cek peralatan, sareng maling identitas onboarding
- Malware, ransomware, sareng inféksi spyware
- Nomer darurat dumasar nagara