Cybersecurity
Supply Chain Security untuk Paket npm dan PyPI: Panduan Lengkap 2026
Serangan supply chain pada ekosistem npm dan PyPI meningkat drastis di 2025-2026. Dari worm Shai-Hulud yang menular otomatis hingga kampanye Hades yang mencuri cloud credentials, pelajari ancaman terk
Serangan supply chain pada ekosistem npm dan PyPI meningkat drastis di 2025-2026. Dari worm Shai-Hulud yang menular otomatis hingga kampanye Hades yang mencuri cloud credentials, pelajari ancaman terkini dan strategi pertahanan berlapis untuk melindungi dependensi software Anda.
Ekosistem pengembangan software modern bergantung pada kepercayaan. Setiap kali seorang developer menjalankan npm install atau pip install, mereka secara implisit mempercayai ratusan paket yang dikembangkan oleh orang asing di seluruh dunia. Kepercayaan ini telah menjadi celah yang dieksploitasi secara sistematis oleh aktor ancaman pada 2025-2026.
Unit 42 dari Palo Alto Networks melaporkan bahwa sejak September 2025, terjadi akselerasi agresif dalam kompromi supply chain npm. Worm Shai-Hulud menandai berakhirnya era "gangguan kecil" dan dimulainya lanskap ancaman dengan konsekuensi tinggi. Sementara itu, PyPI yang menjadi rumah bagi lebih dari 743.000 paket per Maret 2026 menghadapi kampanye Hades yang mengeksploitasi file .pth Python untuk mengeksekusi kode berbahaya saat interpreter startup.
Artikel ini membahas evolusi ancaman supply chain, teknik serangan terkini, dan strategi pertahanan berlapis yang dapat diterapkan oleh tim pengembang maupun organisasi untuk melindungi pipeline software mereka.
Ancaman Supply Chain: Evolusi dari Typosquatting hingga Worm Self-Replicating
Serangan supply chain pada paket npm dan PyPI telah berevolusi secara dramatis dalam beberapa tahun terakhir. Pada awalnya, teknik seperti typosquatting โ di mana penyerang menerbitkan paket dengan nama mirip populer seperti lodash menjadi l0dash โ menjadi metode utama. Teknik dependency confusion juga marak, di mana penyerang menerbitkan paket publik dengan nama sama seperti paket internal perusahaan.
Namun, evolusi terjadi pada September 2025 ketika worm Shai-Hulud muncul. Malware self-replicating ini mengotomatiskan proses kompromi: setelah menginfeksi satu paket, ia mencuri token npm dan GitHub dari korban, lalu menggunakannya untuk menginfeksi paket-paket lain secara otomatis. Dampaknya mengkhawatirkan โ lebih dari 160 paket termasuk TanStack terinfeksi dalam waktu singkat.
Tiga Pergeseran Taktik Ancaman
Analisis terbaru mengidentifikasi tiga pergeseran signifikan dalam taktik, teknik, dan prosedur (TTP) yang digunakan oleh aktor ancaman:
- Wormable Propagation โ Pencurian token npm dan GitHub untuk infeksi otomatis antar paket, memungkinkan penyebaran malware tanpa intervensi manual.
- Persistence Level Infrastruktur โ Injeksi ke pipeline CI/CD sehingga malware bertahan bahkan setelah paket asli dihapus dari registry.
- Serangan Multi-Stage Lintas Runtime โ Kampanye yang menargetkan beberapa ekosistem sekaligus (npm, PyPI, bahkan Go modules) dalam satu operasi terkoordinasi.
Perubahan fundamental ini berarti bahwa pertahanan tradisional โ seperti hanya memverifikasi nama paket โ tidak lagi cukup. Organisasi membutuhkan pendekatan berlapis yang mempertimbangkan seluruh lifecycle pengembangan software.
Kampanye Hades: Ancaman Terkoordinasi pada Ekosistem PyPI
Pada Juni 2026, peneliti keamanan di Orca Security mengungkap kampanye Hades โ serangan supply chain terkoordinasi yang menargetkan 26 paket PyPI di berbagai domain: bioinformatika, graph machine learning, deep learning, dan developer tooling. Yang membuat kampanye ini sangat berbahaya adalah eksploitasi file .pth Python.
File .pth adalah mekanisme Python yang jarang diperhatikan oleh kebanyakan developer. File-file ini dieksekusi secara otomatis setiap kali interpreter Python dimulai, menjadikannya vektor serangan yang sangat efektif untuk persistensi. Kampanye Hades menggunakan mekanisme ini untuk mengumpulkan kredensial cloud secara agresif dari korban.
Kredensial yang Dicuri dalam Kampanye Hades
- Token AWS, GCP, dan Azure
- Konfigurasi dan secrets Kubernetes
- Token GitHub dan PyPI
- SSH keys dan kredensial npm
- Environment variables yang mengandung informasi sensitif
Kampanye ini menunjukkan bagaimana penyerang tidak lagi hanya menargetkan kode yang Anda tulis, tetapi juga lingkungan eksekusi dan infrastruktur yang mengelilingi kode tersebut. Informasi lebih lanjut tentang tren keamanan AI dan software terbaru dapat dibaca di artikel kami tentang Claude Sonnet 5.
Worm Shai-Hulud: Ketika Malware Menjadi Self-Replicating
Worm Shai-Hulud merepresentasikan titik balik kritis dalam sejarah keamanan supply chain. Berbeda dengan serangan sebelumnya yang memerlukan intervensi manual untuk setiap paket yang dikompromi, Shai-Hulud mengotomatiskan seluruh proses infeksi dan redistribusi.
Mekanisme kerjanya mengkhawatirkan dalam kesederhanaannya. Setelah menginfeksi sebuah paket, malware ini:
- Mencari dan mencuri token autentikasi npm dan GitHub dari sistem korban
- Menggunakan token tersebut untuk mengakses paket-paket lain yang dimiliki korban
- Menyuntikkan payload berbahaya ke paket-paket tersebut
- Menerbitkan versi baru yang terinfeksi ke registry
- Mengulangi siklus untuk setiap korban baru
Hasilnya adalah efek domino yang menyebar dengan kecepatan luar biasa. SecurityWeek melaporkan bahwa lebih dari 100 paket npm dan PyPI terinfeksi dalam varian Miasma dan Hades dari serangan Shai-Hulud pada 2026. Infeksi ini mencakup paket-paket populer yang digunakan oleh ribuan proyek di seluruh dunia.
Jika proyek Anda menggunakan TanStack atau paket populer lainnya, segera periksa versi yang terinstal dan verifikasi integritasnya menggunakan npm audit atau pip-audit.
Strategi Pertahanan Berlapis untuk Ekosistem Python
Bernat Gabor dari PyPA (Python Package Authority) merekomendasikan pendekatan defense in depth โ lapisan pertahanan yang saling melengkapi sehingga kegagalan satu kontrol tidak berarti kegagalan total. Berikut adalah strategi yang dapat diterapkan.
Linting dengan Ruff
Ruff adalah linter Python berkecepatan tinggi yang dapat dikonfigurasi dengan aturan keamanan spesifik. Alat ini mendeteksi pola-pola berbahaya dalam kode sebelum dieksekusi.
# Instalasi dan konfigurasi Ruff untuk keamanan
pip install ruff
# Jalankan dengan aturan keamanan
ruff check . --select S # S = security rules
# Konfigurasi di pyproject.toml
[tool.ruff.lint.select]
select = ["S"] # Aktifkan semua security rules
# Contoh output yang mendeteksi masalah keamanan:
# S603: subprocess call - check for execution of untrusted input
# S607: starting a process with a partial executable path
# S301: pickle usage - potential arbitrary code execution
Pin Dependencies dengan Hash Kriptografi
Salah satu pertahanan paling efektif adalah mempin semua dependensi beserta hash kriptografinya. Dengan cara ini, bahkan jika sebuah paket dikompromi setelah Anda memverifikasinya, instalasi akan gagal karena hash tidak cocok.
# Menggunakan uv lock untuk menghasilkan lockfile dengan hash
pip install uv
uv lock --hash-algorithm sha256
# Hasilnya file uv.lock yang berisi:
# [[packages]]
# name = "requests"
# version = "2.31.0"
# hash = "sha256:58cd2187c01e70e6e26d8ec..."
# Instalasi dengan verifikasi hash
uv sync --verify-hashes
Scanning Vulnerability Otomatis
Integrasikan scanning vulnerability ke dalam pipeline CI/CD untuk mendeteksi paket yang sudah diketahui rentan sebelum kode diproduksi.
# pip-audit untuk Python
pip install pip-audit
pip-audit --strict --desc
# npm audit untuk Node.js
npm audit --audit-level=high
# Contoh output pip-audit:
# Name ID Fixed In Description
# ------- ------------ --------- ----------------------------
# urllib3 CVE-2023-... 2.0.7 Cookie leakage on redirect...
# requests CVE-2024-... 2.32.0 Unintended leak of Proxy-Authorization...
// Advertisement
Generating SBOM dengan CycloneDX
Software Bill of Materials (SBOM) memberikan visibilitas penuh terhadap semua komponen dalam proyek Anda. CycloneDX adalah standar terbuka yang dapat menghasilkan SBOM secara otomatis.
# Generate SBOM untuk proyek Python
pip install cyclonedx-bom
cyclonedx-py -o sbom.json --format json
# Generate SBOM untuk proyek Node.js
npm install -g @cyclonedx/cyclonedx-npm
cyclonedx-npm --output-file sbom.json
# SBOM memungkinkan Anda:
# 1. Melacak semua dependensi termasuk transitive
# 2. Mendeteksi paket yang terkena CVE baru
# 3. Memenuhi compliance requirement (EU CRA, US EO 14028)
Pertahanan untuk Ekosistem npm
ArmorCode merekomendasikan beberapa strategi spesifik untuk melindungi proyek npm dari serangan supply chain. Pertahanan harus mencakup seluruh siklus hidup pengembangan, dari penulisan kode hingga deployment.
Lockfile Integrity
Gunakan npm ci alih-alih npm install dalam environment produksi dan CI. Perintah npm ci menginstal persis sesuai yang tercatat di package-lock.json, sementara npm install dapat memperbarui dependensi secara tidak terduga.
# Salah โ dapat mengupdate dependensi tanpa izin
npm install
# Benar โ menginstal persis sesuai lockfile
npm ci
# Verifikasi integritas lockfile
npm audit signatures
# Gunakan .npmrc untuk konfigurasi keamanan
# package-lock=true
# ignore-scripts=true # Mencegah eksekusi script postinstall berbahaya
# audit=true
Scoped Packages dan Private Registry
Gunakan scoped packages (@namaorganisasi/paket) untuk paket internal dan konfigurasi registry privat. Ini mencegah serangan dependency confusion di mana penyerang menerbitkan paket publik dengan nama sama seperti paket internal Anda.
# .npmrc untuk mengarahkan scoped packages ke registry privat
@mycompany:registry=https://registry.mycompany.com/
//registry.mycompany.com/:_authToken=${NPM_TOKEN}
# npm akan selalu mengambil @mycompany/* dari registry privat
# dan mencegah dependency confusion
Penggunaan npm audit dan Socket.dev
Jalankan npm audit secara teratur dan pertimbangkan untuk menggunakan alat analisis supply chain seperti Socket.dev yang mendeteksi perilaku berbahaya โ bukan hanya CVE yang diketahui. Socket dapat mengidentifikasi paket yang mengakses environment variables, membuat koneksi jaringan yang tidak biasa, atau mengirimkan data ke server eksternal.
Trusted Publishing dan Sigstore: Masa Depan Keamanan Paket
Salah satu perkembangan paling signifikan dalam keamanan supply chain adalah Trusted Publishing dengan OpenID Connect (OIDC). Mekanisme ini menggantikan API token berumur panjang yang rentan terhadap pencurian dengan autentikasi berbasis identitas kriptografi.
Cara Kerja Trusted Publishing
- Developer mengonfigurasi GitHub Actions (atau CI/CD lain) sebagai trusted publisher di PyPI
- Saat kode dipush ke repo, CI/CD secara otomatis meminta token OIDC jangka pendek
- Token tersebut digunakan untuk menerbitkan paket โ tanpa API token yang disimpan di secrets
- Sigstore menghasilkan attestations kriptografi yang mengaitkan paket ke source repo dan commit spesifik
Keuntungan utama dari pendekatan ini adalah eliminasi token berumur panjang yang menjadi target utama pencurian dalam kampanye Shai-Hulud. Jika tidak ada token yang disimpan, tidak ada yang bisa dicuri.
Konfigurasi Trusted Publishing di PyPI
# 1. Di PyPI, tambahkan GitHub Actions sebagai trusted publisher:
# Owner: nama-organisasi
# Repository: nama-repo
# Workflow: publish.yml
# Environment: pypi
# 2. Buat workflow GitHub Actions (.github/workflows/publish.yml):
name: Publish to PyPI
on:
release:
types: [published]
permissions:
id-token: write # Diperlukan untuk OIDC
jobs:
publish:
runs-on: ubuntu-latest
environment: pypi
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install build
- run: python -m build
- uses: pypa/gh-action-pypi-publish@release/v1
# Tidak perlu password โ OIDC menangani autentikasi
Respons PyPI terhadap Ancaman yang Meningkat
PyPI telah mengimplementasikan beberapa langkah keamanan baru sebagai respons terhadap serangan yang meningkat:
- Domain Resurrection Prevention โ Mencegah penyerang mendaftarkan ulang paket yang sebelumnya dihapus untuk menyebarkan malware.
- Login Verification untuk TOTP โ Memverifikasi bahwa TOTP berasal dari perangkat yang benar, bukan dari serangan phishing.
- Invalidasi Token Massal โ Kemampuan untuk membatalkan semua token API yang beredar jika terjadi kompromi.
- Attestations Otomatis โ Setiap paket yang diterbitkan melalui Trusted Publishing mendapatkan attestations kriptografi via Sigstore.
Implementasi Trusted Publishing juga relevan untuk pengembangan aplikasi modern. Baca lebih lanjut tentang praktik pengembangan terkini di tutorial Kotlin Multiplatform kami.
Membangun Pipeline Keamanan yang Robust
Pertahanan yang efektif memerlukan integrasi keamanan ke setiap tahap pipeline pengembangan. Berikut adalah rekomendasi untuk membangun pipeline keamanan yang robust.
// Advertisement
Pre-Commit Hooks
Konfigurasi pre-commit hooks untuk mendeteksi masalah keamanan sebelum kode mencapai repository.
# .pre-commit-config.yaml
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.0
hooks:
- id: ruff
args: [--select, S]
- repo: https://github.com/gitleaks/gitleaks
rev: v8.18.0
hooks:
- id: gitleaks
- repo: https://github.com/Yelp/detect-secrets
rev: v1.5.0
hooks:
- id: detect-secrets
args: [--baseline, .secrets.baseline]
CI/CD Security Gates
Tambahkan gerbang keamanan dalam pipeline CI/CD yang memblokir deployment jika ditemukan masalah kritis.
# Contoh GitHub Actions workflow dengan security gates
name: Security Check
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Python Security Scan
run: |
pip install pip-audit safety
pip-audit --strict
safety check --full-report
- name: Node.js Security Scan
run: |
npm audit --audit-level=critical
npx socket-security-cli scan
- name: Generate SBOM
run: |
pip install cyclonedx-bom
cyclonedx-py -o sbom.json --format json
- name: Upload SBOM Artifact
uses: actions/upload-artifact@v4
with:
name: sbom
path: sbom.json
Monitoring dan Alerting
Implementasikan monitoring berkelanjutan untuk mendeteksi perubahan mencurigakan pada dependensi yang sudah digunakan:
- Gunakan GitHub Dependabot atau Renovate untuk mendapatkan notifikasi saat ada update keamanan
- Konfigurasi Socket.dev atau Snyk untuk monitoring real-time terhadap perilaku berbahaya
- Pantau advisories dari npm Security dan PyPI Security secara berkala
- Berlangganan mailing list security seperti OSS-Security untuk CVE baru
Pipeline keamanan yang baik juga mempertimbangkan aspek performa dan skalabilitas. Prinsip serupa diterapkan dalam pengembangan aplikasi cross-platform โ baca lebih lanjut di panduan Kotlin Multiplatform.
Langkah Praktis yang Bisa Dilakukan Hari Ini
Menerapkan seluruh strategi pertahanan di atas mungkin terasa overwhelming. Berikut adalah checklist prioritas yang dapat Anda mulai hari ini untuk meningkatkan keamanan supply chain secara signifikan.
Prioritas Tinggi (Minggu Ini)
- Jalankan
npm auditdanpip-auditpada semua proyek aktif - Periksa apakah ada dependensi yang menggunakan versi TanStack yang terinfeksi Shai-Hulud
- Aktifkan
ignore-scripts=truedi.npmrcuntuk mencegah eksekusi script postinstall berbahaya - Gunakan
npm cidi semua pipeline CI/CD - Pastikan file
package-lock.jsondanuv.lockdi-commit ke repository
Prioritas Sedang (Bulan Ini)
- Konfigurasi Trusted Publishing di PyPI untuk semua paket yang Anda terbitkan
- Tambahkan pre-commit hooks untuk security linting
- Generate dan review SBOM untuk proyek-proyek utama
- Konfigurasi Dependabot atau Renovate untuk notifikasi update keamanan
- Implementasikan scoped packages untuk paket internal
Prioritas Rendah (Kuartal Ini)
- Evaluasi dan implementasikan Socket.dev atau Snyk untuk monitoring berkelanjutan
- Buat kebijakan organisasi untuk review dependensi baru
- Lakukan audit menyeluruh terhadap semua transitive dependencies
- Konfigurasi SBOM generation otomatis di CI/CD
Rata-rata proyek Python menggunakan lusinan transitive dependencies yang tidak pernah dipilih secara eksplisit oleh developer. Setiap transitive dependency memperluas attack surface secara signifikan โ ini mengapa SBOM dan auditing menjadi krusial.
Pertanyaan yang Sering Diajukan (FAQ)
npm audit untuk proyek Node.js atau pip-audit untuk proyek Python. Periksa apakah Anda menggunakan versi TanStack atau paket lain yang dilaporkan terinfeksi. Anda juga dapat memeriksa daftar paket yang dikompromikan di advisories keamanan npm dan PyPI. Jika menggunakan versi yang terinfeksi, segera perbarui ke versi bersih dan rotasi semua token serta kredensial yang mungkin terekspos.npm install dan npm ci dalam konteks keamanan?npm install dapat memperbarui dependensi berdasarkan range version yang ditentukan di package.json, yang berarti Anda mungkin menginstal versi berbeda dari yang diuji. npm ci menginstal persis sesuai yang tercatat di package-lock.json โ jika ada perbedaan, instalasi akan gagal. Ini memastikan bahwa apa yang diuji di development adalah persis sama dengan apa yang di-deploy di produksi, mencegah serangan melalui update dependensi yang tidak terduga.Sumber Referensi
Sumber yang Digunakan dalam Artikel Ini
- Unit 42 - The npm Threat Landscape: Attack Surface and Mitigations
- Bernat Gabor - Defense in Depth: A Practical Guide to Python Supply Chain Security
- Orca Security - Hades PyPI Supply Chain Attack
- ArmorCode - Defending Against NPM Supply Chain Attacks: A Practical Guide
- SecurityWeek - Over 100 NPM, PyPI Packages Hit in New Shai-Hulud Supply Chain Attacks
// Advertisement
VyuApp Studio
Bespoke web engineering โ Garut, ID