Tim pengembang Ruby merilis Ruby 4.0.9, 3.4.12, dan 3.3.13 pada 23 Oktober 2026 untuk menutup tiga kelas bug di Onigmo, mesin ekspresi reguler bawaan Ruby. Bug inilah yang menjadi akar empat celah kritis di GitLab, dua di antaranya, CVE-2026-97229 dan CVE-2026-110264, mendapat skor CVSS 10.0 dan bisa dipicu tanpa akun.
Peneliti dengan nama samaran joaxcar menemukan masalah ini dan melaporkannya lewat program bug bounty GitLab di HackerOne.
Dari bug regex ke eksekusi kode di server GitLab
Pengumuman resmi Ruby merinci ketiga bug itu: double free saat parsing pola gagal setelah alternasi (dicatat GitLab sebagai CVE-2026-89078), integer overflow pada ukuran pola yang sudah dikompilasi (CVE-2026-93577 dan CVE-2026-97229), serta overflow ID internal pada pola dengan banyak pengulangan (CVE-2026-110264). Ruby sendiri belum mengajukan nomor CVE dan masih membahas apakah bug ini akan diperlakukan sebagai kerentanan Ruby.
Di GitLab, CVE-2026-110264 memungkinkan penyerang tanpa autentikasi menjalankan kode di server cukup dengan mengirim ekspresi reguler rakitan. GitLab menyebut celah ini ada sejak versi 7.0, sehingga mencakup rilis lebih dari satu dekade. Perbaikannya keluar pada 21 Oktober di versi 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, dan 18.11.13. Rilis yang sama menambal 11 celah lain, termasuk CVE-2026-15723 (CVSS 8.2) yang bisa dipakai mengambil alih akun berbasis LDAP lewat penautan otomatis OmniAuth.
Sampai 23 Oktober, keempat CVE itu belum masuk katalog Known Exploited Vulnerabilities milik CISA, dan belum ada laporan eksploitasi aktif.
Aplikasi Ruby lain juga bisa terdampak
Risikonya tidak terbatas pada GitLab. Menurut Ruby, aplikasi apa pun yang mengompilasi ekspresi reguler dari string kiriman pengguna ikut berisiko, misalnya lewat Regexp.new, Regexp.union, atau interpolasi input ke dalam pola. Aplikasi yang hanya memakai pola tulisan pengembangnya sendiri aman.
Ruby 4.0.8 belum memuat perbaikan untuk bug overflow ID, jadi pengguna cabang 4.0 harus naik ke 4.0.9. Cabang 3.2 ke bawah tidak akan mendapat perbaikan.
Langkah yang perlu diambil
- Admin GitLab self-managed: perbarui ke rilis yang sudah ditambal sesuai cabang. Versi 19.3.6 dan 19.4.3 membawa migrasi database, jadi instance satu node akan mengalami downtime. GitLab.com sudah ditambal, dan pelanggan GitLab Dedicated di 19.3.5-internal0, 19.4.2-internal0, atau yang lebih baru tidak perlu bertindak.
- Periksa log dengan aturan deteksi yang dirilis GitLab, termasuk deteksi crash pekerja native Onigmo.
- Pengembang Ruby: naik ke 4.0.9, 3.4.12, atau 3.3.13. Pengguna 3.2 atau lebih lama perlu pindah ke cabang 3.4 atau 4.0.
- Bila belum bisa upgrade, berhenti mengompilasi regex dari input yang tidak tepercaya. Ruby menegaskan
Regexp.timeouttidak melindungi dari bug ini, dan membatasi panjang pola juga tidak andal karena sebagian bug bisa dipicu pola pendek.
Bagi perusahaan, kampus, atau tim pengembang yang menjalankan GitLab sendiri untuk menyimpan kode internal, celah tanpa autentikasi seperti ini berarti siapa pun yang bisa menjangkau instance tersebut dari internet berpotensi mengambil alih server beserta seluruh repositorinya, sehingga pembaruan sebaiknya tidak ditunda sampai jadwal pemeliharaan berikutnya.
Sumber: Ruby, GitLab, The Hacker News. Gambar: The Hacker News
