Git Commit İmzalarında Hash Zinciri Kırılganlığı Keşfedildi
Yeni bir araştırma, imzalı Git commit'lerinin hash değerinin değiştirilebileceğini, GitHub'ın Verified rozetinin bile bunu engelleyemediğini gösteriyor.
Bir güvenlik araştırması, Git commit imzalamanın uzun süredir varsayılan temel garantisini çürütüyor: bir commit hash'inin, imzalanan içeriği benzersiz ve değiştirilemez biçimde tanımladığı inancı. Araştırmacılar, imzalama anahtarına erişimi olmayan ve SHA2'yi kırmayan bir saldırganın, aynı tree ve metadata'ya sahip, geçerli imzalı ve GitHub gibi platformlarda 'Verified' rozeti alan ikinci bir commit üretebildiğini gösteriyor. Tek fark commit hash'i oluyor; bu değişiklik zincirleme olarak sonraki tüm bağımlı commit hash'lerini de etkiliyor ve yazarlar bu duruma 'hash chain malleability' adını veriyor.
Çalışma üç farklı manipülasyon yolunu belgeliyor: ECDSA imzalarında cebirsel ters çevirme (s -> n-s), RSA ve EdDSA için OpenPGP'nin hashlenmemiş subpacket alanına yapılan yapısal ekleme (RFC4880 5.2.3), ve S/MIME için CMS zarfı içindeki kanonik olmayan DER uzunluk yeniden kodlaması (X.690 10.1). Cebirsel ters çevirme ve subpacket ekleme yöntemleri yerel doğrulamayı (git verify-commit) da geçiyor; her üç yöntem de GitHub üzerinde kalıcı ve bağımsız bir 'Verified' kaydı üretiyor.
Bu bulgunun pratik sonuçları ciddi: hash tabanlı commit engelleme mekanizmaları, Nixpkgs, Go modülleri ve GitHub Actions gibi sistemlerde kullanılan bağımlılık sabitleme (dependency pinning), ve commit hash'ini içerik-adresli birincil anahtar olarak gören yeniden üretilebilir derleme (reproducible build) sistemleri doğrudan etkileniyor. Araştırmacılar üç yöntemi de otomatikleştiren kavram kanıtı (proof-of-concept) araçları sunuyor; bu da mühendislerin tedarik zinciri güvenliği varsayımlarını yeniden gözden geçirmesini gerektiriyor.