Peneliti Ungkap PoC RCE GitLab 18.11.3: Pengguna Terautentikasi Bisa Jalankan Perintah sebagai Git
Peneliti keamanan Yuhang Wu dari depthfirst telah mempublikasikan bukti konsep (PoC) yang dapat mengeksekusi perintah sebagai pengguna git pada server GitLab 18.11.3 yang belum diperbarui dan dikelola secara mandiri.
Eksploitasi ini dapat dijalankan oleh pengguna biasa yang sudah terautentikasi dengan melakukan komit dua Jupyter notebooks yang telah dibuat khusus dan kemudian meminta diff dari kedua file tersebut. Rantai eksploitasi ini tidak memerlukan hak administrator, akses ke CI runner, interaksi korban, ataupun akses ke proyek pengguna lain.
Rentang Versi GitLab dan Kerentanan Oj Parser
Eksploitasi ini spesifik untuk GitLab 18.11.3 pada arsitektur x86-64, namun bug Oj parser yang menjadi dasarnya memengaruhi rentang versi lebih luas dari GitLab Community Edition (CE) dan Enterprise Edition (EE), yaitu:
- 15.2.0 hingga 18.10.7
- 18.11.0 hingga 18.11.4
- 19.0.0 hingga 19.0.1
Versi perbaikan pertama yang dirilis adalah 18.10.8, 18.11.5, dan 19.0.2. Oj adalah parser JSON berperforma tinggi untuk bahasa Ruby dengan banyak kode native C.
Gem Oj versi 3.13.0 sampai 3.17.1 rentan, dan versi 3.17.3 adalah rilis pertama yang mengandung kedua perbaikan penting. Bug ini berdampak pada semua tier layanan GitLab, yaitu Free, Premium, dan Ultimate, sementara bahasa Ruby itu sendiri tidak terpengaruh.
Dampak dan Lingkup Eksploitasi
Eksploitasi berjalan dengan hak akses sebagai git. Jangkauan kerusakan bergantung pada isolasi lingkungan penerapan GitLab, namun berpotensi mencakup:
- Kode sumber proyek
- Rahasia Rails
- Kredensial layanan internal
- Data CI/CD
- Layanan internal yang dapat dijangkau dari aplikasi GitLab
GitLab.com sendiri sudah diperbaiki pada tanggal 10 Juni 2026. Pelanggan dengan instalasi mandiri yang menggunakan versi terdampak disarankan segera melakukan pembaruan ke versi yang sudah diperbaiki. Untuk pengguna Helm dan Operator, penting untuk memeriksa versi GitLab yang ada di dalam Webservice image, bukan hanya versi chart atau Operator-nya.
depthfirst menyatakan belum menemukan bukti eksploitasi nyata di lapangan hingga 24 Juli 2026.
Detail Teknis Rantai Eksploitasi
GitLab menggunakan renderer notebook yang meneruskan file JSON .ipynb yang dikontrol dari repository ke dalam Oj::Parser.usual.parse di dalam proses Puma worker yang berjalan lama. Data notebook yang dikendalikan penyerang diproses oleh parser Oj di dalam proses aplikasi GitLab.
"Satu bug memanipulasi pointer callback, sementara bug lain membocorkan alamat heap yang diperlukan untuk mempersempit pencarian ASLR," kata depthfirst dalam analisis teknisnya.
Parser Oj menyimpan status penjejakan kedalaman dalam tumpukan berukuran tetap 1.024 byte tanpa memeriksa batas kedalaman. Dengan array yang sangat dalam, data dapat menulis byte 0x01 ke area memori parser lain yang berdekatan. Eksploitasi ini merusak buf.head, sehingga Oj mengirimkan pointer palsu ke fungsi realloc(). Alokasi Ruby Array berikutnya mengambil kembali memori jemalloc yang sama dan menimpa pointer p->start.
Selain itu, Oj mengalokasikan kunci objek berukuran 65.565 byte, lalu memotong panjangnya menjadi 29 byte di field 16-bit bertanda, dan mengembalikan 29 byte yang berisi pointer alokasi kunci yang masih aktif. GitLab membawa pointer ini ke dalam tampilan diff notebook, sehingga memberikan bocoran alamat yang memungkinkan mempersempit pencarian ASLR selama 5-10 menit pada instalasi GitLab 18.11.3 dengan dua worker. Proyeksi untuk lingkungan worker yang lebih luas mencapai 1-2 jam.
Rantai ini dijalankan dengan mengirim dua file notebook secara berurutan dalam satu permintaan diffs_stream, menjaga kedua tahap dalam satu worker Puma yang sama, yang menggunakan parser Oj global. File pertama merusak callback dan memicu error yang ditangani GitLab, namun proses parsing berikutnya menggunakan pointer yang sudah dirusak dan mencapai fungsi system() melalui gadget tertentu yang spesifik untuk build GitLab 18.11.3.
Demonstrasi publik menunjukkan bagaimana rantai ini bekerja di lab lokal GitLab 18.11.3 x86-64 dengan worker Puma yang menghubungkan kembali sebagai pengguna git.
Timeline Penemuan dan Perbaikan
- 21 Mei 2026: depthfirst melaporkan bug Oj parser.
- 27 Mei 2026: perbaikan bug digabungkan oleh pemelihara Oj.
- 4 Juni 2026: Oj versi 3.17.3 dirilis dengan perbaikan.
- 5 Juni 2026: depthfirst melaporkan rantai eksploitasi ke GitLab.
- 8 Juni 2026: GitLab mengonfirmasi laporan tersebut.
- 10 Juni 2026: GitLab merilis versi perbaikan.
- 17 Juli 2026: depthfirst menyatakan laporan telah selesai ditangani.
Review oleh The Hacker News menemukan GitLab mencantumkan pembaruan Oj 3.17.3 di bagian perbaikan bug biasa, bukan dalam tabel perbaikan keamanan, dan tidak menjelaskan rantai RCE pada rendering diff notebook secara rinci.
Analisis Redaksi
Menurut pandangan redaksi, penemuan rantai eksploitasi ini menandai warning serius bagi pengguna GitLab mandiri, terutama yang mengoperasikan versi lama. Bug Oj parser yang mendasari tidak hanya memperlihatkan risiko keamanan dari perpustakaan pihak ketiga yang terintegrasi, tetapi juga bagaimana kompleksitas fitur seperti rendering notebook dapat membuka celah eksekusi kode jarak jauh tanpa interaksi admin.
Meski GitLab.com sudah cepat melakukan patch, risiko pada instalasi mandiri sangat tinggi jika pembaruan tidak segera dilakukan. Hal ini bisa berakibat kebocoran data sensitif dan kontrol penuh terhadap proyek pengembangan. Pengguna harus memperhatikan versi paket dan komponen di dalam container atau image mereka, bukan hanya versi utama GitLab.
Kedepannya, pengelola GitLab harus lebih transparan dalam komunikasi soal risiko keamanan dan memberikan opsi mitigasi sementara, agar organisasi yang belum bisa upgrade segera dapat menekan risiko eksploitasi. Selain itu, tren meningkatnya penggunaan Jupyter notebook dalam pengembangan menuntut pengujian keamanan ekstra pada fitur rendering dan parsing data yang kompleks.
Untuk informasi lebih lanjut dan pembaruan terkini, pengguna disarankan mengikuti berita resmi GitLab dan laporan dari komunitas keamanan seperti depthfirst serta media terpercaya seperti The Hacker News.
What's Your Reaction?
Like
0
Dislike
0
Love
0
Funny
0
Angry
0
Sad
0
Wow
0