- Mart 2024'te, Linux dağıtımlarında kaynak tarball'larını açmak için kullanılan
xz yazılımında bir arka kapı keşfedildi.
- Bu arka kapı, kötü niyetli bakımcı Jia Tan tarafından 3 yıl boyunca gizlice eklendi.
- Olay, uzaktan kod çalıştırmayı mümkün kıldığı için büyük etki yarattı ve tespit edilmesi son derece zordu.
- Microsoft'ta Postgres geliştiricisi olan Andres Freund, performans düşüşünü araştırırken bunu tesadüfen keşfederek büyük bir felaketi önledi.
Saldırı nasıl çalışıyordu
- Arka kapı, uzaktan kod çalıştırmayı mümkün kılmak için
ssh programını ele geçiriyordu.
RSA_public_decrypt işlevini değiştirerek, belirli bir RSA anahtarıyla oturum açıldığında saldırganın keyfi komutlar çalıştırabilmesini sağlıyordu.
- İki ana bileşenden oluşuyordu:
- Kötü amaçlı nesne dosyasını
xz derleme sürecinin bir parçası olarak kuran bir betik.
RSA_public_decrypt işlevini hook eden bir prosedür.
1. Kötü amaçlı nesne dosyasını kuran betik
- Kötü amaçlı nesne dosyası,
xz git deposundaki test dosyalarının içinde gizlenmişti.
- Arka kapı yalnızca bakımcının sağladığı sürüm tarball'larında etkinleşiyordu.
2. RSA_public_decrypt işlevini hook etme prosedürü
- Dinamik yükleme sırasında çalışan kodu zorla yürütmek için
glibc'nin ifunc özelliği kullanılıyordu.
ssh çalıştığında libsystemd ve liblzma yükleniyor, bu süreçte arka kapı keyfi kod çalıştırıyordu.
xz felaketinden kaçınma yolları
- Açık kaynak yazılımın güvenilirliğini artırmak için hem sosyal hem de teknik sorunların ele alınması gerekiyor.
- Yazılım tedarik zinciri güvenliği süreçlerinin iyileştirilmesi gerekiyor.
Güvenilir kaynaklardan yazılım derlemek
- Saldırı etkili oldu çünkü birçok dağıtım
xzyi derlemek için bakımcının sağladığı tarball'ları kullandı.
- Mümkün olduğunda yazılım, en güvenilir kaynaktan derlenmeli.
Koşullar elverdiğinde...
- NixOS, işlevsel paket yönetimi modeline dayanan bir dağıtımdır ve her paket, Nix adlı fonksiyonel bir programlama diliyle ifade edilir.
- NixOS'ta, GitHub tarafından otomatik oluşturulan kaynak arşivlerini kullanma kültürü vardır.
Güvenilmeyen sürüm tarball'ları için güven oluşturmak
- NixOS, bootstrap aşamasında bakımcının sağladığı tarball'ları kullanmak zorundaydı.
- Yazılım tedarik zinciri güvenliğini güçlendirmek için belirli koruma önlemleri hazırlanmalı.
1. Kaynakları karşılaştırmak
- Dağıtımın kullandığı kaynak tarball'ının GitHub'dakiyle aynı olup olmadığını doğrulamak önemlidir.
- Ancak sürüm tarball'ı kaynakla sık sık farklılık gösterebilir ve bu tek başına bir sorun değildir.
2. Bit düzeyinde yeniden üretilebilirlikten yararlanmak
- Yeniden üretilebilir derlemeler, aynı koşullarda iki kez derlendiğinde aynı artefaktları üreten yazılım projelerinin bir özelliğidir.
- Bit düzeyinde yeniden üretilebilirlik, güvenilmeyen bakımcı tarafından sağlanan tarball'lara güven oluşturmayı mümkün kılar.
Sonuç
xz arka kapısı olayı, açık kaynak yazılım tedarik zinciri güvenliğinin önemini hatırlatıyor.
- NixOS gibi sistemler, yeniden üretilebilir derlemeler sayesinde güvenliği güçlendirebilir.
1 yorum
Hacker News görüşleri
NixOS ve yeniden üretilebilir build'ler xz arka kapısını tespit edemedi. NixOS kötü amaçlı xz build'ini dağıttı, ancak NixOS hedef alınmadığı için bir sorun yaşanmadı
Yazar yalnızca bu olaya odaklanıyor gibi görünüyor. Jiatan olayı tek bir örnek ve başka senaryolarda da savunma başarısız olabilir
NixOS, xz arka kapısı RedHat ve Debian'ı hedef aldığı için konuyla ilgili değil. İronik biçimde arka kapı bir Microsoft çalışanı tarafından keşfedildi
Yazıda, dağıtımların geleneksel kurulum tarball'ları yerine kaynak kodunu doğrudan VCS'den (ör. Github) alması gerektiği belirtiliyor
NixOS'un önleyebileceği olaylara odaklanılacaksa, CrowdStrike olayına bakmak gerekir. Dünkü yapılandırmayla boot edilebilseydi sorunların büyük kısmı hafifletilebilirdi
NixOS her şeyi kaynaktan derler, kullanılan kaynakların kurcalanmadığını kriptografik olarak doğrular ve paketler arasında sürüm bağımlılıkları bulunur. Debian'ın da yeniden üretilebilir build'leri vardır
"Yapabilirdi" ifadesi bunun kanıtlanmadığı anlamına gelir, oysa gerçekte bunu dağıttılar
Harika bir açıklayıcı analiz. Başlık hatalı ve yanıltıcı; muhtemelen "teknik olarak doğru", ama "arka kapılı" anlamında en iyi ihtimalle öyle
Jia Tan'ın PR'ı onaylansaydı, kötü amaçlı artifact'ler de tarball'da olduğu gibi kolayca Github release'lerine girebilirdi. Github release'lerinin nasıl bir güvenlik önlemi sayıldığını anlamak zor
Release tarball'larının kaynak koddan farklı olması
Sadece zehirli test dosyalarının push edilmesinden ibaret olmayan sorunlar da vardı, ancak Nix'in bunu nasıl önleyebileceğini anlamak zor
Acaba yazıyı yanlış mı anladım ya da gözden kaçırdığım bir şey mi var?