Alur Kerja GitHub Actions Dieksploitasi untuk Mencuri Token Penerbitan PyPI dalam Kampanye Serangan Massal

Tim Komunitas BigGo
Alur Kerja GitHub Actions Dieksploitasi untuk Mencuri Token Penerbitan PyPI dalam Kampanye Serangan Massal

Sebuah kampanye serangan canggih baru-baru ini menargetkan alur kerja GitHub Actions untuk mencuri token penerbitan PyPI , yang menyoroti kekhawatiran keamanan serius tentang bagaimana pengembang mengelola rahasia dalam sistem integrasi berkelanjutan. Meskipun tidak ada paket PyPI yang benar-benar diterbitkan oleh penyerang, insiden ini mengekspos kerentanan dalam cara banyak proyek menangani kredensial penerbitan mereka.

Serangan dimulai pada 5 September ketika peneliti GitGuardian menemukan kode berbahaya yang disuntikkan ke dalam alur kerja GitHub Actions . Alur kerja yang dimodifikasi ini dirancang untuk mengirim token PyPI yang disimpan sebagai rahasia GitHub ke server eksternal yang dikontrol oleh penyerang. Kampanye ini mempengaruhi banyak repositori di seluruh platform, menunjukkan sifat luas dari ancaman keamanan ini.

Kronologi Serangan

  • 5 September: Penemuan awal oleh GitGuardian terhadap workflow berbahaya dalam proyek fastuuid
  • 5 September: Temuan yang diperluas dilaporkan melalui email (tertunda karena penyaringan spam)
  • 10 September: Tim keamanan PyPI mengetahui melalui saluran lain
  • 15 September: Pengelola proyek yang terdampak diberitahu dan token dibatalkan

Masalah Fundamental dengan Sistem CI Pihak Ketiga

Insiden ini telah memicu diskusi intens tentang risiko inheren menggunakan sistem integrasi berkelanjutan pihak ketiga untuk operasi sensitif. Anggota komunitas mempertanyakan kebijaksanaan mempercayakan GitHub Actions dengan rahasia API sambil secara bersamaan memungkinkannya menjalankan kode dari pihak ketiga lainnya.

Model keamanan menjadi lebih mengkhawatirkan ketika mempertimbangkan bahwa GitHub Actions mendorong pengembang untuk mengimpor kode pihak ketiga acak ke dalam alur kerja mereka menggunakan tag yang dapat berubah. Ini berarti bahwa tindakan yang tampak aman hari ini bisa menjadi berbahaya di masa depan jika repositori asli dikompromikan atau ditransfer ke pelaku jahat.

Sistem CI itu sendiri mendorong Anda untuk mengimpor kode pihak ketiga acak ke dalam alur kerja CI Anda, berdasarkan tag yang dapat berubah yang kemudian menerima hak istimewa penuh - seluruh hal ini gila.

Meskipun pengembang dapat menyematkan hash komit tertentu alih-alih menggunakan tag, praktik ini bukanlah perilaku default dan menciptakan overhead pemeliharaan tambahan yang dihindari banyak tim.

Keunggulan Python dalam Keamanan Paket

Diskusi ini juga menyoroti kontras menarik antara ekosistem Python dan JavaScript . Pengamatan komunitas menunjukkan bahwa Python menghadapi lebih sedikit serangan terkait paket dibandingkan dengan npm , meskipun popularitas Python yang terus meningkat. Perbedaan ini tampaknya berasal dari pustaka standar Python yang komprehensif, yang mengurangi kebutuhan akan dependensi eksternal.

Aplikasi Flask tipikal mungkin hanya memerlukan 15 entri dalam file requirements-nya, sementara proyek JavaScript yang setara sering menarik ratusan dependensi transitif. Paket Python utama seperti NumPy memiliki dependensi Python minimal, mengandalkan pustaka sistem yang mapan daripada jaringan kompleks paket pihak ketiga.

Solusi Trusted Publishers

Insiden ini memperkuat nilai fitur Trusted Publishers GitHub sebagai pertahanan terhadap pencurian token. Tidak seperti token API berumur panjang yang disimpan sebagai rahasia, Trusted Publishers menggunakan token berumur pendek yang secara otomatis dihasilkan untuk repositori tertentu dan cepat kedaluwarsa.

Bahkan jika penyerang berhasil memodifikasi alur kerja menggunakan Trusted Publishers , token yang dicuri memiliki masa hidup dan cakupan terbatas. Ini secara signifikan mengurangi jendela kesempatan untuk aktivitas berbahaya dan membatasi potensi kerusakan dari serangan yang berhasil.

Langkah-Langkah Keamanan yang Direkomendasikan

  • Ganti token berumur panjang dengan Trusted Publishers untuk GitHub Actions
  • Tinjau riwayat keamanan akun secara berkala di PyPI Account Settings
  • Tetapkan GitHub Actions ke SHA commit tertentu alih-alih menggunakan tag yang dapat berubah
  • Minimalkan dependensi eksternal jika memungkinkan
  • Pantau repositori untuk modifikasi workflow yang tidak sah

Respons Cepat dan Pemulihan

Tim keamanan PyPI merespons secara efektif setelah mereka menyadari kampanye tersebut. Semua token yang terkena dampak dibatalkan, dan pengelola proyek menerima notifikasi langsung tentang kompromi tersebut. Banyak pengembang secara proaktif merotasi kredensial mereka dan menghapus alur kerja berbahaya dari riwayat repositori mereka.

Insiden ini berfungsi sebagai peringatan bagi komunitas pengembang tentang implikasi keamanan dari praktik CI/CD modern. Seiring otomasi menjadi semakin sentral dalam pengembangan perangkat lunak, kebutuhan akan langkah-langkah keamanan yang kuat dan pertimbangan hati-hati terhadap hubungan kepercayaan menjadi lebih kritis dari sebelumnya.

Referensi: Token Exfiltration Campaign via GitHub Actions Workflows