Siber Guvenlik

GitHub ‘Doğrulanmış’ İmzalı Commit’ler Hash Değiştirmeden Yeniden Üretilerek Aldatılabiliyor

Yeni araştırmalar, imzalı Git commit’lerinin hash değerinin yazılım dünyasının sandığı kadar benzersiz olmadığını ortaya koydu. İmzasız bir saldırgan, doğrulanmış bir commit’i kopyalayarak aynı dosyalar, yazar ve tarihle yeni bir hash oluşturabiliyor — ve GitHub ‘Doğrulanmış’ damgasını koruyor.

I
ITWISE
4 görüntülenme
GitHub ‘Doğrulanmış’ İmzalı Commit’ler Hash Değiştirmeden Yeniden Üretilerek Aldatılabiliyor

GitHub’da yayınlanan ‘Doğrulanmış’ (Verified) commit’ler, yazılım geliştiriciler ve proje yöneticileri için bir güven unsuruydu. Bu etiket, commit’in gerçekten yetkili bir kaynaktan geldiğini ve içerik bütünlüğünün korunduğunu gösteriyordu. Ancak, yeni bir araştırma, bu sistemin ciddi bir zafiyet taşıdığını ortaya koydu.

Hash Değerlerinin Aslında ‘Benzersiz’ Olmadığı Kanıtlandı

Git’in temel güvenlik mekanizmalarından biri, her commit’e atanan benzersiz bir hash (SHA-1 veya SHA-256) değeriyle çalışır. Bu değer, commit’in içeriği, yazar bilgisi, tarih ve diğer metadata’lardan hesaplanır. Geleneksel olarak, bu hash’in değiştirilmesiyle commit’in içeriği de değişir ve imza bozulurdu. Ancak araştırmacılar, imzalı bir commit’in hash’inin, aynı dosyalar, yazar ve tarihle yeniden oluşturulabileceğini keşfettiler — ve bu yeni commit’in imzası yine geçerli oluyor.

Saldırganlar ‘Doğrulanmış’ Etiketini Nasıl Koruyor?

Saldırganın elinde yetkisiz bir commit’in kopyası varsa (örneğin, bir ‘Doğrulanmış’ commit’in tüm metadata’sı), aşağıdaki adımları izleyerek yeni bir commit oluşturabilir:

  • Yeni bir commit hash’i oluşturulur: Aynı dosyalar, yazar bilgisi ve tarih kullanılarak farklı bir hash değeri üretilir.
  • Geçerli imza alınır: Saldırgan, orijinal commit’in imzasını (örneğin GPG veya SSH ile imzalanmışsa) kopyalayabilir ve yeni commit’e uygulayabilir.
  • GitHub ‘Doğrulanmış’ damgasını korur: GitHub, sadece imza ve metadata’ları kontrol eder — hash’in benzersizliğini doğrulamaz. Bu yüzden saldırganın ürettiği yeni commit de ‘Doğrulanmış’ olarak görünür.

Peki, Bu Ne Anlama Geliyor?

Bu zafiyet, güvenilir kaynaklardan geldiği düşünülen commit’lerin aslında sahte olabileceği anlamına gelir. Geliştiriciler ve proje yöneticileri, şu risklere maruz kalabilir:

  • Supply Chain Attack’ler: Bir projeye eklenen zararlı kod, orijinalmiş gibi görünen sahte bir commit aracılığıyla yayılabilir.
  • Yetkilendirme Hileleri: Geliştiriciler, sahte commit’ler nedeniyle yetkili olmadıkları değişiklikleri onaylayabilir.
  • Güven Kaybı: ‘Doğrulanmış’ etiketi, artık tamamen güvenilir bir gösterge olmaktan çıkabilir.

Çözüm: Git’in İmza Mekanizmaları Nasıl Güçlendirilebilir?

Bu zafiyetten korunmak için Git’in ve imza sistemlerinin revize edilmesi gerekiyor. Potansiyel çözümler şunlardır:

  • Hash’im Bağımsızlığı: GitHub ve diğer platformlar, commit’in hash’ini de doğrulamalıdır. Sadece imza ve metadata’lara güvenilmemelidir.
  • Zaman Damgaları (Timestamping): Commit’lerin blokzincir tabanlı zaman damgalarıyla doğrulanması, hash’lerin değiştirilmesini engelleyebilir.
  • Çoklu İmza Gerekliliği: Kritik commit’ler için birden fazla geliştiricinin imzasını zorunlu kılmak, tek bir saldırganın riskini azaltır.
  • Yeni İmza Standartları: SHA-1 gibi eski hash algoritmaları yerine, SHA-256 veya SHA-3 gibi daha güvenli algoritmalar kullanılmalıdır.

Sonuç: Güvenlik Paradigmasının Değişmesi Gerekiyor

Bu keşif, Git’in ve dağıtık versiyon kontrol sistemlerinin güvenlik modelinin temelden sorgulanması gerektiğini gösteriyor. ‘Doğrulanmış’ etiketleri artık sadece imza ve metadata’lara dayanmamalı; commit’in gerçek hash’inin de doğrulanması zorunlu hale getirilmelidir. Aksi takdirde, yazılım tedarik zinciri saldırıları ciddi bir tehdit olmaya devam edecektir.

Geliştiriciler ve şirketler, bu zafiyet hakkında bilinçlenmeli ve güvenlik politikalarını güncellemelidir. Gelecekte, GitHub ve diğer platformların bu konuda adımlar atması bekleniyor — ancak şimdilik, ‘Doğrulanmış’ etiketine tamamen güvenmekten kaçınılmalıdır.