xz sshd arka kapı tavşan deliği, beklenenden çok daha derin
(twitter.com/bl4sty)- xz'nin sshd arka kapısı, ilk ortaya çıkan
RSA_public_decryptkancasının ötesinde, erişmesi daha zor olan ek kod yollarını da kısmen tetikliyor - Saldırı akışı, manipüle edilmiş komutla
mm_answer_keyallowedkancasını kurduktan sonra, birden çok sahte ssh-rsa açık anahtarı kullanarak komut tamponunu birleştirme şeklinde işliyor - Bu “magic buffer”, ek arka kapı komutları ve 2 adet ed448 imzası içeriyor; imzalarda ana makine anahtarının SHA256 özeti ile KEX'in
session_iddeğeri yansıtılıyor - Mevcut PoC, büyük ölçüde değiştirilmiş paramiko SSH istemci kütüphanesini kullanıyor ve
0x03komutu,system()tabanlı RCE ile uid/gid ayarlamayı mümkün kılıyor - Kimlik doğrulama atlatmasının da doğrulandığı belirtiliyor;
mm_keyallowed_backdoor cmd 1ilemm_answer_authpasswordyanıtı ezilirse rastgele bir parola ile oturum açılabiliyor
Daha derine bağlı arka kapı yolu
- xz sshd arka kapısı, ilk bilinen davranıştan daha derin işlevler içeriyor ve bunların bir kısmı doğrudan tetiklenmiş durumda
- Temel giriş noktası
RSA_public_decryptkancası- Doğru biçimde hazırlanmış bir komut gönderildiğinde,
sshdiçindekimm_answer_keyallowedişlevine başka bir kanca kuruluyor - Ardından birden çok sahte
ssh-rsaaçık anahtarı verilerek “magic buffer” parçalar halinde birleştirilip toplanıyor
- Doğru biçimde hazırlanmış bir komut gönderildiğinde,
- “magic buffer”, ek arka kapı komutlarını taşıyan tampon
- İçinde 2 adet ed448 imzası da bulunuyor
- Bu imzalar,
RSA_public_decrypttarafındaki arka kapı imzalarında olduğu gibi ana makine anahtarının SHA256 özetiyle salt'lanıyor - Son imza ayrıca SSH ilk anahtar değişiminden (KEX) türetilen 0x20 baytlık
session_iddeğerini de yansıtıyor
PoC ve kimlik doğrulama atlatması
- Mevcut PoC, büyük ölçüde değiştirilmiş paramiko SSH istemci kütüphanesiyle uygulanıyor
- Şu anda tetiklenen komut, bu kod yolundaki
0x03system()üzerinden temel RCE'yi yeniden mümkün kılıyor- uid/gid ayarlamayı da destekliyor
- Hâlâ anlaşılması gereken daha fazla kod var ve
mm_answer_keyallowedarka kapı komutlarından birinin sonundamm_answer_keyverifyiçin de kanca kurduğu görüldüğünden, etkileşimli oturumların tam kimlik doğrulama atlatması mümkün görünüyor - Sonrasında kimlik doğrulama atlatması da doğrulandı
mm_keyallowed_backdoor cmd 1,mm_answer_authpasswordyanıtını kullanıcı tanımlı bir değerle ezebiliyor- Yanıt
{ u32(9), u8(13), u32(1), u32(0) }olarak ayarlanırsa herhangi bir parolayla oturum açmak mümkün
1 yorum
Hacker News görüşleri
https://threadreaderapp.com/thread/1776691497506623562.html
Bu olay bazı yönlerden çok profesyonel, bazı yönlerden ise epey amatör göründüğü için tuhaf
Önemli bir paketin bakımcısı olacak kadar güvenilir bir kimliği uzun süre inşa etmişler, birden fazla kişinin dahil olduğu izlenimi veren bir sosyal mühendislik saldırısı yürütmüşler, gerçek kimliği ve saldırının kaynağını açığa çıkarmamışlar; gizleme de incelikliymiş
Buna rağmen üretim sürümüne hataların ve performans regresyonunun sızmış olması özensiz görünüyor. Devlet destekli bir örgüt gerçekten yetkin olsaydı, açık projeye göndermeden önce kapalı ortamda yeterince test edip şüphe çekecek performans düşüşünü ortadan kaldırırdı gibi geliyor
iOS’ta yakın zamanda yaşanan “backdoor olabilir” olayı da, çok sayıda zafiyeti biriktiren organizasyonların bunların bir kısmını harcama konusunda her zaman çok dikkatli olmadığını gösteriyor
Hedef sunucular ve appliance’lardı; varsayılan imajda Valgrind çalıştıran kaç sunucu ya da appliance vardır ki? Geriye dönüp bakınca “bunu nasıl düşünmediler” deniyor ama muhtemelen hedefledikleri sistem imajlarıyla test ettiler, sıradan geliştiricilerin özelleştirilmiş imajlarıyla değil
Kevin Beaumont, “Jia Tan”ın bunu görüp backdoor’un etkisiz kalabileceğini hemen fark ettiğini ve bu exploit’e harcanan muazzam emeği boşa çıkarmamak için acele etmiş olabileceğini tahmin etti [1]; bu da doğru görünüyor
Bu teslim tarihi baskısı yüzünden 5.6.0’da çökme yaşandı ve olayın yakalanmasının temel nedeni olan performans regresyonunu azaltacak ya da ortadan kaldıracak rötuşlara zaman kalmamış olmalı
[0]: https://github.com/systemd/systemd/pull/31550
[1]: https://doublepulsar.com/inside-the-failed-attempt-to-backdo...
Patrick McKenzie’nin başka yerlerde belirttiği gibi, suç örgütleri de suç dışı örgütlere benzer şekilde komiteler ve mutabakatla hareket eder. Böyle bakınca, özellik şişkinliğinden kaynaklanan performans düşüşü yüzünden geminin batması da anlaşılır. Çalıştığım şirketler bundan daha amatörce hatalar yaptı
Belki de kullandıkları başka bir backdoor ya da alternatif erişim yolu kapatılmıştı ve aceleyle yeni bir geçide ihtiyaç duydular
[1] https://en.wikipedia.org/wiki/Poisoning_of_Alexander_Litvine...
Buradaki karmaşıklık gerçekten ilginç; ama sonuçta oldukça göze çarpan bir performans regresyonu yüzünden yakalandı
Gerçek bir suç programında duyduğum bir alıntı aklıma geliyor: “Cinayetten yakalanmanın bir milyon yolu vardır; bunların yarısını bile düşünebiliyorsan dahisin”
Başka biri de sahte hesapları yönetip yorumlarda ve PR’larda etkileşime girmiş olabilir
Bu sefer sadece şanssızlıkla mı yakalandı, yoksa bu tür saldırıları gerçekten başarıya ulaştırmak çok mu zor, bilmiyorum. İkincisi olmasını isterdim ama doğrusu bilemeyiz
libsystemd’deki @teknoraver yaması yüzünden son tarihlerinin değiştiğine eminim
Böyle olaylarda ayrıntılara derinlemesine inen çok sayıda teknik yazı çıktığında, neden herkesin “bu kesinlikle devlet destekli”, “zaman damgalarına bakın, çürütülemez kanıt” dediğini sık sık merak ediyorum.
xz olayının gizli yürütülmüş ve uzun süre emek verilmiş bir saldırı olduğu doğru, ama yetenekli tek bir bireyin ötesinde gerçekten bir şey gerekiyor mu? İnternetteki rastgele kişilerin bunu analiz edip anlayabilmesi, bunun bir kişinin anlayabileceği kapsamda olduğu anlamına da geliyor.
Sadece zeki ama hoşnutsuz bir kişinin bunu tek başına yapmış olması neden mümkün olmasın?
Bu tür kâr amaçlı bir plan irrasyonel. İrrasyonel bir aktör ya da para dışı motivasyonu olan bir birey olasılığını dışlamıyor, ama devlet aktörünü güçlü aday gibi gösteriyor.
Başarılı olsaydı satılabilecek değeri muazzam olurdu, ancak kritik altyapıya bir exploit yerleştirip müşterinin satın alıp kullanabileceği kadar uzun süre fark edilmeden kalma olasılığı çok düşük. Devletler moonshot denemeleri kaldırabilir, ama bireylerin beklenen değeri daha yüksek hedefler arama eğiliminde olduğunu düşünüyorum.
Elbette bu, yetkin bir devlet aktörü olduğu ya da çok kaynak ayırdığı anlamına gelmez.
Ama bu, pek çok açık kaynak geliştiricisi için de geçerli değil mi? Motivasyon da açık. Bu exploit karaborsada milyonlarca dolar değerinde olurdu.
Konuya hâkim insanların çok sayıda tahminini gördüm, ama böyle bir ifade görmedim.
Backdoor’un kendisindeki obfuscationı toparlayan bir yazı var mı? Kurulum amaçlı build script’inden değil, gerçek backdoor’dan bahsediyorum.
Binary’yi Ghidra’ya koyup bulduğum fonksiyonlara göz attım, ama çalışmayı ele geçirmek için kullanılan ifunc mekanizmasına aşina olmadığım için bıraktım ve işi başkalarına bıraktım.
Anti-debugging özelliği olduğuna göre kodun da obfuscate edilmiş olacağını düşünüyorum. Opak bir binary olarak dağıtıldığı için, kodun en azından bir kısmının bizde olmayan bir anahtarla şifrelenmiş olacağını sanmıştım. STUXNET payload’larının bazı kısımları gibi.
Anti-debugging özelliği olması, kodun mutlaka obfuscate edildiği anlamına gelmez. Yukarıda söylendiği gibi, build zamanında yapıldığı için. Kendi evine tuzak kurmuş gibi.
Bu olay, paket yöneticisi doğru kaynaktan gelen source’u almadığında ortaya çıkan sorunu gösteriyor.
Bu olayı çok ayrıntılı takip etmedim, ama hack’in faili hakkında neredeyse hiç tartışma duymamak çok tuhaf geliyor.
https://rheaeve.substack.com/p/xz-backdoor-times-damned-time...
Zamanla üslup farkları oluşup oluşmadığına bakarak birden fazla kişinin aynı persona ile hareket edip etmediği de görülebilir. Commit edilmiş kod da epey fazla, bu yüzden kod stili farklılıkları üzerinden birden fazla kişinin dahil olup olmadığına bakmaya değer.
Bunun yaygınlaşmadan önce bulunmuş olması oldukça şanslı bir durum.
Sebep yalnızca bilinmeyen bir öznenin altyapımızda uzaktan kod çalıştırma yetkisine sahip olmasını istemememiz gibi bariz bir şey değil. İnsanlar kurcalamaya devam ederse, sonunda herkesin backdoor’u kullanmasını sağlayacak bir payload üretmeleri mümkün.
Tek bir öznenin erişim hakkına sahip olması da kötü, ama herkesin erişebilir hale gelmesi çok daha kötü.
thereaderapp.com yerine bakılabilecek bağlantı:
https://nitter.poast.org/bl4sty/status/1776691497506623562
Günler geçtiği halde hâlâ tamamen çözülememiş olması şaşırtıcı.
Tüm dünyanın gözleri üzerindeyken ve temel parçalar teorik olarak herkese açıkken bu kadar dayanabilmesi, obfuscationın oldukça iyi yapıldığı anlamına geliyor.
Bu olayın uzun soluklu niteliği beni endişelendiriyor.
Birincisi, backdoor’u oluşturacak “altyapıyı” kurmak için uzun süre doğru zamanı beklediler. İkincisi, exploit gerçek prodüksiyona yayıldıktan sonra da muhtemelen başka bir uzun oyuna hazırlanmışlardı. Piyango ikramiyesini harcamanın doğru yolu yatırım yapmaktır.
Üçüncüsü, şu anda da böyle bir oyunun sürüp sürmediğini merak ediyorum. Korkutucu.