CVE-2014-9390

18 Aralık’ta bütün resmi Git istemcilerini ve Git havuzu ile iletişime geçen yazılımları, bunlara Windows ve Mac için GitHub da dahil, etkileyen zafiyet bulunduğu duyuruldu. Zafiyet kullanıcının bilgisayarında kod çalıştırmaya izin veriyordu. Açıklığın kapatılması için v1.8.5.6, v1.9.5, v2.0.5, v2.1.4, ve v2.2.1 versiyonlarına ait güncelleştirmeler yayımlandı.

Büyük ve küçük harfe duyarlı olmayan dosya sistemlerinde tutulan Git havuzuna erişen Git istemcileri bu açıklıktan etkileniyor.

Git, bütün verilerini havuzun kök dizininde .git/ klasörü altında tutuyor. Git dosyaları güncellerken .git/ klasörünün içeriğinin üstüne yazmasını engelleyen bir güvenlik koruması var. Açıklık kapatılmadan önce bazı dosya sistemlerinde bu güvenlik koruması yetersiz kalıyordu.

$ ls .git
HEAD description info refs
config hooks objects

OS X (HFS+) ve Microsoft Windows(FAT/NTFS) gibi büyük ve küçük harfe duyarlı olmayan işletim sistemlerinde saldırgan .Git veya .GIT gibi ağaçlar yaratarak bu korumayı atlatması mümkündü.

Açıklık sayesinde saldırgan .git/ klasörü altındaki herhangi bir dosyanın içerini değiştirebilirdi veya yeniden yaratabilirdi. Bunlara çalıştırılabilir dosyaların tutulduğu .git/hooks klasörü de dahil. Bu dosyalar Git komutlarının yaşam döngüsünde bazı noktalarda çalışıtırılıyor.

$ ls .git/hooks
applypatch-msg pre-applypatch pre-rebase
commit-msg pre-commit prepare-commit-msg
post-update pre-push update

Bu demek oluyor ki saldırgan kendi komutlarını hedef sistemde çalıştırabilir. Kullanıcının .git/config dosyasını değiştirmek de başka bir atak vektörü olabilir.

Düzeltmeler

Kullanıcılar için en iyi düzeltme şimdilik gerekli Git güncellemeleri yapmak. Bu güncellemeler kullanıcıyı herhangi bir havuzdan veri çekerken koruyacaktır.

Git sunucunuza kötücül veri yüklenmesini öncelemek içinse aşağıdaki adımları uygulamanız gerekiyor.

  1. Sunucunuzda yüklü olan Git yazılımını versiyon 2.2.1’e yükseltin.
  2. Aşağıdaki Git ayarlarını etkinleştirin
    1. receive.fsckObjects
    2. core.protectHFS
    3. core.protectNTFS

Bulunan Git havuzunuza kötücül veri yüklenmiş mi?

Bunu anlamanın yolu güncelleştirmeleri yaptıktan sonra git fsck komutu çalıştırmaktır. Eğer Git sistemi bu açıklıktan etkilenmişse aşağıdaki gibi bir uyarı mesajı ekrana çıkacaktır.

$ git fsck
Checking object directories: 100% (256/256), done.
warning in tree 360d9613c574ceb6c8c32bcb6c69ed318d9dbbfd: contains ‘.git’
Checking objects: 100% (5/5), done.