Gigitan ular: Waspadai pustaka Python berbahaya

Awal pekan ini, dua pustaka Python yang berisi kode berbahaya telah dihapus dari Python Package Index (PyPI), repositori resmi Python untuk paket pihak ketiga.

Ini adalah inkarnasi terbaru dari masalah yang dihadapi oleh banyak komunitas pengembangan perangkat lunak modern, menimbulkan pertanyaan penting bagi semua pengembang yang mengandalkan perangkat lunak open source: Bagaimana Anda memungkinkan orang untuk menyumbangkan kode mereka sendiri ke repositori umum untuk digunakan kembali , tanpa repo itu menjadi vektor serangan?

Pada umumnya, repositori perpustakaan pihak ketiga resmi untuk bahasa dijalankan sebagai proyek sumber terbuka, seperti Python, aman. Namun versi pustaka yang berbahaya dapat menyebar dengan cepat jika tidak dicentang. Dan fakta bahwa sebagian besar repositori bahasa tersebut diawasi oleh sukarelawan berarti bahwa hanya begitu banyak mata yang melihat dan kontribusi tidak selalu mendapatkan pengawasan yang diperlukan.

Dua paket berbahaya yang dihapus dari PyPI minggu ini menggunakan trik yang disebut "typo squatting," yaitu memilih nama yang cukup mirip dengan paket yang biasa digunakan untuk menyelipkan pemberitahuan, dan itu dapat mengakibatkan penginstalan tidak disengaja jika seseorang salah mengetik nama yang dimaksudkan. Mencoba untuk menyamar sebagai paket dateutildan jellyfish— digunakan untuk memanipulasi objek datetime Python dan melakukan perkiraan kecocokan pada string, masing-masing — paket berbahaya diberi nama  python-dateutildan jeIlyfish (dengan huruf besar I bukan huruf kecil pertama L).

Saat dipasang,  python-dateutildan jeIlyfishberperilaku persis seperti aslinya — kecuali untuk mencoba mencuri data pribadi dari pengembang. Paul Ganssle, seorang pengembang di dateutiltim, mengatakan kepada ZDNet bahwa kemungkinan alasan serangan itu adalah untuk mencari tahu proyek apa yang dikerjakan korban, untuk meluncurkan serangan selanjutnya pada proyek-proyek itu.

Pustaka Python umumnya terbagi dalam dua kubu — modul yang membentuk pustaka standar yang dikirimkan dengan waktu proses Python, dan paket pihak ketiga yang dihosting di PyPI. Sedangkan modul di pustaka standar diperiksa dengan cermat dan diperiksa dengan ketat, PyPI jauh lebih terbuka menurut desain, memungkinkan komunitas pengguna Python untuk secara bebas menyumbangkan paket untuk digunakan kembali.

Proyek berbahaya telah ditemukan di PyPI sebelumnya. Dalam satu kasus, paket jahat salah ketik membuat kerangka kerja Django, pokok pengembangan web dengan Python. Tetapi masalahnya tampaknya menjadi semakin mendesak. 

“Sebagai anggota tim keamanan Python (PSRT), saya mendapatkan laporan tentang kesalahan ketik jongkok atau paket berbahaya setiap minggu,” kata Christian Heimes, pengembang inti Python, di forum diskusi pengembangan resmi Python. “(Fakta menarik: Ada empat utas email tentang konten berbahaya di PyPI bulan ini dan hari ini hanya 4 Desember)” 

Python Software Foundation memiliki rencana untuk melindungi PyPI dari penyalahgunaan, tetapi mereka akan membutuhkan waktu untuk diluncurkan sepenuhnya. Awal tahun ini, tim Python meluncurkan otentikasi dua faktor sebagai opsi untuk pengguna PyPI yang mengunggah paket. Itu memberikan lapisan perlindungan bagi pengembang yang mengunggah ke PyPI, membuatnya lebih sulit untuk membajak akun mereka dan mengunggah perangkat lunak perusak atas nama mereka. Tapi itu tidak membahas kesalahan ketik atau penyalahgunaan hak milik bersama lainnya.

Inisiatif lainnya termasuk mencari cara untuk mengimbangi masalah tersebut dengan otomatisasi. Kelompok kerja dalam Python Software Foundation yang menangani pengemasan telah menerima hibah dari Facebook Research untuk membuat fitur keamanan PyPI yang lebih canggih, seperti penandatanganan kriptografi paket PyPI, dan deteksi otomatis unggahan berbahaya (bukan penyaringan manual padat karya).

Pihak ketiga juga menawarkan perlindungan. Reversing Labs, sebuah firma keamanan independen, menemukan serangan berbasis PyPI setelah melakukan pemindaian seluruh repositori untuk format file yang mencurigakan. Tetapi perusahaan mengakui bahwa pemindaian semacam itu bukanlah pengganti pemeriksaan internal. "Untuk sangat mengurangi kemungkinan menghosting malware," tulis perusahaan, "repositori semacam itu akan mendapat manfaat dari pemrosesan yang berkelanjutan dan proses peninjauan yang lebih baik."

Solusi terbaik, seperti yang diketahui oleh pengembang Python sendiri, harus datang dari dalam.