Kempen serangan yang canggih baru-baru ini menyasarkan aliran kerja GitHub Actions untuk mencuri token penerbitan PyPI , menyerlahkan kebimbangan keselamatan yang serius tentang cara pembangun menguruskan rahsia dalam sistem integrasi berterusan. Walaupun tiada pakej PyPI yang benar-benar diterbitkan oleh penyerang, insiden ini mendedahkan kelemahan dalam cara banyak projek mengendalikan kelayakan penerbitan mereka.
Serangan bermula pada 5 September apabila penyelidik GitGuardian menemui kod hasad yang disuntik ke dalam aliran kerja GitHub Actions . Aliran kerja yang diubah suai ini direka untuk menghantar token PyPI yang disimpan sebagai rahsia GitHub ke pelayan luaran yang dikawal oleh penyerang. Kempen ini menjejaskan banyak repositori di seluruh platform, menunjukkan sifat meluas ancaman keselamatan ini.
Garis Masa Serangan
- 5 September: Penemuan awal oleh GitGuardian terhadap aliran kerja berniat jahat dalam projek fastuuid
- 5 September: Penemuan yang diperluas dilaporkan melalui e-mel (tertangguh disebabkan penapisan spam)
- 10 September: Pasukan keselamatan PyPI menyedari melalui saluran lain
- 15 September: Penyelenggara projek yang terjejas dimaklumkan dan token dibatalkan
Masalah Asas dengan Sistem CI Pihak Ketiga
Insiden ini telah mencetuskan perbincangan sengit tentang risiko yang wujud dalam menggunakan sistem integrasi berterusan pihak ketiga untuk operasi sensitif. Ahli komuniti mempersoalkan kebijaksanaan mempercayai GitHub Actions dengan rahsia API sambil pada masa yang sama membenarkannya menjalankan kod daripada pihak ketiga lain.
Model keselamatan menjadi lebih membimbangkan apabila mempertimbangkan bahawa GitHub Actions menggalakkan pembangun untuk mengimport kod pihak ketiga rawak ke dalam aliran kerja mereka menggunakan tag yang boleh berubah. Ini bermakna tindakan yang kelihatan selamat hari ini boleh menjadi hasad pada masa hadapan jika repositori asal dikompromi atau dipindahkan kepada pelakon jahat.
Sistem CI itu sendiri menggalakkan anda untuk mengimport kod pihak ketiga rawak ke dalam aliran kerja CI anda, berdasarkan tag boleh berubah yang kemudiannya menerima keistimewaan penuh - keseluruhan perkara ini adalah gila.
Walaupun pembangun boleh menetapkan hash komit tertentu dan bukannya menggunakan tag, amalan ini bukanlah tingkah laku lalai dan mewujudkan overhed penyelenggaraan tambahan yang dielakkan oleh banyak pasukan.
Kelebihan Python dalam Keselamatan Pakej
Perbincangan juga telah menyerlahkan kontras yang menarik antara ekosistem Python dan JavaScript . Pemerhatian komuniti mencadangkan bahawa Python menghadapi serangan berkaitan pakej yang lebih sedikit berbanding npm , walaupun populariti Python yang semakin meningkat. Perbezaan ini nampaknya berpunca daripada perpustakaan standard Python yang komprehensif, yang mengurangkan keperluan untuk kebergantungan luaran.
Aplikasi Flask biasa mungkin hanya memerlukan 15 entri dalam fail keperluannya, manakala projek JavaScript yang setara sering menarik beratus-ratus kebergantungan transitif. Pakej Python utama seperti NumPy mempunyai kebergantungan Python yang minimum, sebaliknya bergantung pada perpustakaan sistem yang mantap dan bukannya jaringan kompleks pakej pihak ketiga.
Penyelesaian Trusted Publishers
Insiden ini mengukuhkan nilai ciri Trusted Publishers GitHub sebagai pertahanan terhadap kecurian token. Tidak seperti token API berumur panjang yang disimpan sebagai rahsia, Trusted Publishers menggunakan token berumur pendek yang dijana secara automatik untuk repositori tertentu dan tamat tempoh dengan cepat.
Walaupun penyerang berjaya mengubah suai aliran kerja menggunakan Trusted Publishers , token yang dicuri mempunyai jangka hayat dan skop yang terhad. Ini mengurangkan dengan ketara tingkap peluang untuk aktiviti hasad dan mengehadkan potensi kerosakan daripada serangan yang berjaya.
Langkah Keselamatan yang Disyorkan
- Gantikan token jangka panjang dengan Trusted Publishers untuk GitHub Actions
- Semak sejarah keselamatan akaun secara berkala dalam Tetapan Akaun PyPI
- Tetapkan GitHub Actions kepada SHA komit tertentu dan bukannya tag yang boleh diubah
- Kurangkan kebergantungan luaran seboleh mungkin
- Pantau repositori untuk pengubahsuaian aliran kerja yang tidak dibenarkan
Tindak Balas Pantas dan Pemulihan
Pasukan keselamatan PyPI bertindak balas dengan berkesan sebaik sahaja mereka menyedari kempen tersebut. Semua token yang terjejas telah dibatalkan, dan penyelenggara projek menerima pemberitahuan langsung tentang kompromi tersebut. Ramai pembangun secara proaktif memutar kelayakan mereka dan membuang aliran kerja hasad daripada sejarah repositori mereka.
Insiden ini berfungsi sebagai peringatan untuk komuniti pembangunan tentang implikasi keselamatan amalan CI/CD moden. Apabila automasi menjadi semakin penting dalam pembangunan perisian, keperluan untuk langkah keselamatan yang kukuh dan pertimbangan teliti hubungan kepercayaan menjadi lebih kritikal berbanding sebelum ini.
Rujukan: Token Exfiltration Campaign via GitHub Actions Workflows