4.837 Akun GitHub Dibajak Sebar Pencuri Rahasia CI di 1.806 Repositori
Aikido Security melaporkan 4.837 akun GitHub yang dibajak digunakan untuk menanam pencuri rahasia (secret stealer) di repositori yang dapat ditulis akun-akun tersebut. Stealer itu berjalan di sedikitnya 1.806 repositori dan menargetkan kredensial cloud serta rahasia CI.
Kronologi Serangan dan Skala Repositori Terdampak
Serangan mulai berlangsung pada Selasa, 10 November 2026. Menurut analisis Aikido Security, penyerang memakai kredensial curian untuk membuka pull request (PR) berjudul docs: dependency audit notes dari cabang bernama wfx-docs. PR itu berfungsi sebagai uji coba: apakah akun yang dibajak punya izin menulis ke repositori target.
Uji coba itu dikirim ke 61.764 repositori. Dari jumlah tersebut, stealer berhasil ditanam dan dijalankan di sedikitnya 1.806 repositori. Setelah menanam stealer, penyerang membatalkan perubahan dalam waktu sekitar satu menit dan biasanya menghapus workflow run beserta log-nya.
“Setiap rahasia dan peran cloud yang tersedia bagi workflow repositori harus dianggap telah dikompromikan,” tulis Aikido dalam analisis teknisnya, seperti dikutip The Hacker News.
Pemeriksaan The Hacker News pada Kamis pagi menemukan PR baru dengan judul sama masih dibuka setelah pencarian GitHub Aikido berakhir pada Rabu. Tiga PR yang diperiksa, dibuka antara pukul 05.04 dan 05.38 UTC, berasal dari cabang wfx-docs. Belum jelas apakah stealer ikut berjalan di repositori-repositori itu.
Pihak yang Terlibat dan Pernyataan Aikido Security
Aikido Security adalah perusahaan perangkat lunak keamanan yang melakukan analisis dan mempublikasikan temuan ini. Mereka menegaskan bahwa akun mana pun yang membuka salah satu PR uji coba penyerang harus dianggap sudah dikompromikan, meskipun stealer tidak pernah berjalan.
“Kami tidak mengatribusikan gelombang November ini kepada aktor yang sama pada tahap ini,” kata Aikido, seraya menjelaskan bahwa infrastruktur, alat, dan metode yang dipakai berbeda. Kredensial curian, menurut mereka, sering berpindah tangan ke beberapa penyerang.
Analisis Aikido tidak menjelaskan bagaimana penyerang memperoleh kredensial tersebut dan tidak memberikan saran bagi pemilik akun yang dicuri. Perusahaan hanya menyebut bahwa angka 1.806 repositori mencakup repositori publik yang bisa mereka lihat.
Selain itu, 10.431 PR uji coba dikirim melalui akses kolaborator atau organisasi, bukan hanya repositori milik akun yang dibajak. Sebanyak 92% di antaranya masih terbuka saat Aikido memeriksa.
Cara Kerja Stealer dan Tanda-Tanda Repositori Terdampak
Stealer dirancang mengumpulkan kredensial dari setiap sumber di runner. Sasaran utamanya meliputi GitHub Actions secrets dan variables, GITHUB_TOKEN milik workflow, token OIDC dan runtime Actions, kunci layanan AI, serta rahasia di memori proses runner.
Stealer juga membaca file kredensial AWS, Azure, GCP, Kubernetes, npm, PyPI, SSH, dan alat lain dari lokasi standarnya. Ia menyalin repositori, 100 commit terakhir, dan artefak workflow terbaru. Pada self-hosted runner, stealer mengambil kredensial cloud dari metadata instance, status kontainer Docker, dan unit systemd.
Aikido mencantumkan sejumlah tanda yang bisa diperiksa pada repositori yang dapat ditulis, sejak Selasa:
- Cabang wfx-docs
- Cabang chore/[a-z0-9]{8} yang berumur pendek
- Cabang ci-check-[0-9]{4}
- Judul PR docs: dependency audit notes
- Pesan commit ci: refresh build cache yang menambah sekitar 1.500 baris ke workflow yang sudah ada
- Pesan commit chore: add ci helper yang menambahkan skrip .ci-xxxxxx.sh dan postinstall hook di package.json
- Pesan commit chore: add dependency audit workflow yang menambahkan .github/workflows/build-audit-xxxxxx.yml
- Pesan commit ci: restore dan ci: cleanup
- SHA-256 skrip stealer: 89695abb392d5cfd4972672961e644bb46baa98aa1ed7173c2a2816c762735cf
- Alamat IP exfiltrasi: 194.150.166[.]244:8080/exfil dan 18.143.168[.]96:8080/exfil
Repositori bisa saja tidak menunjukkan artefak wfx-loot, entri wfx-cache, atau ringkasan langkah WFX-BEGIN, tetapi data tetap hilang. Dalam kampanye ini, stealer hanya mengirim data melalui HTTP POST ke dua alamat IP tersebut. Tanda yang lebih andal adalah hilangnya nomor run pada commit penyerang.
Dampak ke Ekosistem Paket dan Kredensial Cloud
Stealer tidak sekadar mencuri rahasia. Ia juga dirancang memakai kredensial itu untuk masuk lebih dalam ke akun cloud. Stealer menukar token GitHub OIDC menjadi sesi AWS, GCP, dan Azure. Di AWS, ia bisa membuat access key jangka panjang untuk pengguna IAM.
Beberapa langkahnya dibuat agar bertahan terhadap rotasi kredensial. Stealer dapat menulis ulang kebijakan kepercayaan (trust policy) sebuah peran AWS sehingga peran itu terbuka untuk akun AWS mana pun. Ia juga bisa menambahkan federated identity credential dengan awalan wfx-ci- ke aplikasi Azure AD. Akibatnya, workflow di repositori yang dikompromikan bisa masuk ke Azure tanpa secret tersimpan, bahkan setelah semua token dirotasi.
Stealer juga menyentuh setidaknya satu paket Packagist dan satu modul Go melalui pemicu publikasi otomatis. Sedikitnya 50 pengguna yang dikompromikan tampak menerbitkan paket untuk npm, Go, Packagist, PyPI, atau crates.
Versi 3.14.3 dari paket Packagist digitalelvis/neuronai-studio dinyatakan berbahaya. Siapa pun yang menginstal atau membuka paket itu harus menganggap mesinnya sudah terkompromi. Dua versi modul Go github.com/onuragtas/docker-env, yakni v1.0.278 dan v1.0.280, hanya membawa stealer di file workflow GitHub Actions. Kode Go dan biner rilisnya tidak berubah, dan build Go tidak menjalankan file workflow, sehingga pengguna modul itu mungkin tidak terpengaruh. Meski demikian, Aikido tetap menyarankan penghapusan versi tersebut.
Aikido menyebut penyerang tampaknya lebih memburu rahasia CI daripada menyebar lewat paket. Namun, stealer memiliki pengaturan untuk repositori privat, yang menurut perusahaan mengindikasikan stealer mungkin juga berjalan di repositori privat.
Kaitan dengan GhostAction dan Langkah Selanjutnya
Akun-akun yang dipakai pekan ini tumpang tindih dengan akun yang terkena gelombang GhostAction pada Oktober. Dalam insiden itu, akun GitHub curian mendorong workflow pencuri rahasia ke repositori.
Akun yang terkena pada Oktober sekitar 1.000 kali lebih mungkin dipakai pekan ini dibandingkan akun aktif lainnya. Di lebih dari 100 repositori, stealer baru ditambahkan ke file workflow Oktober, sementara langkah lama yang mengirim data keluar tetap dibiarkan.
Hingga Kamis pagi, PR baru dengan judul sama masih muncul. Ini menunjukkan kampanye belum sepenuhnya berhenti. Pemilik repositori yang menemukan tanda-tanda di atas perlu mencabut semua rahasia dan kredensial cloud yang dapat diakses workflow, memeriksa log audit, dan meninjau ulang izin akun kolaborator.
Bagi organisasi, kejadian ini menegaskan bahwa izin menulis ke repositori—terutama melalui akses kolaborator atau organisasi—adalah pintu masuk yang sensitif. Uji coba massal ke 61.764 repositori menunjukkan penyerang bisa memetakan target secara luas sebelum menanam stealer.
Analisis Redaksi
Kampanye ini memperlihatkan pergeseran yang mengkhawatirkan: pencurian kredensial tidak lagi berhenti pada satu akun, tetapi menjadi operasi berskala industri. Angka 4.837 akun dan 61.764 PR uji coba bukan sekadar statistik. Itu adalah bukti bahwa penyerang bisa mengotomatisasi pengintaian dan eksekusi di seluruh ekosistem GitHub dalam hitungan hari.
Yang paling meresahkan adalah kemampuan stealer bertahan terhadap rotasi kredensial. Menulis ulang trust policy AWS dan menambahkan federated identity credential ke Azure AD berarti rotasi token biasa tidak cukup. Organisasi harus mengaudit kebijakan kepercayaan peran cloud dan kredensial identitas federasi, bukan hanya mengganti secret.
Aikido memilih tidak mengatribusikan serangan November ini ke aktor GhostAction. Sikap itu masuk akal secara teknis, tetapi juga menunjukkan bahwa kredensial curian berpindah tangan dengan cepat. Pertahanan terbaik bukan menebak siapa penyerangnya, melainkan memperketat izin tulis repositori, memantau PR mencurigakan, dan menganggap setiap akun yang membuka PR uji coba sebagai sudah bocor.
Sumber: aikido.dev
What's Your Reaction?
Like
0
Dislike
0
Love
0
Funny
0
Angry
0
Sad
0
Wow
0