PCKBLOGAÇIK KAYNAK · GÜVENLİK

XZ Utils arka kapısı: Açık kaynakta güven nasıl suistimal edildi?.

Küçük bir performans tuhaflığı, Linux dünyasının en dikkat çekici tedarik zinciri saldırılarından birini ortaya çıkardı.

XZ Utils, dosyaları sıkıştırıp açmak için kullanılan yaygın bir araç. İçindeki liblzma kütüphanesi de pek çok Linux yazılımının kullandığı temel bileşenlerden biri. 2024’te bu projenin bazı sürümlerine arka kapı yerleştirildi. Olayın önemli yanı, saldırının yalnızca bir kod açığından değil, yazılımın geliştirilme ve dağıtılma sürecindeki güven ilişkisinden yararlanmasıydı.

Ne oldu?

XZ Utils’in 5.6.0 ve 5.6.1 sürümlerinde zararlı kod bulundu. Bu kod, kaynak kod deposunda ilk bakışta kolayca fark edilmeyen bir biçimde saklanmıştı; yayımlanan kaynak paketleri derlenirken devreye giriyordu. Hedef, her Linux bilgisayarı değildi: risk, belirli koşullarda hazırlanmış bazı paketlerde ve sistemlerde ortaya çıkıyordu. Bu nedenle “Linux kullanan herkes etkilenmişti” demek doğru olmaz.

Arka kapının amacı, uygun koşullar oluştuğunda SSH sunucusunun kimlik doğrulama sürecine müdahale edebilmekti. SSH, uzaktaki bir bilgisayara güvenli biçimde bağlanmak için kullanılan yaygın yöntem. Yani mesele yalnızca bir sıkıştırma aracının güvenliği değildi; o aracın başka sistemlerle kurduğu dolaylı bağlar da önemliydi.

Nasıl fark edildi?

Mart 2024’te Microsoft’ta çalışan mühendis Andres Freund, bazı sistemlerde SSH bağlantılarının beklenmedik biçimde yavaşladığını ve testlerde olağan dışı hatalar gördü. Bu küçük performans farkının peşine düşünce sorunun XZ Utils’in yeni sürümleriyle ilişkisini buldu. Dağıtımlar uyarıldı, şüpheli sürümler geri çekildi ve olay geniş çapta incelenmeye başladı.

Bana göre burada akılda kalan nokta şu: Büyük bir güvenlik sorunu bazen gösterişli bir alarmdan değil, “bu işlem neden normalden biraz daha yavaş?” diye soran dikkatli bir mühendisten ortaya çıkıyor.

Güven nasıl istismar edildi?

Bu olay tek seferde eklenmiş, açıkça görünen bir değişiklik değildi. XZ projesine zaman içinde katkı veren bir hesap, projede sorumluluk kazandı; daha sonra kötü amaçlı kod, sürüm hazırlama sürecinden dağıtılan paketlere taşındı. Burada bir kişinin kimliğine dair doğrulanmamış tahminlerden çok, doğrulanmış teknik sürece odaklanmak daha doğru: güven ilişkisi, bakım yükü ve paketleme zinciri saldırının parçası hâline geldi.

Açık kaynak kodunun herkes tarafından incelenebilmesi büyük bir avantaj. Ama kaynak kodun açık olması, her sürümün otomatik olarak güvenli olduğu anlamına gelmiyor. Depodaki kod ile dağıtılan kaynak paketi arasında fark oluşabilir; bir kütüphane de beklenmedik biçimde başka bir kritik bileşene bağlanabilir.

Ben bu olaydan ne çıkarıyorum?

Sistemlerle uğraşırken bağımlılıkların yalnızca isimlerine değil, nasıl üretildiklerine ve hangi bileşenlerin içinden geçtiklerine de bakmak gerektiğini düşünüyorum. Tek bir kişinin uzun süre taşıdığı bakım yükü, zamanla projenin güvenliği için risk oluşturabiliyor. İkinci bir göz, tekrarlanabilir derlemeler, imzalı sürümler ve dağıtımların bağımsız kontrolleri bu yüzden önemli.

XZ olayı, açık kaynağın başarısızlığı değil; açık kaynak ekosisteminin ne kadar birbirine bağlı olduğunu gösteren ciddi bir uyarıydı. Sorunun erken fark edilmesi ve dağıtımların hızlı tepki vermesi daha büyük bir etkinin önüne geçti. Yine de bu olaydan sonra “kod açık, o hâlde sorun yok” diye düşünmek bana yeterli gelmiyor.

ETKİLENEN SÜRÜMLER HAKKINDA

Olayın merkezindeki sürümler XZ Utils 5.6.0 ve 5.6.1’di. Etki, kullanılan Linux dağıtımına ve paketleme biçimine göre değişiyordu. Bir sistemin durumunu anlamak için dağıtımın güvenlik duyurusunu ve güncelleme yönergelerini esas almak gerekir.

Videoyu izleyin

Olayın arka planını daha ayrıntılı görmek isteyenler için Veritasium’un Türkçe dublajlı videosunu burada bırakıyorum:

Türkçe dublajlı videoyu YouTube’da izle ↗

Kaynaklar

BİRİNCİL VE TEKNİK KAYNAKLAR XZ projesinin olay açıklaması ↗ Andres Freund’ün ilk teknik bildirimi ↗ Debian güvenlik duyurusu ↗ OpenSSF değerlendirmesi ↗ CERT-EU güvenlik özeti ↗
PCK GPT-6 Luna