Pengembang proyek Git resmi merilis Git 2.56.1 bersama serangkaian pembaruan pemeliharaan untuk menutup enam kerentanan keamanan sekaligus. Di antara daftar kerentanan tersebut, satu celah berisiko tinggi (CVE-2026-111760) memungkinkan penyerang menjalankan kode acak pada mesin pengembang atau server automasi cukup melalui perintah kloning repositori secara rekursif.
Selain Git 2.56.1 pada lini rilis utama, tambalan keamanan ini di-backport ke berbagai seri pemeliharaan terdahulu yang masih didukung, meliputi Git 2.55.1, 2.54.1, 2.53.1, 2.52.1, 2.51.3, dan 2.50.2. Tim pengembang Git bersama GitHub mendesak seluruh pengembang perorangan, pengelola sistem continuous integration (CI/CD), serta vendor aplikasi yang membundel binary Git di dalamnya untuk segera memperbarui instalasi mereka ke versi terbaru.
Anatomi Celah CVE-2026-111760: Manipulasi Truncation dan Submodule
Fokus perhatian utama dari pembaruan ini tertuju pada CVE-2026-111760. Secara default, Git selalu menjalankan validasi terhadap jalur direktori sebelum menulis berkas apa pun ke dalam working tree lokal. Mekanisme pengamanan bawaan ini dirancang untuk mencegah repositori asing menimpa berkas metadata sensitif milik Git sendiri, seperti berkas konfigurasi atau hook eksekusi di dalam folder .git.
Namun, para peneliti keamanan menemukan adanya bug integer truncation pada logika penanganan indeks Git. Celah ini menyebabkan jalur direktori yang luar biasa panjang dapat lolos dari filter validasi di bawah satu representasi nama, tetapi kemudian dipotong dan ditulis ke sistem berkas menggunakan nama yang lebih pendek akibat konversi tipe data angka yang terpotong.
Konsekuensi dari manipulasi ini sangat fatal bagi repositori yang memanfaatkan submodul. Penyerang yang mengendalikan repositori jahat dapat memanfaatkan selisih nama ini untuk menggantikan berkas metadata .git milik submodul dengan sebuah symbolic link (symlink). Tautan simbolik tersebut diarahkan ke direktori yang telah disusupi skrip hook atau konfigurasi jahat milik penyerang. Ketika Git melanjutkan proses kloning rekursif (git clone --recurse-submodules) dan mengeksekusi hook di direktori tersebut, kode buatan penyerang akan otomatis berjalan dengan hak akses penuh pengguna yang menjalankan perintah klon.
Untuk menambal celah ini, Git 2.56.1 kini menolak jalur entri indeks yang melampaui batas panjang wajar secara dini, sebelum panjang karakter tersebut dapat dipotong oleh keterbatasan integer pada sistem penanganan berkas.
Lima Celah Lain: Dari Path Traversal hingga Korupsi Heap
Selain eksploitasi rekursif klon di atas, pembaruan Git 2.56.1 menambal lima potensi kerentanan lain yang melibatkan protokol jaringan dan pemrosesan berkas patch:
1. CVE-2026-113408 (Path Traversal via Advertised HEAD): Ketika klien melakukan kloning repositori kosong melalui Git Protocol v2, server dapat mengiklankan referensi simbolik HEAD yang mengarah ke cabang yang belum memiliki commit (unborn branch). Versi Git sebelumnya tidak memvalidasi target symref tersebut sebelum menyimpannya secara lokal. Server jahat dapat menyisipkan segmen penelusuran direktori (seperti tanda titik ganda '../') sehingga operasi pembaruan cabang berikutnya menulis berkas di luar folder referensi resmi. Patch terbaru kini mewajibkan validasi ketat terhadap seluruh nama referensi dan symref yang diterima melalui protokol v2.
2. CVE-2026-114467 (Stack Corruption saat Pelepasan Tanda Tangan GPG): Logika Git sebelumnya mengasumsikan sebuah pesan komit paling banyak hanya memuat dua tanda tangan kriptografis GPG. Pesan manipulasi yang memuat lebih dari dua signature memicu penulisan memori di luar batas array fixed-size pada stack. Kerentanan ini dapat dieksploitasi melalui penggabungan (merge) tag yang dirancang khusus untuk memicu crash atau serangan denial of service (DoS) pada platform hosting kode.
3. CVE-2026-114469 (Out-of-Bounds Read pada Patch Biner): Git memiliki batas penolakan berkas patch berukuran lebih dari 1 GiB guna mencegah konsumsi memori berlebih. Namun, pemeriksaan awal hanya menghitung ukuran fisik patch terkompresi. Berkas biner terkompresi yang kecil namun membengkak saat diekstrak dapat mengelabui pengecekan ukuran dan menyebabkan Git membaca memori di luar batas alokasi.
4. CVE-2026-105437 (Heap Corruption saat Merge Skala Besar): Logika kalkulasi memori Git dapat mengalami overflow ketika memproses operasi merge yang sangat masif, terutama saat terjadi tumpukan ribuan konflik merge dengan atribut conflict-marker-size bernilai besar. Overflow aritmatika ini menyebabkan Git mengalokasikan buffer memori yang terlalu kecil di heap lalu menulis melampaui batasnya.
5. CVE-2026-114466 (Akses Sistem Berkas via Stream Fast-Import): Fitur impor riwayat git fast-import mendapatkan pembatasan tambahan. Dua fitur impor submodul (rewrite-submodules-from dan rewrite-submodules-to) serta opsi export-pack-edges sebelumnya berpotensi membaca dan menulis berkas di luar repositori target. Fitur-fitur ini kini ditolak secara default dari aliran input publik kecuali pemanggil menyertakan argumen khusus --allow-unsafe-features.
Implikasi Terhadap Pipeline CI/CD dan Ekosistem Pengembang
Kerentanan pada alat version control seperti Git membawa dampak rantai pasok perangkat lunak (software supply chain) yang sangat luas. Di lingkungan kerja modern, ribuan pipeline CI/CD di GitHub Actions, GitLab CI, Jenkins, maupun Codespaces menjalankan perintah klon otomatis terhadap kode sumber pihak ketiga setiap menit.
GitHub mengonfirmasi bahwa mereka telah memperbarui seluruh infrastruktur github.com, GitHub Enterprise Cloud, dan merilis paket pembaruan untuk GitHub Enterprise Server pada versi 3.19.15, 3.20.11, 3.21.9, dan 3.22.4. Sementara itu, pembaruan untuk aplikasi desktop seperti GitHub Desktop dan ekstensi coding assistant yang menyertakan binary Git lokal juga sedang didistribusikan.
Bagi tim rekayasa perangkat lunak yang belum sempat melakukan pembaruan menyeluruh pada workstation maupun pelari CI lokal, GitHub menyarankan langkah mitigasi operasional: hindari menjalankan kloning rekursif (--recurse-submodules) pada repositori yang berasal dari pihak asing atau tidak terverifikasi, batasi penerimaan patch biner dari kontributor luar, dan isolasi eksekusi build runner menggunakan kontainer dengan hak akses terbatas.