CVE-2026-97229: Celah GitLab CVSS 10.0 Sudah Dieksploitasi, Update Saja Belum Tentu Cukup

Oleh , 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: RCE GitLab lewat regex Ruby dengan skor CVSS 10.0, sudah masuk CISA KEV

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

AspekDetail
ProdukGitLab CE dan EE (self-managed)
Jenis celahInteger overflow yang berujung RCE tanpa autentikasi
SkorCVSS 10.0 (Critical)
Akar masalahOnigmo, regex engine di dalam Ruby
Patch GitLab19.2.8, 19.3.5, 19.4.2 (rilis 12 Oktober 2026)
Patch Ruby upstream3.3.13, 3.4.12, 4.0.9 (rilis 22-23 Oktober 2026)
Status eksploitasiMasuk CISA KEV 29 Oktober 2026
Tenggat instansi federal AS1 November 2026
GitLab.comSudah 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:

  1. Penyerang mendaftar akun di instance yang membuka registrasi mandiri.
  2. Penyerang membuat proyek publik dan meng-commit .gitlab-ci.yml berbahaya.
  3. GitLab memproses file tersebut, regex dikompilasi ulang, dan kode penyerang berjalan di server.

Rantai serangan CVE-2026-97229 dalam empat langkah: daftar akun, buat proyek publik, commit .gitlab-ci.yml dengan path UTF-8 khusus, lalu integer overflow di Onigmo menghasilkan RCE 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?

CabangVersi rentanVersi perbaikan minimum
19.219.2.0 - 19.2.719.2.8
19.319.3.0 - 19.3.419.3.5
19.419.4.0 - 19.4.119.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 OktoberGitLab merilis 19.2.8, 19.3.5, dan 19.4.2
13 OktoberRapid7 merilis analisis dan PoC; Alpine naik ke 19.3.4, satu versi di bawah perbaikan
20-21 OktoberAkun baru mengirim konfigurasi CI berbahaya; worker GitLab crash delapan kali
22 OktoberAlpine naik ke 19.3.6, tetapi image-nya masih memakai Ruby yang belum ditambal
25-26 OktoberPercobaan masuk lanjutan berhasil diblokir
27-28 OktoberInstance ditutup dan dibangun ulang dari nol, password dan secret di-reset
29 OktoberCISA 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.

Pelajaran dari insiden Alpine Linux: aplikasi GitLab 19.3.6 sudah terbaru, tetapi lapisan Ruby dan regex engine Onigmo di bawahnya masih rentan, lengkap dengan kronologi 13 sampai 28 Oktober

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 instalasiYang perlu dilakukan
Paket Omnibus atau image resmi GitLabUpgrade ke 19.2.8 / 19.3.5 / 19.4.2 atau lebih baru; Ruby bawaan ikut tertambal
Build Ruby sendiri atau image turunanUpgrade Ruby sendiri ke 3.3.13, 3.4.12, atau 4.0.9 ke atas
Masih memakai Ruby 3.2Ruby 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

  1. Inventaris. Data semua instance GitLab self-managed, termasuk server uji coba dan host runner yang sering terlupakan.
  2. 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.
  3. Verifikasi Ruby dengan perintah di atas. Versi GitLab yang benar belum menjamin Ruby-nya benar.
  4. 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.
  5. 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.
  6. 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

Topik:

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.