Dipublikasikan 23 Juli 2026
Pada tanggal 11 Mei 2026, komunitas JavaScript diguncang oleh serangan supply chain yang menargetkan salah satu ekosistem library paling populer: TanStack. Dalam rentang waktu hanya enam menit, seorang attacker berhasil mempublikasikan 84 versi berbahaya melintasi 42 package @tanstack/* di registry npm. Postmortem resmi yang dipublikasikan di blog TanStack memberikan gambaran detail tentang vektor serangan, dampaknya, dan langkah mitigasi yang diterapkan. Bagi developer yang menggunakan TanStack Router, Query, atau library lainnya, memahami insiden ini adalah kewajiban, bukan pilihan.
Serangan terjadi antara 19:20 dan 19:26 UTC. Attacker menggunakan kombinasi tiga teknik yang masing-masing sudah dikenal di kalangan keamanan siber, namun jarang dilihat digabungkan dengan efisiensi tinggi dalam satu rantai eksploitasi:
Pull request target exploitation: Attacker memanfaatkan event pull_request_target pada GitHub Actions yang memungkinkan kode dari fork dijalankan dalam konteks base repository dengan akses token yang lebih tinggi daripada yang seharusnya dimiliki oleh kontributor eksternal.
GitHub Actions cache poisoning: Attacker meracuni cache build di antara boundary trust fork dan base repository, menyisipkan payload berbahaya ke dalam artifact yang kemudian dijalankan oleh workflow resmi tanpa terdeteksi pada tahap awal.
OIDC token extraction: Pada runtime, malware mengekstrak token OIDC dari proses GitHub Actions runner dan menggunakannya untuk otentikasi langsung ke registry npm tanpa perlu mencuri npm token tradisional. Ini adalah vektor yang sangat cerdik karena memanfaatkan mekanisme modern yang justru dirancang untuk meningkatkan keamanan.
Yang menarik, workflow publish resmi TanStack sendiri tidak dikompromikan secara langsung. Publish yang sah memang melewati langkah verifikasi, namun karena test failure yang disengaja oleh attacker, langkah publish dilewati dan malware justru berhasil dipublikasikan melalui mekanisme alternatif yang tidak terduga oleh tim keamanan.
Ketika developer atau lingkungan CI menjalankan npm install terhadap versi yang terinfeksi, npm akan menyelesaikan entry optionalDependencies berbahaya, mengambil payload dari commit orphan di jaringan fork, menjalankan lifecycle script prepare, dan mengeksekusi file router_init.js sebesar ~2.3 MB yang telah diobfuskasi dengan cermat.
File tersebut melakukan beberapa aktivitas berbahaya yang sangat komprehensif:
Credential harvesting: Mengumpulkan kredensial dari AWS IMDS dan Secrets Manager, metadata GCP, Kubernetes service-account tokens, Vault tokens, file ~/.npmrc, GitHub tokens dari environment variable, gh CLI, file .git-credentials, dan bahkan kunci SSH private.
Eksfiltrasi via Session messenger: Data yang dicuri dikirim melalui jaringan upload file Session (filev2.getsession.org) yang menggunakan enkripsi end-to-end tanpa server command-and-control milik attacker. Karakteristik ini membuat pemblokiran berbasis IP atau domain menjadi satu-satunya mitigasi jaringan yang mungkin, dan analisis traffic menjadi lebih sulit karena tidak ada pola C2 tradisional.
Self-propagation: Malware mengenumerasi package lain yang dikelola oleh victim melalui API npm search dan merepublikasikannya dengan injeksi yang sama, menciptakan efek domino yang bisa menyebar melintasi banyak repository dengan cepat jika tidak segera diatasi.
Karena payload dijalankan sebagai bagian dari lifecycle npm install, siapa pun yang menginstall versi terdampak pada tanggal 11 Mei harus menganggap host instalasi sebagai berpotensi terkompromi dan melakukan investigasi menyeluruh.
Kabar baiknya, versi berbahaya terdeteksi dalam waktu 20 hingga 26 menit setelah publikasi oleh peneliti keamanan eksternal bernama ashishkurmi yang bekerja untuk StepSecurity. Kecepatan deteksi ini adalah bukti bahwa komunitas keamanan open source berfungsi dengan baik. Deteksi yang cepat memungkinkan Tim TanStack untuk segera mengambil tindakan:
Mendeprekasi semua 84 versi terdampak dalam waktu singkat.
Menghubungi tim keamanan npm untuk menarik tarball berbahaya dari registry secara permanen.
Melakukan hardening menyeluruh pada seluruh pipeline CI/CD dengan audit tiga hari penuh.
Status resmi yang dikeluarkan pada 15 Mei 2026 menyatakan bahwa semua versi TanStack yang tersedia saat ini aman untuk diinstall. Hanya repositori Router dan Start yang terdampak, meliputi 42 package monorepo dengan 2 versi masing-masing. Package lain seperti Query, Table, Form, Virtual, Store, AI, dan lainnya tidak terpengaruh dan tetap aman.
Jika Anda atau tim Anda menginstall versi TanStack pada tanggal 11 Mei 2026, berikut adalah checklist tindakan yang wajib dilakukan tanpa penundaan:
Rotasi kredensial: Segera rotasi semua kredensial yang bisa diakses dari host instalasi, termasuk AWS, GCP, Kubernetes, Vault, GitHub, npm, dan kunci SSH. Anggap semua secret yang pernah ada di mesin tersebut sebagai bocor.
Audit package lock: Periksa file package-lock.json, yarn.lock, atau pnpm-lock.yaml Anda untuk memastikan tidak ada versi TanStack yang dipublikasikan pada 11 Mei 2026 dengan hash yang mencurigakan.
Scan environment: Lakukan scan keamanan pada semua environment di mana npm install dijalankan pada rentang waktu tersebut, termasuk mesin developer lokal, runner CI/CD, dan container image yang di-build pada periode tersebut.
Update ke versi terbaru: Pastikan Anda menggunakan versi TanStack yang paling baru dan tidak terdampak. Jangan tunda security update.
Insiden ini menegaskan beberapa prinsip keamanan supply chain yang sering terabaikan oleh tim engineering:
Hindari pull_request_target tanpa sandbox: Event ini sangat berbahaya karena menjalankan kode fork dengan akses base repository. Gunakan pull_request event bila memungkinkan, atau isolasi yang ketat melalui container atau VM.
Cache isolation adalah keharusan: Cache build harus diisolasi antara fork dan base repository. GitHub Actions baru-baru ini telah memperkenalkan fitur cache isolation, dan semua repository publik harus segera mengadopsinya untuk mencegah serangan serupa.
Least privilege pada OIDC: Permission id-token: write harus diberikan seketat mungkin dan hanya pada job yang benar-benar membutuhkannya. Audit setiap workflow yang meminta permission ini dan pastikan scope-nya minimal.
Monitor npm install: Pertimbangkan untuk menggunakan tools seperti lockfile-lint, npq, atau Snyk untuk memverifikasi integritas package sebelum instalasi di environment produksi.
Serangan supply chain bukan lagi ancaman teoretis. TanStack, yang dikenal sebagai ekosistem modern dengan praktik keamanan yang relatif baik, tetap bisa menjadi target yang menguntungkan bagi attacker. Ini adalah pengingat keras bahwa di dunia open source, keamanan adalah tanggung jawab kolektif yang harus dijaga oleh maintainer, contributor, dan user secara bersama-sama.
Sumber: TanStack Blog
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu