36 Paket Berbahaya di NPM Menyamar sebagai Plugin Strapi, Targetkan Infrastruktur Kripto dengan Eksploitasi Redis dan PostgreSQL


Sebuah kampanye berbahaya yang terstruktur dan terarah telah terungkap di ekosistem NPM, di mana sedikitnya 36 paket ditemukan menyamar sebagai plugin untuk Strapi CMS. Paket-paket ini tidak sekadar berisi kode berbahaya biasa, tetapi dirancang dengan berbagai payload kompleks yang mampu mengeksploitasi Redis dan PostgreSQL, mencuri kredensial sensitif, hingga menanam implant persisten pada sistem korban. Temuan ini menunjukkan adanya operasi yang matang dengan tujuan spesifik, yakni menargetkan infrastruktur platform pembayaran berbasis cryptocurrency.

Secara kronologis, aktivitas publikasi paket dimulai dengan akun umar_bektembiev1 yang merilis gelombang awal, termasuk paket seperti strapi-plugin-cron dan varian lain yang memiliki kemampuan eksploitasi tingkat lanjut. Dalam waktu beberapa jam, paket-paket lain menyusul dari akun berbeda seperti umarbek1233, kekylf12, dan tikeqemif26. Pola publikasi yang saling tumpang tindih serta konsistensi teknik serangan menunjukkan bahwa seluruh akun tersebut kemungkinan dikendalikan oleh aktor yang sama.

Setiap paket membawa fungsi spesifik dalam rantai serangan. Misalnya, strapi-plugin-cron memanfaatkan teknik eksploitasi Redis melalui perintah CONFIG SET untuk menyuntikkan entri crontab, menulis webshell berbasis PHP, serta menjalankan reverse shell berbasis Node.js. Selain itu, paket ini juga mencoba menyisipkan kunci SSH ke dalam authorized_keys serta membaca data mentah dari disk menggunakan kombinasi mknod dan dd untuk mengekstrak informasi sensitif.

Paket lain seperti strapi-plugin-config memperluas kemampuan serangan dengan mencoba melakukan escape dari container Docker melalui analisis overlay filesystem. Dengan menemukan direktori upperdir, payload dapat ditulis ke lokasi yang dapat diakses host. Teknik ini memungkinkan penyerang melampaui isolasi container dan mengakses sistem yang lebih luas. Tidak hanya itu, paket ini juga membaca data mentah untuk menemukan kredensial Elasticsearch serta wallet kripto, kemudian menyisipkan hook berbahaya ke dalam node_modules.

Serangkaian paket lain seperti strapi-plugin-server, strapi-plugin-database, hingga strapi-plugin-hooks difokuskan pada eksekusi reverse shell secara langsung. Menariknya, payload ini menggunakan mekanisme gating berbasis hostname, hanya aktif jika sistem target mengandung string tertentu seperti “prod”. Hal ini menunjukkan bahwa serangan dirancang untuk menghindari deteksi di lingkungan pengujian atau sandbox. Reverse shell dijalankan melalui bash pada port 4444 dan Python pada port 8888, serta dapat dipicu melalui Redis.

Eksfiltrasi data menjadi komponen utama dalam kampanye ini. Paket seperti strapi-plugin-events dan strapi-plugin-monitor dirancang untuk mengumpulkan kredensial dalam skala besar. Mereka menelusuri file .env, variabel lingkungan, konfigurasi Strapi, serta file sistem untuk menemukan private key, token Kubernetes, dan informasi jaringan. Data yang dikumpulkan mencakup koneksi PostgreSQL, isi Redis, hingga informasi Docker dan Kubernetes, yang semuanya dikirim ke server command-and-control menggunakan HTTP tanpa enkripsi.

Teknik eksfiltrasi yang digunakan juga menunjukkan tingkat kecanggihan tertentu. Salah satu varian payload menerapkan metode chunking, memecah data besar menjadi segmen 50KB untuk menghindari batasan ukuran atau deteksi. Setiap bagian dikirim dengan penomoran tertentu, memungkinkan rekonstruksi data secara lengkap di sisi server penyerang. Jalur komunikasi C2 menggunakan path berbasis routing seperti /c2/<id>/env untuk file lingkungan atau /c2/<id>/redis-full untuk dump Redis.

Eksploitasi terhadap PostgreSQL dilakukan secara langsung dalam paket seperti strapi-plugin-seed. Dengan menggunakan kredensial hardcoded, paket ini dapat terhubung ke database, mengekstrak tabel yang berkaitan dengan transaksi, wallet, dan deposit, serta melakukan enumerasi terhadap seluruh database dalam server. Bahkan terdapat probing spesifik terhadap nama database seperti guardarian, guardarian_payments, exchange, dan custody, yang memperkuat indikasi bahwa serangan ini menargetkan platform tertentu secara spesifik.

Aspek persistence juga menjadi perhatian utama dalam kampanye ini. Versi tertentu dari strapi-plugin-api menanamkan agen C2 persisten ke dalam sistem dengan menulis file seperti /tmp/.node_gc.js dan menjalankannya secara terpisah. Selain itu, entri crontab ditambahkan untuk memastikan payload tetap aktif meskipun sistem direstart. Teknik fileless execution juga digunakan melalui perintah node -e, yang memungkinkan eksekusi kode tanpa meninggalkan artefak file yang jelas.

Semua data yang dicuri, termasuk private key, mnemonic wallet, dan kredensial lainnya, dikirim melalui HTTP ke alamat IP 144.31.107.231 pada port 9999 tanpa enkripsi. Hal ini berarti bahwa data sensitif dapat dengan mudah diintersepsi jika lalu lintas jaringan dipantau, namun juga menunjukkan bahwa fokus utama penyerang adalah kecepatan dan volume eksfiltrasi, bukan stealth tingkat jaringan.

Indikasi kuat bahwa ini adalah penargetan yang dilakukan terlihat dari referensi spesifik terhadap infrastruktur tertentu dalam payload, termasuk path direktori, nama layanan, serta kredensial database yang sudah diketahui sebelumnya. Hal ini menandakan bahwa penyerang kemungkinan telah memiliki akses awal atau intelijen sebelumnya terhadap target, bukan sekadar melakukan serangan acak terhadap ekosistem NPM.

Hal ini juga bersamaan dengan lonjakan serangan yang kemudian menargetkan ekosistem sumber terbuka atau Open Source melalui rantai serangan:

1. user atau pengguna GitHub dengan nama ezmtebo teridentifikasi mengirim lebih dari 256 pull request yang telah disisipi payload pencurian kredensial. Teknik yang digunakan memanfaatkan log CI/CD serta komentar pada pull request untuk mengekstrak secret dari lingkungan pengembangan tanpa memicu kecurigaan langsung.

2. Organisasi GitHub dev-protocol dilaporkan mengalami pengambilalihan akun dan dimanfaatkan untuk mendistribusikan bot trading Polymarket berbahaya. Paket tersebut mengandalkan dependency npm dengan teknik typosquatting untuk mencuri private key wallet serta membuka akses backdoor melalui SSH.

3. Paket Emacs kubernetes-el/kubernetes-el menjadi korban kompromi melalui eksploitasi celah pada workflow GitHub Actions yang dikenal sebagai Pwn Request. Serangan ini memungkinkan pelaku mendapatkan GITHUB_TOKEN milik repository, yang kemudian digunakan untuk menyisipkan kode destruktif ke dalam proyek.

4. Workflow GitHub Actions milik proyek xygeni/xygeni-action berhasil ditembus setelah kredensial maintainer dicuri. Akses ini dimanfaatkan untuk menanamkan backdoor berupa reverse shell. Setelah insiden tersebut, pihak Xygeni telah melakukan penguatan kontrol keamanan pada sistem mereka.

5. Paket npm mgc disusupi melalui pengambilalihan akun maintainer, yang kemudian digunakan untuk merilis versi berbahaya. Versi ini mengandung dropper yang mengunduh payload sesuai platform, yakni trojan berbasis Python untuk Linux dan varian PowerShell untuk Windows. Pola serangan ini memiliki kemiripan dengan kampanye supply chain sebelumnya yang menargetkan Axios dan dikaitkan dengan aktor UNC1069 yang di sinyalir dari Korea Utara.

6. Sebuah paket npm berbahaya dengan nama express-session-js ditemukan meniru paket populer "express-session". Paket ini berfungsi sebagai dropper yang mengunduh remote access trojan (RAT), membuka akses jarak jauh ke sistem korban.

7. Paket PyPI bittensor-wallet versi 4.0.2 diketahui telah dimodifikasi untuk menyisipkan backdoor. Payload ini secara khusus dirancang untuk mengekstrak private key dari wallet pengguna.

8. Paket npm @azure/service-bus-node mengandung komponen berbahaya berupa dropper yang mengambil RAT dari layanan JSON Keeper. Malware ini digunakan untuk mencuri data sekaligus mempertahankan akses persisten dengan membangun koneksi ke alamat IP 216.126.237[.]71 melalui library Socket.IO.

Dampak dari serangan ini sangat signifikan. Sistem yang terinfeksi dapat mengalami kompromi penuh, termasuk akses root, kebocoran data sensitif, serta pengambilalihan layanan. Oleh karena itu, setiap pengguna yang pernah menginstal paket-paket tersebut disarankan untuk menganggap sistem mereka telah sepenuhnya dikompromikan.

Langkah mitigasi yang direkomendasikan mencakup rotasi seluruh kredensial yang mungkin terekspos, termasuk password database, API key, dan JWT secret. Password PostgreSQL yang digunakan dalam payload harus segera diganti jika masih digunakan. Token Kubernetes juga perlu dicabut untuk mencegah penyalahgunaan lebih lanjut. Selain itu, sistem harus diperiksa untuk mekanisme persistence seperti file mencurigakan di direktori /tmp, entri crontab yang tidak dikenal, serta proses node yang berjalan tanpa konteks jelas.

Audit terhadap Redis juga diperlukan, khususnya dengan memeriksa konfigurasi direktori melalui perintah CONFIG GET dir untuk memastikan tidak ada manipulasi. Penggunaan alat keamanan seperti pemindai dependency dapat membantu mendeteksi paket berbahaya sebelum mencapai lingkungan produksi. Pencegahan di tahap instalasi menjadi krusial mengingat serangan ini memanfaatkan kepercayaan terhadap ekosistem open-source.

Kasus ini menegaskan kembali bahwa supply chain attack di ekosistem JavaScript masih menjadi ancaman nyata, terutama bagi proyek yang mengandalkan banyak dependency eksternal. Dengan kompleksitas payload dan tingkat target yang spesifik, kampanye ini menunjukkan evolusi serangan yang tidak lagi bersifat oportunistik, melainkan dirancang dengan presisi tinggi untuk mencapai tujuan tertentu.


Sumber:

safedep

stepsecurity

xygeni

PyPi

cyberandramen


Baca Juga:

Claude Code Repo


Share this

Add Comments


EmoticonEmoticon