Keamanan · 2 November 2026

Juga diterbitkan dalam English, 한국어

Kesalahan Mesin Regex Ruby Sebabkan Celah Keamanan Kritis pada GitLab

blue UTP cord
Jordan Harrison / Unsplash

Tim Ruby telah merilis versi 4.0.9, 3.4.12, dan 3.3.13 untuk memperbaiki tiga kesalahan dalam mesin regex Onigmo. Celah keamanan ini dapat memungkinkan eksekusi kode berbahaya pada server yang terdampak.

Kasus yang paling menonjol terjadi pada GitLab, yang berbasis Ruby. Layanan tersebut mengompilasi ekspresi reguler dari masukan pengguna, seperti dalam konfigurasi CI/CD. Peneliti keamanan Johan Carlsson melaporkan empat celah melalui program bug bounty: CVE-2026-89078 dan CVE-2026-93577 dengan nilai CVSS 9,9, serta CVE-2026-97229 dan CVE-2026-110264 dengan nilai maksimal 10,0. Kedua celah terakhir dapat dieksploitasi tanpa autentikasi. GitLab telah menutup celah tersebut antara 23 September dan 21 Oktober dengan menambal Ruby yang disertakan. Pembaruan terbaru ini berdampak pada semua versi GitLab sejak versi 7.0 tahun 2014.

Tim Ruby mengaitkan empat CVE tersebut dengan tiga kesalahan teknis. CVE-2026-89078 disebabkan oleh pembebasan memori ganda saat membaca pola. CVE-2026-93577 dan CVE-2026-97229 disebabkan oleh luapan bilangan bulat saat menghitung ukuran program yang dikompilasi. Sementara itu, CVE-2026-110264 disebabkan oleh luapan penghitung internal pada pola dengan pengulangan yang sangat banyak.

Perbaikan untuk masalah ini sebenarnya sudah ada sebelumnya. Pembebasan memori ganda telah diperbaiki di cabang pengembangan sejak Mei 2025 dan ada di versi rilis Ruby 4.0.0. Perbaikan untuk penghitung pada CVE-2026-110264 dilakukan pada April 2026, dan perbaikan ukuran program pada September 2026. Versi 4.0.8 yang dirilis 22 Oktober membawa perbaikan ukuran program sebagai pembaruan rutin tanpa menyebutkan masalah keamanan. Versi 4.0.9 menyusul sehari kemudian dengan perbaikan terakhir, sementara cabang stabil 3.4 dan 3.3 menerima ketiga perbaikan sekaligus. Ruby 3.3 mendapatkan pembaruan ini sebagai pengecualian karena adanya CVE dari GitLab. Tidak ada pembaruan untuk Ruby 3.2 atau versi yang lebih lama.

Setiap aplikasi Ruby yang menghasilkan ekspresi reguler dari masukan eksternal berada dalam risiko. Kesalahan terjadi selama tahap kompilasi, sebelum pola diterapkan pada teks. Jika dieksploitasi, kode penyerang dapat berjalan dengan hak akses proses Ruby, yang mencakup akses ke basis data, rahasia lingkungan, dan sistem berkas. Kemungkinan lain adalah kegagalan proses yang menyebabkan penolakan layanan tanpa autentikasi. Hingga saat ini, baik GitLab maupun Ruby tidak melaporkan adanya serangan aktif.

Tim Ruby menyatakan bahwa pembatasan panjang pola atau penggunaan batas waktu tidak efektif karena kesalahan terjadi saat kompilasi. Pengguna disarankan untuk memperbarui versi Ruby atau menghindari kompilasi pola dari masukan eksternal. Proyek Ruby belum mengajukan pengidentifikasi CVE sendiri karena menganggap kompilasi pola eksternal sebagai praktik yang tidak aman bagi aplikasi.