Lewati ke konten utama
SERAPHIM NEWS
▲ KRITIS

TeamPCP: Rantai Serangan Supply Chain dari VS Code Extension hingga Pencurian 3.800 Repositori Internal GitHub — CISA Terbitkan Advisory

28 Agustus 2026 Seraphim News 11 mnt baca
TeamPCP: Rantai Serangan Supply Chain dari VS Code Extension hingga Pencurian 3.800 Repositori Internal GitHub — CISA Terbitkan Advisory

Ketika Satu Ekstensi VS Code Membuka Gerbang ke Infrastruktur GitHub

Pada 19 Mei 2026, GitHub mulai menyelidiki akses tidak sah terhadap repositori internalnya. Sehari kemudian, perusahaan mengonfirmasi bahwa sekitar 3.800 repositori privat telah dieksfiltrasi. Pintu masuknya bukan server yang dibobol, bukan firewall yang dilewati, bukan zero-day pada infrastruktur cloud — melainkan satu ekstensi VS Code yang terpoisoning, terinstal secara otomatis pada mesin seorang karyawan GitHub, dan mengeksekusi pencurian kredensial dalam hitungan menit.

Insiden ini, yang diatribusikan kepada kelompok yang dikenal sebagai TeamPCP (di-track sebagai UNC6780 oleh Google Threat Intelligence Group), bukan sekadar pelanggaran keamanan satu perusahaan. Ia adalah demonstrasi tentang bagaimana serangan supply chain modern bergerak: menembus satu titik kepercayaan dalam rantai pasok pengembangan, lalu memanfaatkan akses legitimasi untuk menjangkau target bernilai jauh lebih tinggi. CISA menerbitkan advisory resmi pada 28 Mei 2026 dan menambahkan CVE-2026-48027 ke katalog Known Exploited Vulnerabilities (KEV).

Rantai Serangan: Empat Tautan yang Saling Terhubung

Yang membuat insiden ini sangat instruktif adalah strukturnya yang berlapis. TeamPCP tidak menyerang GitHub secara langsung. Sebaliknya, mereka membangun rantai empat tautan yang masing-masing mengandalkan kompromi sebelumnya.

Tautan 1: Kompromi Ekosistem npm TanStack

Pada awal Mei 2026, TeamPCP menembus ekosistem npm TanStack melalui CI workflow yang salah konfigurasi, cache poisoning, dan pencurian token OIDC. Versi-versi berbahaya dari @tanstack/react-router dan paket terkait diterbitkan dengan provenance kriptografi yang valid — artinya tanda tangan kriptografi pada paket tersebut melewati verifikasi standar. Serangan ini di-track sebagai CVE-2026-45321.

Yang mengkhawatirkan dari tautan ini adalah legitimasi yang dibangunnya. Paket yang diterbitkan memiliki provenance Sigstore yang valid, sehingga tools audit keamanan yang mengandalkan verifikasi provenance tidak akan menandainya sebagai berbahaya. Ini menandai evolusi signifikan dalam teknik supply chain attack: tidak cukup lagi hanya memeriksa apakah paket ditandatangani secara kriptografi.

Tautan 2: Pencurian Kredensial Kontributor Nx

Seorang kontributor proyek Nx, yang menginstal salah satu paket TanStack yang terkompromi (atau terkena dampak kampanye tersebut), memiliki kredensial GitHub yang dicuri melalui GitHub CLI (gh). Token yang dicuri memiliki akses push ke repositori nrwl/nx dan, secara langsung atau tidak langsung, akses ke kredensial penerbitan VS Code Marketplace.

Proyek Nx adalah framework monorepo yang sangat populer di ekosistem JavaScript, dengan ekosistem paket yang luas dan ribuan kontributor aktif. Kompromi satu akun kontributor memberikan akses ke seluruh rantai distribusi, dari repositori source code hingga pipeline penerbitan paket.

Tautan 3: Kompromi Ekstensi Nx Console

Pada 18 Mei pukul 03:18 UTC, penyerang menggunakan token yang dicuri untuk mendorong orphan commit (558b09d7) ke repositori nrwl/nx. Pukul 12:30 UTC hari yang sama, mereka menerbitkan nrwl.angular-console v18.95.0 ke Visual Studio Marketplace.

Ekstensi berbahaya ini menciptakan VS Code task tersembunyi yang diaktifkan saat workspace dibuka, yang mengambil dan mengeksekusi payload pencuri kredensial sebesar 498 KB dari orphan commit tersebut. Ekstensi ini live di Visual Studio Marketplace selama sekitar 18 menit dan di Open VSX selama 36 menit.

Meskipun jendela waktu tampak singkat, dampaknya jauh lebih luas dari angka unduhan resmi. Marketplace mencatat hanya 28 unduhan di Visual Studio Marketplace dan 41 di Open VSX, tetapi analitik internal Nx mendaftarkan sekitar 6.000 aktivasi ekstensi dari VS Code pasca-serangan. Discrepancy ini terjadi karena auto-update tidak selalu dihitung sebagai unduhan baru oleh marketplace, tetapi ekstensi tetap mengaktifkan kode berbahayanya.

Tautan 4: Kompromi Mesin Karyawan GitHub

Seorang karyawan GitHub yang memiliki Nx Console terinstal mengalami auto-update ke versi berbahaya selama jendela paparan. Payload mengekstrak token, secret, dan kunci SSH dari mesin karyawan tersebut. Dengan kredensial tersebut, penyerang mengakses repositori internal GitHub dan mengeksfiltrasi sekitar 3.800 di antaranya.

Seluruh rantai — dari pipeline CI/CD open-source yang sah, melalui dua ekosistem paket terpisah, ke IDE pengembang, dan keluar melalui mesin karyawan perusahaan — dieksekusi dalam waktu kurang dari 48 jam.

Apa yang Dicuri dari GitHub

GitHub mengonfirmasi bahwa insiden hanya mempengaruhi repositori internal. Berdasarkan pelaporan publik, data yang dieksfiltrasi meliputi:

  • File konfigurasi infrastruktur
  • Script deployment dan otomasi
  • Kredensial environment staging
  • Skema API internal dan dokumentasi
  • Source code organisasi internal

GitHub menyatakan bahwa data pelanggan yang disimpan di luar repositori internal tidak terdampak. Perusahaan segera melakukan rotasi terhadap secret kritis, memprioritaskan kredensial dengan dampak tertinggi, dan mengisolasi endpoint yang terkompromikan.

TeamPCP mengiklankan materi yang dicuri di forum breach, mengklaim sekitar 4.000 repositori kode privat dan meminta harga minimum $50.000 dari pembeli. Klaim mereka menyatakan bahwa informasi tersebut “secara arah konsisten” dengan investigasi GitHub.

Payload Pencurian: Enam Collector Paralel

Payload berbahaya yang dijalankan melalui Nx Console v18.95.0 terdiri dari 2.777 byte JavaScript yang disuntikkan ke dalam file minified, yang kemudian mengambil dan mengeksekusi dropper stage kedua. Perancangannya menunjukkan tingkat presisi yang tinggi dalam menargetkan lingkungan pengembang.

Enam Modul Pengumpulan Kredensial

Payload menjalankan enam kelas collector paralel yang masing-masing menargetkan jenis kredensial berbeda:

Modul Target
GitHub Collector GitHub Personal Access Tokens, sesi aktif
npm Collector npm authentication tokens
Cloud Collector AWS IMDS, Secrets Manager, GCP credentials
Secret Manager HashiCorp Vault tokens, 1Password CLI data
Container Collector Docker credentials, Kubernetes service accounts
Local Collector SSH keys, file .env, konfigurasi Claude Code

Pada Linux, payload juga memindai /proc/*/mem untuk mencari secret dalam memori proses yang berjalan — teknik yang sangat agresif yang melewati pendekatan berbasis file konvensional.

Tiga Saluran Eksfiltrasi

Data yang dicuri dieksfiltrasi melalui tiga saluran independen, di mana masing-masing saja sudah cukup untuk keberhasilan serangan:

  1. HTTPS — Eksfiltrasi langsung melalui koneksi terenkripsi
  2. GitHub API — Memanfaatkan API GitHub yang sah untuk mengirim data
  3. DNS tunneling — Menyembunyikan data dalam query DNS

Semua data dienkripsi dengan AES-256-GCM dan session key dibungkus dengan RSA public key milik penyerang.

Sigstore Forgery dan Persistent Backdoor

Fitur yang paling mengkhawatirkan dari payload ini adalah integrasi Sigstore penuh untuk memalsukan provenance attestation npm. Artinya, kredensial yang dicuri dapat digunakan untuk menerbitkan paket downstream dengan provenance kriptografi yang valid — tanda tangan yang akan lolos verifikasi npm audit. Ini menciptakan kemampuan serangan berantai: dari kompromi satu mesin pengembang, penyerang dapat menerbitkan paket berbahaya yang tampak sah kepada seluruh ekosistem.

Pada macOS, payload menginstal persistent Python C2 backdoor di ~/.local/share/kitty/cat.py dengan LaunchAgent yang menjalankan backdoor setiap jam. Backdoor menggunakan GitHub Search API sebagai dead-drop, mencari commit yang cocok dengan keyword firedalazer dan memverifikasi RSA-PSS signature sebelum mengeksekusi kode yang dikendalikan penyerang.

TeamPCP: Pola Serangan yang Konsisten

Insiden GitHub bukan operasi terisolasi. TeamPCP telah menjalankan kampanye berkelanjutan sejak setidaknya Maret 2026, dengan pola serangan yang konsisten: kompromi kredensial pengembang melalui satu vektor supply chain, lalu pivot ke target bernilai lebih tinggi melalui vektor kedua.

Riwayat serangan TeamPCP:

Target Waktu Vektor Dampak
TanStack/Mistral AI/UiPath Mei 2026 npm/PyPI 373 versi paket berbahaya di 169 paket
durabletask PyPI Mei 2026 Python SDK Backdoor multi-cloud credential stealer dan wiper
AntV ecosystem Mei 2026 npm Ratusan rilis berbahaya
Cemu Linux release assets Mei 2026 GitHub Releases Binary diganti dengan credential stealer Python
Trivy vulnerability scanner Maret 2026 GitHub Actions Cascading ke Docker images dan Checkmarx KICS
LiteLLM PyPI Maret 2026 Python library Infeksi puluhan ribu perangkat
Mistral AI source code Mei 2026 CI/CD credentials Source code dicuri dan dijual
AsyncAPI VS Code extension November 2025 npm/OpenVSX Worm Shai-Hulud 2.0, eksfiltrasi selama sebulan

Pola yang muncul konsisten: kompromi satu ekosistem pengembangan, eksploitasi kepercayaan pada ekosistem tersebut, dan pivot ke target yang lebih berharga. Insiden GitHub adalah konsekuensi downstream paling signifikan dari strategi ini.

Mengapa 18 Menit Cukup untuk Menghancurkan Segalanya

Salah satu aspek paling mengkhawatirkan dari insiden ini adalah betapa sedikitnya waktu yang diperlukan untuk menimbulkan kerusakan berskala besar.

VS Code mengaktifkan auto-update ekstensi secara default. Tidak ada jeda review, periode cooldown, atau waiting period antara saat ekstensi diterbitkan dan saat klien yang terinstal mengambil versi baru. Mekanisme update tidak terbatas pada timer periodik — VS Code juga melakukan sinkronisasi terhadap marketplace setiap kali interaksi gallery terjadi, termasuk membuka sidebar Extensions, melakukan pencarian marketplace, dan memproses recommendation prompts.

Dengan lebih dari 2,2 juta total instalasi, Nx Console memiliki basis pengguna yang masif. Selama jendela 18 menit di Visual Studio Marketplace (dan 36 menit di Open VSX), setiap editor yang berjalan dan melakukan interaksi gallery yang menyentuh listing Nx Console akan diam-diam melakukan auto-update ke versi berbahaya.

Dan setelah versi berbahaya ditarik dari marketplace, tidak ada cara untuk mengingat ekstensi dari mesin yang sudah menginstalnya. Penarikan listing hanya mencegah unduhan baru. Microsoft tidak memberi tahu pengguna yang terdampak. Satu-satunya cara pengembang mengetahui bahwa mereka terpengaruh adalah dengan mengikuti berita keamanan atau memperhatikan bahwa ekstensi telah menghilang dari hasil pencarian.

Tidak Ada Sandbox, Tidak Ada Prompt Izin

Ekstensi VS Code berjalan dengan izin penuh pengguna yang menginstalnya. Tidak ada sandbox, tidak ada prompt izin, tidak ada pembatasan kemampuan. Setiap ekstensi dapat membaca setiap file yang bisa dibaca pengguna, mengeksekusi setiap perintah yang bisa dieksekusi pengguna, dan mengakses setiap endpoint jaringan yang bisa dijangkau pengguna.

Tool deteksi endpoint dan respons (EDR) tradisional tidak dirancang untuk menangkap ini. Payload berbahaya adalah 2.777 byte JavaScript yang disuntikkan ke dalam file minified, yang kemudian mengambil dropper stage kedua. EDR tidak memiliki signature untuk perubahan JavaScript minified pada ekstensi VS Code yang tepercaya. Perilaku payload — membaca file .env, melakukan query ke cloud metadata endpoints, mengakses ~/.ssh/ — tidak dapat dibedakan dari aktivitas tooling pengembang normal.

Inilah mengapa insiden GitHub berhasil meskipun GitHub memiliki postur keamanan yang kuat. Serangan tidak melewati kontrol server-side mana pun. Ia cukup berjalan di mesin yang sudah memiliki akses legitimasi ke repositori internal, menggunakan kredensial yang sudah ada untuk pekerjaan normal.

Rekomendasi CISA dan Mitigasi

Langkah Segera untuk Pengguna yang Berpotensi Terdampak

CISA menerbitkan advisory pada 28 Mei 2026 dengan rekomendasi yang dapat ditindaklanjuti:

  1. Monitor dan audit workflow files — Periksa aktivitas contributor yang mencurigakan, terutama pull request dan direct commit dari akun otomatis (build-bot, auto-ci, ci-bot, pipeline-bot), terutama yang dibuat setelah 18 Mei 2026
  2. Revert perubahan tanpa otorisasi — Kembalikan perubahan yang tidak sah, terutama dari akun otomatis
  3. Forensik menyeluruh — Tinjau CI/CD logs, cloud audit trails, dan mesin pengembang yang terdampak
  4. Rotasi massal kredensial — Putar semua credential yang dapat diakses dari pipeline CI/CD: API keys, kredensial cloud provider (AWS, GCP, Azure), SSH keys, Docker/npm/PyPI/Vault/Terraform/Kubernetes tokens, GitHub/GitLab/Bitbucket tokens, dan developer secrets

Untuk Pengguna Nx Console

  1. Perbarui ke v18.100.0 atau lebih baru di seluruh editor (VS Code, Cursor, Windsurf, dan lainnya)
  2. Periksa indikator kompromi:
    • File ~/.local/share/kitty/cat.py
    • LaunchAgent ~/Library/LaunchAgents/com.user.kitty-monitor.plist
    • /var/tmp/.gh_update_state
    • /tmp/kitty-*
    • Proses dengan __DAEMONIZED=1 di environment
  3. Hentikan proses berbahaya dan hapus artifact persistensi, termasuk unload LaunchAgent macOS sebelum menghapus
  4. Putar setiap kredensial yang dapat diakses dari mesin terdampak

Pertahanan Organisasi

Kontrol Ekstensi

  • Terapkan kebijakan extensions.allowed untuk membatasi publisher dan ekstensi yang diinstal
  • Nonaktifkan atau tunda auto-update — jeda 48 jam antara penerbitan dan auto-update akan mencegah insiden ini sepenuhnya
  • Bangun inventaris ekstensi dan paket yang terinstal di mesin pengembang — Anda tidak bisa mempertahankan apa yang tidak bisa Anda lihat

Perlakuan terhadap Workstation Pengembang

  • Terapkan kontrol keamanan yang sama dengan server produksi: rotasi kredensial berkala, least-privilege access, hardware security keys untuk akun kritis, dan pemantauan pola akses anomali
  • Batasi scope kredensial: gunakan token jangka pendek, batasi personal access token ke repositori spesifik, wajibkan SSO re-authentication untuk operasi sensitif

Pemantauan Supply Chain

  • Pantau advisory untuk paket dan ekstensi yang bergantung pada organisasi Anda
  • Berlangganan GitHub Security Advisories, npm audit feeds, dan mailing list keamanan untuk dependensi kritis
  • Waktu antara kompromi dipublikasikan dan versi berbahaya ditarik adalah jendela yang paling penting

Kesimpulan

Insiden TeamPCP yang membobol GitHub melalui ekstensi Nx Console adalah titik balik dalam pemahaman tentang supply chain security. Ia membuktikan bahwa satu ekstensi IDE yang terpoisoning, aktif selama 18 menit, dapat mengkompromikan infrastruktur internal dari salah satu perusahaan teknologi paling berpengaruh di dunia.

Yang paling mengkhawatirkan bukan kecanggihan teknis serangan — payload pencuri kredensial dan Sigstore forgery memang canggih, tetapi bukan di luar jangkauan aktor ancaman yang terampil. Yang paling mengkhawatirkan adalah betapa normalnya kondisi yang memungkinkan serangan ini: seorang pengembang menginstal ekstensi populer, auto-update diaktifkan secara default, mesinnya memiliki akses ke repositori kritis, dan tidak ada kontrol yang mencegah satu titik kompromi menjalar ke seluruh infrastruktur.

Tim keamanan siber harus mulai memperlakukan workstation pengembang sebagai target bernilai tinggi yang setara dengan server produksi. Dalam dunia di mana satu mesin pengembang menyimpan source code, kredensial cloud, token CI/CD, kunci SSH, dan konfigurasi AI coding assistant secara bersamaan, kompromi satu titik berarti kompromi segalanya.


Artikel ini disusun berdasarkan advisory CISA Supply Chain Compromises Impact Nx Console and GitHub Repositories (28 Mei 2026), pengumuman GitHub tentang unauthorized access, postmortem Nx Console v18.95.0, analisis Corgea dan Aikido Security, serta data CISA KEV Catalog untuk CVE-2026-48027 dan CVE-2026-45321.

Recommended Intelligence Reading