Giriş
Yeni araştırmalar, imzalı bir Git commit hash’inin yazılım dünyasının çoğu tarafından düşünüldüğü gibi eşsiz bir isim olmadığını ortaya koyuyor. İmzasız bir kullanıcının, belirli bir commit’e ait dosyalar, yazar ve tarih ile aynı içeriğe sahip ikinci bir commit oluşturabilmesi, bu durumun ciddiyetini artırıyor.
Saldırı Nasıl Çalışıyor?
Commit hash’leri, içerdikleri tüm verilerin birer parmak izi olarak düşünülebilir. Ancak, imzasız bir içerik yeniden itildiğinde, saldırgan hâlâ “Doğrulanmış” statüsünde olan yeni bir hash ile aynı veriyi yayınlayabilir. Böyle bir durumda, sistemler:
- Bir commit’i hash ile engellemeye çalıştığında, yeni bir hash oluşturulabilir.
- Hash üzerindeki denetim mekanizmaları etkisiz hale gelir.
- Geçmiş logları ve yeniden üretilebilir derlemeler aynı zayıflığı taşır.
Bir saldırgan, aynı dosya içeriğine sahip olan ancak hash değeri farklı bir commit oluşturduğunda, sistem bu yeni commit’i problem olmaksızın kaydedebilir.
Etkilenen Sistemler
Bu durumun etkilediği sistemler geniş bir yelpazeye yayılmaktadır. Gerçekleşen saldırılar, imzalı commit’lerin güvenilmez hale gelmesine yol açarken:
- GitHub gibi platformlar, değişikliklerin “Doğrulanmış” olarak işaretlenmesini sürdürmektedir.
- Her commit, üstündeki hash üzerinden kendi üstündeki commit’leri referans gösterebilir, bu da bir dizi “doğrulanmış” commit’in aslında aynı içeriğe işaret etmesini sağlarken, sonuçta farklı hash’lerle akabinde farklı zincirler oluşabilir.
Çözüm ve Korunma
Bu sorun aslında, yazılımların nasıl “Doğrulanmış” statüsünü belirlediğine bağlıdır ve aslında düzeltme, forge tarafında yapılması gereken bir iştir. Araştırmada sunulan öneriler arasında:
- İmzaların normalleştirilmesi ve güvenilir hale getirilmeden önce kontrol edilmesi gerektiği vurgulanmaktadır.
- Oluşan hash’leri ve imzaları, yanlış yönlendirme olasılığını azaltmak için kontrol edin.
- Önerilen araçları kullanarak, kendinizi “hash zinciri malleabilitesi” adı verilen durumlardan koruyun.
Gelecekte bu durumları önlemek için sistem geliştiricilerin ve organizasyonların dikkatli olması gerekmektedir.
Sonuç
Geliştiricilerin, bir commit hash’ini pinlemeye devam etmesi önerilmektedir; çünkü bu işlem, doğru içeriğin korunmasına yardımcı olur. Ancak, forge’lerin de imzaları normalleştirip güvenilir hale getirmesi gerektiği unutulmamalıdır. Sistemlerin, onaylı commit hash’leri üzerinden doğrulama yapmadan önce bu hash’leri kontrol etmeleri kritik öneme sahiptir. Yazılım yöneticileri, düzenli olarak sistemlerini güncellemeli ve potansiyel saldırılara karşı proaktif önlemler almalıdır.


