2 puan yazan GN⁺ 2024-04-07 | 1 yorum | WhatsApp'ta paylaş
  • xz'nin sshd arka kapısı, ilk ortaya çıkan RSA_public_decrypt kancası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_keyallowed kancası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_id değeri yansıtılıyor
  • Mevcut PoC, büyük ölçüde değiştirilmiş paramiko SSH istemci kütüphanesini kullanıyor ve 0x03 komutu, 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 1 ile mm_answer_authpassword yanı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_decrypt kancası
    • Doğru biçimde hazırlanmış bir komut gönderildiğinde, sshd içindeki mm_answer_keyallowed işlevine başka bir kanca kuruluyor
    • Ardından birden çok sahte ssh-rsa açık anahtarı verilerek “magic buffer” parçalar halinde birleştirilip toplanıyor
  • “magic buffer”, ek arka kapı komutlarını taşıyan tampon
    • İçinde 2 adet ed448 imzası da bulunuyor
    • Bu imzalar, RSA_public_decrypt tarafı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_id değ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 0x03
    • system() ü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_keyallowed arka kapı komutlarından birinin sonunda mm_answer_keyverify iç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_authpassword yanı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

 
GN⁺ 2024-04-07
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

    • “Devlet destekli” dendiğinde beklentiler fazla yüksek oluyor sanırım. Büyük organizasyonlar sonunda başka büyük organizasyonlara benzer hale gelir; bürokrasi, teslim tarihleri, dağıtım döngüleri ve ekipler arası iletişim sorunları yaşarlar
      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
    • Kodu geliştiren kişilerin aynı anda Valgrind çalıştırıp performansa bakmıyor olması inanması zor bir şey değil
      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
    • 2024-02-29’da libsystemd’nin liblzma’ya link etmesini engelleyen bir PR açıldı [0]
      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...
    • Google bile hiçbir şey olmamış gibi Gemini’yi yayımlayabildiyse, bu tür gölge bir örgütün daha incelikli bir şekilde başarısız olması o kadar mı inanılması güç?
      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ı
    • Yetkin devlet destekli örgütlerde de kazalar yaşanabilir. İstihbarat kurumları da hayal edildiği kadar soğukkanlı biçimde yetkin olmayabiliyor. Birleşik Krallık’ta gerçekleşen Kremlin suikast girişimleri neredeyse hatalar komedisiydi [1]
      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”

    • Hesabın arkasında bir ekip olduğunu varsayarsak anlamlı. Birisi özelliği geliştirmiş, daha dikkatsiz ya da daha az deneyimli başka biri entegre etmiş olabilir
      Başka biri de sahte hesapları yönetip yorumlarda ve PR’larda etkileşime girmiş olabilir
    • Saf ya da fazla kolay inanan biri olabilirim ama böyle backdoor’ların zaten yaygınlaşmış olmasından endişelendiğim her seferinde bunu düşünüyorum
      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
    • Yanlış hatırlamıyorsam performans regresyonu yalnızca kod varsayılan olmayan -fno-omit-frame-pointer ile derlendiğinde ortaya çıkıyordu. https://mastodon.social/@AndresFreundTec/112187000944648334
    • Yeterli zamanları ve daha fazla yerel testleri olsaydı, başarılı olma ihtimalleri yüksekti
      libsystemd’deki @teknoraver yaması yüzünden son tarihlerinin değiştiğine eminim
    • “Yarısını bile düşünebiliyorsan” sözü cinayetleri çözmeye çalışan taraf için de geçerli mi?
  • 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?

    • Devlet aktörünü akla getiren en büyük unsur, sosyal mühendislik saldırısına harcanan zamana kıyasla beklenen ödülün büyüklüğü.
      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.
    • Katılıyorum. Bu hack için çok beceri, kararlılık ve zaman gerekiyordu.
      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.
    • Hiçbir şey yok. Kim olduğunu kimse bilmiyor.
    • “Çürütülemez kanıt” ifadesini nerede gördüğünü merak ediyorum; dayanağı nedir?
      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.

    • Backdoor’un kendisine dair eksiksiz bir analiz henüz çıkmadı. Anti-debugging bazı durumlarda flag’lerle aşılabilen türden olabiliyor, ama bu sefer derleme aşamasında işlendiği için biraz daha çetrefilli.
      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.

    • “Ancak ben onun aslında UTC+02 kış/UTC+03 DST saat diliminden, yani Doğu Avrupa’yı (EET) veya İsrail’i (IST) kapsayan bir bölgeden olduğunu düşünüyorum.”
      https://rheaeve.substack.com/p/xz-backdoor-times-damned-time...
    • Çok sayıda tahmin vardı. Tek kişiden çok birden fazla kişi olma ihtimali yüksek; ransomware grubu ya da devlet istihbarat kurumu olma ihtimali de var gibi görünüyor.
    • Satoshi analizinde olduğu gibi ilgili çevrimiçi personaların iletişimlerini anlamsal olarak analiz etmek, kültürel yönü kestirmek açısından ilginç olabilir.
      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.
    • Neyi tartışacağız? Bilinen hiçbir şey yok.
  • 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ü.

    • Payload özel RSA anahtarı ise bu neredeyse imkânsız değil mi?
  • 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.