CVE-2026-97229: Celah GitLab CVSS 10.0 Sudah Dieksploitasi, Update Saja Belum Tentu Cukup
Oleh Tim APIPedia, Tim Engineering APIPedia · Terbit · 7 menit baca
Celah GitLab CVE-2026-97229 (CVSS 10.0) masuk daftar KEV CISA. Akarnya ada di regex engine Ruby, jadi cek versi GitLab dan Ruby sekaligus.
CVE-2026-97229 adalah celah eksekusi kode jarak jauh (RCE) di GitLab Community Edition dan Enterprise Edition dengan skor CVSS maksimal 10.0, dan sejak 29 Oktober 2026 masuk katalog Known Exploited Vulnerabilities (KEV) milik CISA karena sudah dipakai menyerang. Penyerang bisa menjalankan kode di server GitLab self-managed tanpa login, cukup dengan konfigurasi CI/CD yang dirancang khusus.
Yang membuat kasus ini berbeda: bug-nya tidak berada di kode GitLab, melainkan di regex engine bawaan Ruby. Server yang sudah menjalankan versi GitLab "aman" masih bisa rentan kalau Ruby di bawahnya belum ditambal. Artikel ini membahas cara kerja celahnya, versi yang terdampak, cara memeriksa server Anda, dan langkah yang perlu diambil hari ini.
Ringkasan CVE-2026-97229
| Aspek | Detail |
|---|---|
| Produk | GitLab CE dan EE (self-managed) |
| Jenis celah | Integer overflow yang berujung RCE tanpa autentikasi |
| Skor | CVSS 10.0 (Critical) |
| Akar masalah | Onigmo, regex engine di dalam Ruby |
| Patch GitLab | 19.2.8, 19.3.5, 19.4.2 (rilis 12 Oktober 2026) |
| Patch Ruby upstream | 3.3.13, 3.4.12, 4.0.9 (rilis 22-23 Oktober 2026) |
| Status eksploitasi | Masuk CISA KEV 29 Oktober 2026 |
| Tenggat instansi federal AS | 1 November 2026 |
| GitLab.com | Sudah ditambal sebelum celah diumumkan |
Bagaimana celah regex bisa menjadi RCE?
Regex engine mengompilasi setiap pola menjadi program bytecode kecil. Menurut analisis Rapid7, Onigmo salah menghitung ukuran program tersebut akibat integer overflow. Konfigurasi CI/CD yang berisi path repositori dengan karakter UTF-8 tertentu memaksa regex dikompilasi ulang setelah pemeriksaan validasi lolos. Hasil kompilasi ulang berisi instruksi tidak valid yang merusak alur kontrol di proses Ruby yang dipakai GitLab untuk membaca konfigurasi.
Kerusakan memori di interpreter yang memproses input dari penyerang hampir selalu bisa diarahkan menjadi eksekusi kode. Di atas kertas, rantainya sederhana:
- Penyerang mendaftar akun di instance yang membuka registrasi mandiri.
- Penyerang membuat proyek publik dan meng-commit
.gitlab-ci.ymlberbahaya. - GitLab memproses file tersebut, regex dikompilasi ulang, dan kode penyerang berjalan di server.
![]()
Karena itu instance yang mengizinkan registrasi terbuka dan pembuatan proyek publik paling berisiko, sebab seluruh rantai bisa dijalankan tanpa kredensial apa pun.
Versi GitLab mana yang terdampak?
| Cabang | Versi rentan | Versi perbaikan minimum |
|---|---|---|
| 19.2 | 19.2.0 - 19.2.7 | 19.2.8 |
| 19.3 | 19.3.0 - 19.3.4 | 19.3.5 |
| 19.4 | 19.4.0 - 19.4.1 | 19.4.2 |
Kalau Anda masih di cabang yang lebih tua dari 19.2, versi itu sudah di luar jendela dukungan perbaikan. Rencanakan lompatan ke cabang yang masih didukung, bukan sekadar point release.
Saat Censys merilis advisory pada 13 Oktober, mereka menghitung sekitar 25.766 host rentan yang terbuka ke internet. Angka hari ini kemungkinan sudah turun, tetapi tetap menunjukkan skalanya: puluhan ribu server build yang menyimpan kode sumber, variabel CI, dan kredensial deployment.
Apa yang terjadi di Alpine Linux?
Insiden di GitLab publik milik Alpine Linux adalah contoh nyata paling jelas sejauh ini, dan menjadi dasar CISA menambahkan celah ini ke KEV.
| Tanggal (2026) | Kejadian |
|---|---|
| 12 Oktober | GitLab merilis 19.2.8, 19.3.5, dan 19.4.2 |
| 13 Oktober | Rapid7 merilis analisis dan PoC; Alpine naik ke 19.3.4, satu versi di bawah perbaikan |
| 20-21 Oktober | Akun baru mengirim konfigurasi CI berbahaya; worker GitLab crash delapan kali |
| 22 Oktober | Alpine naik ke 19.3.6, tetapi image-nya masih memakai Ruby yang belum ditambal |
| 25-26 Oktober | Percobaan masuk lanjutan berhasil diblokir |
| 27-28 Oktober | Instance ditutup dan dibangun ulang dari nol, password dan secret di-reset |
| 29 Oktober | CISA memasukkan CVE-2026-97229 ke KEV |
Dari delapan crash, empat di antaranya lolos tahap crash awal dan baru gagal di tahap berikutnya. Penyerang juga mengunduh container image GitLab milik Alpine, yang mengisyaratkan exploit sedang disetel untuk build tersebut. Alpine tidak menemukan bukti serangan berhasil, tetapi karena tidak bisa memastikannya, tim memperlakukan server sebagai sudah disusupi. Pemeriksaan mereka menyimpulkan repositori aports, paket, dan rilis 21 Oktober tidak dimodifikasi.
Pelajaran terpentingnya: Alpine sudah menjalankan 19.3.6, versi yang di atas kertas aman, dan tetap rentan karena Ruby di dalam image-nya belum ditambal.
![]()
Kenapa update GitLab saja belum tentu cukup?
Perbaikan dari GitLab berupa patch pada interpreter Ruby yang dibundel di paket dan container image resminya. Artinya status keamanan Anda bergantung pada cara GitLab dipasang:
| Cara instalasi | Yang perlu dilakukan |
|---|---|
| Paket Omnibus atau image resmi GitLab | Upgrade ke 19.2.8 / 19.3.5 / 19.4.2 atau lebih baru; Ruby bawaan ikut tertambal |
| Build Ruby sendiri atau image turunan | Upgrade Ruby sendiri ke 3.3.13, 3.4.12, atau 4.0.9 ke atas |
| Masih memakai Ruby 3.2 | Ruby 3.2 sudah end-of-life dan dilaporkan tidak mendapat perbaikan; pindah ke Ruby yang lebih baru |
Cara memeriksa versi Ruby yang benar-benar berjalan
Jangan hanya percaya tag image atau versi GitLab di halaman admin. Periksa runtime yang sedang berjalan:
# Instalasi Omnibus: versi Ruby bawaan
/opt/gitlab/embedded/bin/ruby -v
# Ringkasan versi GitLab dan Ruby
sudo gitlab-rake gitlab:env:info
# Container: cek runtime di dalam container yang sedang berjalan
docker exec <nama-container> ruby -v
Satu catatan: vendor bisa menyertakan backport perbaikan tanpa mengubah nomor versi upstream. Jadi angka Ruby di bawah 3.3.13 pada paket resmi GitLab belum tentu berarti rentan. Cocokkan dengan release notes GitLab untuk paket yang Anda pakai.
Langkah yang perlu dilakukan hari ini
- Inventaris. Data semua instance GitLab self-managed, termasuk server uji coba dan host runner yang sering terlupakan.
- Upgrade ke point release terbaru di cabang Anda, bukan sekadar versi minimum. Laporan media menyebut ada celah regex kedua, CVE-2026-110264, juga CVSS 10.0, dengan perbaikan di 19.2.9, 19.3.6, dan 19.4.3. Verifikasi detailnya di advisory resmi GitLab.
- Verifikasi Ruby dengan perintah di atas. Versi GitLab yang benar belum menjamin Ruby-nya benar.
- Batasi paparan sementara. Matikan registrasi mandiri, batasi akses anonim ke proyek publik, cegah pengguna tak tepercaya membuat atau menulis ke proyek publik, dan bila belum bisa upgrade, batasi akses masuk ke antarmuka web. Langkah ini membantu tetapi tidak menggantikan patch.
- Cari jejak penyusupan. Perhatikan worker yang crash berulang saat memproses CI, proses anak tak terduga dari worker GitLab, akun baru yang mencurigakan sejak 12 Oktober, dan SSH key yang tidak dikenali.
- Rotasi secret bila instance Anda terbuka ke internet dan belum ditambal setelah 12 Oktober: variabel CI/CD, token runner, deploy key, dan personal access token. Ikuti cara Alpine, yaitu anggap server sudah disusupi sampai terbukti sebaliknya.
Celah lain yang masuk KEV di hari yang sama
Bersamaan dengan GitLab, CISA juga menambahkan CVE-2026-76418 (CVSS 8.6) di Cisco Secure Firewall ASA dan FTD. Celah NULL pointer dereference ini memungkinkan penyerang jarak jauh tanpa autentikasi membuat perangkat reboot sendiri, sehingga layanan terganggu (DoS). Cisco menyatakan sudah melihat eksploitasi aktif sejak awal Oktober. Kalau Anda mengelola firewall Cisco, masukkan pembaruan ini ke jadwal yang sama.
Bagi tim yang mengelola server PHP, perhatikan juga PHP2Shell (CVE-2026-109618 dan CVE-2026-109619, CVSS 9.2), dua celah RCE tanpa autentikasi yang masuk KEV pada 26 Oktober. Perbaikannya ada di PHP 8.5.12, 8.4.27, 8.3.36, dan 8.2.35.
Pertanyaan yang sering diajukan
Apakah pengguna GitLab.com terdampak?
Tidak. GitLab.com sudah ditambal sebelum celah diumumkan. Risiko ada pada instalasi self-managed CE dan EE.
Instance saya tidak membuka registrasi publik. Apakah aman?
Risikonya lebih rendah, tetapi tidak nol. Pengguna internal atau akun yang sudah dibobol tetap bisa meng-commit konfigurasi CI berbahaya. Patch tetap wajib.
Tenggat 1 November berlaku untuk siapa?
Tenggat itu wajib untuk instansi sipil federal Amerika Serikat. Perusahaan di Indonesia tidak terikat, tetapi masuknya celah ke KEV berarti sudah ada serangan nyata, jadi perlakukan sebagai prioritas tertinggi.
Apakah sudah ada exploit publik?
Rapid7 merilis analisis teknis dan berhasil mereproduksi RCE di GitLab 19.4.1 CE pada 13 Oktober, dan Censys mencatat adanya proof of concept publik. Dengan PoC yang tersedia, waktu antara patch dan serangan massal biasanya singkat.
Bagaimana kalau saya memakai aplikasi Ruby lain selain GitLab?
Celahnya ada di Onigmo, jadi aplikasi Ruby lain yang mengompilasi regex dari input tak tepercaya juga patut diperiksa. Upgrade Ruby ke 3.3.13, 3.4.12, atau 4.0.9 ke atas adalah langkah aman untuk semua aplikasi Ruby.
Sumber
- CISA Adds Actively Exploited GitLab RCE and Cisco Firewall DoS Flaws to KEV, The Hacker News
- GitLab CVSS 10.0 Joins CISA KEV, Ruby Fix Needed, Tech Insider
- CVE-2026-97229: Critical Unauthenticated RCE in GitLab, Rapid7
- Advisory CVE-2026-97229, Censys
- CVE-2026-109618 dan CVE-2026-109619 (PHP2Shell), Rapid7
- Known Exploited Vulnerabilities Catalog, CISA
Topik: #keamanan #cve #gitlab #ruby #devsecops
Tentang penulis
Tim APIPedia — Tim Engineering APIPedia
Tim engineering di balik APIPedia yang membangun dan memelihara API data Indonesia - ongkir, OCR KTP, data wilayah, BMKG, hingga server MCP - dan menulis panduan integrasinya dari pengalaman langsung.