Teknik serangan rantai pasokan baru yang menargetkan registri Python Package Index (PyPI) telah dieksploitasi secara luas dalam upaya menyusup ke organisasi hilir.
Serangan ini diberi nama sandi Revival Hijack oleh firma keamanan rantai pasokan perangkat lunak JFrog, yang mengatakan metode serangan tersebut dapat digunakan untuk membajak 22.000 paket PyPI yang ada dan mengakibatkan “ratusan ribu” unduhan paket berbahaya. Paket yang rentan ini telah diunduh lebih dari 100.000 kali atau telah aktif selama lebih dari enam bulan.
“Teknik serangan ini melibatkan pembajakan paket perangkat lunak PyPI dengan memanipulasi opsi untuk mendaftarkannya kembali setelah dihapus dari indeks PyPI oleh pemilik aslinya,” kata peneliti keamanan JFrog Andrey Polkovnychenko dan Brian Moussalli dalam sebuah laporan yang dibagikan kepada The Hacker News.
Pada intinya, serangan tersebut bergantung pada fakta bahwa paket Python yang diterbitkan dalam repositori PyPI dapat terhapus, sehingga nama proyek yang terhapus tersebut dapat didaftarkan kepada pengguna lain.
Statistik yang dibagikan oleh JFrog menunjukkan bahwa sekitar 309 paket dihapus setiap bulan secara rata-rata. Hal ini dapat terjadi karena sejumlah alasan: Kurangnya pemeliharaan (misalnya, abandonware), paket diterbitkan ulang dengan nama yang berbeda, atau memperkenalkan fungsionalitas yang sama ke dalam pustaka resmi atau API bawaan.
Hal ini juga menimbulkan permukaan serangan yang menguntungkan dan lebih efektif daripada typosquatting dan yang dapat dimanfaatkan penyerang, menggunakan akun mereka sendiri, untuk menerbitkan paket berbahaya dengan nama yang sama dan versi yang lebih tinggi untuk menginfeksi lingkungan pengembang.
“Teknik ini tidak bergantung pada korban yang membuat kesalahan saat memasang paket,” kata para peneliti, sambil menunjukkan bagaimana Revival Hijack dapat memberikan hasil yang lebih baik dari sudut pandang penyerang. “Memperbarui paket yang 'dulu aman' ke versi terbarunya dipandang sebagai operasi yang aman oleh banyak pengguna.”
Meskipun PyPI memiliki pengaman terhadap peniruan identitas penulis dan upaya kesalahan ketik, analisis JFrog menemukan bahwa menjalankan perintah “pip list –outdated” akan mencantumkan paket palsu sebagai versi baru dari paket asli, sedangkan yang pertama sesuai dengan paket berbeda dari penulis yang sama sekali berbeda.
Yang lebih memprihatinkan lagi, menjalankan perintah “pip install –upgrade” mengganti paket sebenarnya dengan paket palsu tanpa memberikan peringatan bahwa pembuat paket telah berubah, sehingga berpotensi menimbulkan risiko besar pada rantai pasokan perangkat lunak bagi pengembang yang tidak mengetahuinya.
JFrog mengatakan pihaknya mengambil langkah membuat akun pengguna PyPI baru yang disebut “security_holding” yang digunakannya untuk membajak paket-paket yang rentan secara aman dan menggantinya dengan placeholder kosong sehingga dapat mencegah pelaku jahat mengambil keuntungan dari paket-paket yang dihapus.
Selain itu, masing-masing paket ini telah diberi nomor versi sebagai 0.0.0.1 – kebalikan dari skenario serangan kebingungan dependensi – untuk menghindari penarikan oleh pengembang saat menjalankan perintah pip upgrade.
Yang lebih meresahkan adalah Revival Hijack telah dieksploitasi secara luas, dengan aktor ancaman tak dikenal bernama Jinnis yang memperkenalkan versi jinak dari paket bernama “pingdomv3” pada tanggal 30 Maret 2024, hari yang sama ketika pemilik asli (cheneyyan) menghapus paket tersebut dari PyPI.
Pada tanggal 12 April 2024, pengembang baru tersebut dikatakan telah merilis pembaruan yang berisi muatan berkode Base64 yang memeriksa keberadaan variabel lingkungan “JENKINS_URL”, dan jika ada, mengeksekusi modul tahap berikutnya yang tidak diketahui yang diambil dari server jarak jauh.
“Hal ini menunjukkan bahwa penyerang menunda pengiriman serangan atau merancangnya agar lebih tertarget, mungkin membatasinya pada rentang IP tertentu,” kata JFrog.
Serangan baru ini merupakan tanda bahwa pelaku ancaman sedang mengincar serangan rantai pasokan dalam skala yang lebih luas dengan menargetkan paket PyPI yang telah dihapus untuk memperluas jangkauan kampanye. Organisasi dan pengembang disarankan untuk memeriksa alur kerja DevOps mereka guna memastikan bahwa mereka tidak menginstal paket yang telah dihapus dari repositori.
“Penggunaan perilaku yang rentan dalam penanganan paket yang dihapus memungkinkan penyerang untuk membajak paket yang ada, sehingga memungkinkan untuk menginstalnya ke sistem target tanpa mengubah alur kerja pengguna,” kata Moussalli, Pemimpin Tim Riset Keamanan JFrog.
“Permukaan serangan paket PyPI terus berkembang. Meskipun ada intervensi proaktif di sini, pengguna harus selalu waspada dan mengambil tindakan pencegahan yang diperlukan untuk melindungi diri mereka sendiri dan komunitas PyPI dari teknik pembajakan ini.”