Security

GitHub dan PyPI Tambah Pertahanan Baru Lawan Supply Chain Attack

GitHub dan Python Package Index (PyPI) menambahkan mekanisme pertahanan berbasis waktu untuk mengurangi risiko serangan supply chain pada ekosistem open source. Pendekatan ini dirancang untuk memberi jeda sebelum update dependency baru masuk ke proyek, serta mencegah rilis lama yang sudah dipercaya disusupi file baru setelah dipublikasikan.

Dua perubahan utama yang diumumkan adalah cooldown default tiga hari pada Dependabot untuk version updates, serta aturan PyPI yang menolak upload file baru ke release yang sudah berumur lebih dari 14 hari. Keduanya menargetkan pola serangan berbeda, tetapi memiliki tujuan yang sama: mempersempit jendela waktu yang biasa dimanfaatkan pelaku untuk menyisipkan paket berbahaya.

Langkah ini muncul setelah ekosistem pengembangan perangkat lunak mengalami sejumlah insiden supply chain besar selama setahun terakhir. Paket populer yang sempat disusupi dapat menyebar sangat cepat karena sistem update otomatis, CI/CD, dan dependency manager sering mengambil rilis terbaru hanya beberapa menit setelah tersedia.

Dependabot Kini Menunggu Tiga Hari

Dependabot adalah layanan GitHub yang memantau dependency proyek dan membuka pull request ketika ada versi baru atau patch keamanan. Untuk update versi non-keamanan, GitHub kini menerapkan cooldown default minimal tiga hari sebelum Dependabot membuka pull request.

Cooldown ini tidak berlaku untuk security updates. Jika advisory keamanan diterbitkan untuk paket yang digunakan proyek, Dependabot tetap dapat membuka pull request patch secepat mungkin. Jeda tiga hari difokuskan pada version updates biasa, yaitu update yang tujuannya menjaga dependency tetap baru, bukan merespons kerentanan yang sudah diketahui publik.

GitHub menjelaskan bahwa banyak serangan supply chain modern memanfaatkan rilis baru yang berumur sangat pendek. Paket berbahaya dapat dipublikasikan, terdeteksi dalam hitungan jam, lalu ditarik dari registry. Namun, dalam periode singkat tersebut, tool otomatis sudah bisa mengambil versi berbahaya dan membawanya ke pipeline pengembangan.

Mengurangi Risiko Rilis Berbahaya Berumur Pendek

Dengan menunggu beberapa hari, Dependabot memberi waktu bagi maintainer, peneliti keamanan, scanner otomatis, dan komunitas untuk menemukan rilis yang mencurigakan sebelum update tersebut sampai ke pull request proyek pengguna.

GitHub menyebut tiga hari sebagai titik tengah antara menghindari rilis berisiko dan tetap menjaga dependency cukup mutakhir. Pengguna masih dapat mengatur waktu cooldown yang lebih pendek atau lebih panjang melalui opsi cooldown di konfigurasi dependabot.yml.

Meski demikian, cooldown bukan solusi tunggal. GitHub tetap menyarankan penggunaan lockfile untuk dependency pinning, pembatasan scope token dalam build pipeline, review update sebelum merge, serta menonaktifkan install scripts yang tidak diperlukan di lingkungan CI.

PyPI Tutup Celah Release Poisoning

Di sisi PyPI, aturan baru mencegah maintainer mengunggah file tambahan ke release yang sudah berumur lebih dari 14 hari. Tujuannya adalah mencegah skenario release poisoning, yakni kondisi ketika attacker yang berhasil mencuri publishing token atau menguasai workflow proyek menambahkan file berbahaya ke rilis lama yang sudah dipercaya pengguna.

Risiko teknik ini cukup serius karena rilis lama sering dianggap stabil. Jika file tambahan dapat disisipkan ke rilis lama, sebagian pengguna mungkin menerima file yang sudah terkontaminasi sementara pengguna lain tetap memakai file lama yang bersih. Kondisi tersebut dapat menciptakan status rilis yang membingungkan: sebagian artefak aman, sebagian lain berbahaya.

PyPI menyatakan belum mengetahui adanya serangan masa lalu yang secara pasti menyalahgunakan teknik tersebut. Namun, pembatasan ini diterapkan secara preventif karena secara teknis celah tersebut memungkinkan penyalahgunaan jika pelaku menyadari dan memiliki akses penerbitan yang cukup.

Dampak ke Maintainer Python

Sebelum aturan ini diterapkan, sebagian proyek menggunakan kemampuan upload file tambahan ke rilis lama untuk menambahkan dukungan versi Python baru. PyPI mengevaluasi dampak perubahan tersebut dengan melihat pola upload file ke release lama, termasuk kompatibilitas wheel untuk Python 3.14.

Hasilnya menunjukkan bahwa dampaknya relatif kecil. Dari 15.000 paket teratas yang dianalisis, hanya 56 proyek yang pernah mempublikasikan wheel kompatibel Python 3.14 lebih dari 14 hari setelah release tersedia. Dengan data tersebut, konsensus komunitas mengarah pada pendekatan bahwa maintainer sebaiknya membuat versi baru jika ingin menambahkan dukungan baru.

Patch PyPI untuk menolak file baru pada release lama digabungkan pada 8 Juli 2026. Ke depan, PyPI berencana memberi semantik yang lebih jelas untuk release yang sudah tertutup melalui Upload 2.0 API dan Staged Previews.

Pertahanan Supply Chain Makin Berlapis

Perubahan di GitHub dan PyPI menunjukkan bahwa keamanan supply chain tidak hanya bergantung pada deteksi malware, tetapi juga pada desain alur distribusi paket. Dengan menambahkan jeda waktu dan membatasi mutabilitas release lama, platform dapat mengurangi peluang attacker menyalahgunakan kecepatan otomatisasi.

Bagi organisasi, perubahan ini sebaiknya dilengkapi dengan kebijakan internal seperti dependency pinning, review pull request otomatis, token dengan hak minimum, validasi provenance, serta monitoring terhadap update dependency yang tidak biasa. Supply chain attack sering berhasil bukan karena satu kelemahan besar, melainkan karena beberapa proses otomatis saling mempercepat penyebaran kode berbahaya.

Sumber: GitHub Blog dan PyPI Blog

Leave a Reply

Your email address will not be published. Required fields are marked *


Back to top button