2 puan yazan GN⁺ 2024-04-01 | 1 yorum | WhatsApp'ta paylaş
  • xz/liblzma tarball’ındaki arka kapı etrafında, Jia Tan’ın Git commit saat dilimleri ve çalışma örüntüleri, gerçek faaliyet bölgesini tahmin etmeye yarayan ipuçları olarak kullanılıyor
  • Commit zamanları GIT_AUTHOR_DATE ve GIT_COMMITTER_DATE ile değiştirilebilir; ancak tüm zamanları inandırıcı biçimde ayarlamaktansa yalnızca saat dilimini değiştirmek daha kolay olmuş olabilir
  • Jia Tan’ın 440 commit’inin çoğu UTC+08 olarak kaydedilmişti; ancak bazı UTC+02 ve UTC+03 kayıtları Doğu Avrupa’daki kış saati/yaz saati geçişleriyle örtüşüyor
  • 6 Ekim 2022 ve 27 Haziran 2023’teki saat dilimi geçişleri, gerçek bir yer değiştirmeyle açıklanması zor olacak kadar kısa aralıklara sahip; bu da basit seyahat ihtimalini zayıflatıyor
  • Bazı +0200 commit’ler, Lasse Collin’in git am ile uyguladığı yamalar gibi görünüyor; e-posta yaması akışlarında saat dilimi bilgisine duyulan güvenin azalması gibi bir sınırlama var

xz arka kapısı ve analiz konusu

  • xz/liblzma tarball’ında bulunan arka kapı, özgür yazılım ekosisteminin güvenini ciddi biçimde sarsan bir olay olarak görülüyor
  • Arka kapının, xz’nin uzun süreli ana bakımcılarından Jia Tan tarafından eklenmiş olabileceği düşünülüyor
  • Jia Tan hakkında toplulukta adı dışında neredeyse hiç bilgi yoktu; bu adın kendisi de gerçek olmayabilir
  • Analiz konusu, JiaT75’in GitHub etkinliği ve xz deposundaki commit zaman damgalarıdır
  • Çıkış noktası olan herkese açık yazı, oss-security posta listesi gönderisidir

Git zaman damgalarını sahteleştirmenin neden zor olduğu

  • Git commit zamanı, GIT_AUTHOR_DATE ve GIT_COMMITTER_DATE ortam değişkenleriyle değiştirilebilir
  • Henüz push edilmemiş commit’lerde tarihi sonradan amend ile düzeltmek de mümkündür
  • Ancak inandırıcı zaman verisi sahteciliği çeşitli kısıtlar getirir
    • Gelecekte oluşturulmuş gibi görünen bir commit’i push etmek şüphe uyandırabilir
    • Çevrimiçi tartışmalardan daha eski gibi görünen commit’ler de doğal durmaz
    • Bu kısıtlardan kaçınmak için commit’leri bekletmek gerekir; bu da proje geliştirmesini geciktirebilir
  • Gerçek zamanı ayarlamak yerine yalnızca saat dilimini değiştirmek, hesaplama ya da commit geciktirme olmadan daha kolay kandırma imkânı sağlar

UTC+08 kayıtları ve UTC+02/03 olasılığı

  • Jia Tan’ın commit’lerinin çoğu, yani 440 tanesi, UTC+08 zaman damgasıyla kalmış durumda
  • UTC+08 büyük olasılıkla Çin CST’si olabilir; ancak Endonezya, Filipinler ve Batı Avustralya da aynı saat dilimindedir
  • Jia Tan adı, Asyalı, özellikle de Çinli gibi görünmeye yönelik bir işaret olabilir
  • Gerçek faaliyet bölgesinin UTC+02 kış saati / UTC+03 yaz saati bölgesi olabileceği ileri sürülüyor
    • Bu bölgeye Doğu Avrupa EET’si, İsrail IST’si gibi saat dilimleri dahildir
    • UTC+08 kayıtları UTC+02/03’e göre düzeltildiğinde, genellikle sabah 9’dan akşam 6’ya kadar çalışma örüntüsü ortaya çıkar
    • Düzeltme yapılmazsa salı gecesi gece yarısı ve 01.00’de çalışılmış gibi görünür; bu daha az doğal durur

Saat dilimi geçişlerinde ortaya çıkan ipuçları

  • Bazı commit’ler, Jia Tan’ın saat dilimi değişikliğini unutmasının sonucu olabilir
  • 3 adet UTC+02 commit ve 6 adet UTC+03 commit tespit edilmiş
    • UTC+02, şubat ve kasım aylarındaki kış saatiyle uyumlu
    • UTC+03, haziran, temmuz ve ekim başındaki yaz saatiyle uyumlu
    • Bu, Doğu Avrupa’daki yaz saati geçişiyle; yani ekimin son hafta sonundan sonra +0200, martın son pazarından sonra +0300 örüntüsüyle uyuşuyor
  • Bu saat dilimi, Lasse Collin ve Hans Jansen’in saat dilimleriyle de aynı görünüyor
  • 2 Nisan güncellemesinde Joey Hess’in işaret ettiği nokta yansıtılarak, bu örneklerin çoğunun committer’ı Lasse Collin olan commit’ler olduğu ekleniyor
    • Ancak Lasse’nin commit ettiği Jia’ya ait tüm commit’lerde aynı durum görülmüyor; çoğu durumda +0800 olarak kaydedilmiş
    • Bu nedenle +02/03 commit’lerin bir hata mı yoksa basit bir iş akışı değişikliği mi olduğu net değil

Gerçek yer değiştirme olarak görülmesi zor aralıklar

  • UTC+08’de yaşayan birinin ara sıra UTC+02/03 bölgesine uçtuğu açıklaması, ayrıntılı zaman damgalarıyla pek uyuşmuyor
  • 6 Ekim 2022’de 21:53:09 +0300 commit’inin ardından 17:00:38 +0800 commit’i var
    • İki commit arasındaki fark yaklaşık 11 saat
    • Çin’den Doğu Avrupa veya Orta Doğu’ya yalnızca uçuş süresi bile en az 10-12 saattir; direkt uçuşlar nadir olduğundan daha uzun sürme ihtimali yüksektir
  • 27 Haziran 2023’te 23:38:32 +0800 commit’ini 17:27:09 +0300 commit’i izliyor
    • İki commit arasındaki fark dakikalar düzeyinde
  • Bu tür geçişler, Jia Tan’ın gerçekten UTC+08 CST bölgesinde bulunmamış olabileceğini destekliyor

Tatiller ve hafta içi çalışma örüntüsü

  • Tatil örüntüsü de Çin’den çok Doğu Avrupa tarafıyla daha iyi uyuşuyor gibi görünüyor
  • Çin resmi tatilleri listesi için Bank of China Indonesia’nın 2023 resmi tatil duyurusu referans alınıyor
  • Çin resmi tatili olarak belirtilen günlerde de çalışma kayıtları var
    • 29 Eylül 2023: Güz Ortası Festivali
    • 5 Nisan 2023: Qingming Festivali
    • 22-27 Ocak 2023 vb.: Bahar Festivali dönemi
  • Doğu Avrupa resmi tatilleriyle ilgili olarak, 25 Aralık Noel’de, 31 Aralık ve 1 Ocak yılbaşında çalışma kaydı olmadığı görülüyor
  • Jia’nın en sık çalıştığı günler salı 86 kez, çarşamba 85 kez, perşembe 89 kez, cuma 79 kez

Ad ve yama uygulama caveat’i

  • “Jia Cheong Tan” gerçek adıysa bunun Çin’de kullanılan Han karakterli bir adın geçerli bir Latin harfli yazımı olmayabileceği, daha çok Malezya gibi Güneydoğu Asya’daki yazımlara yakın olduğu yönünde bir görüş var
  • “Cheong” yazımı modern Çin’de kullanılmıyor; ayrıca Çin usulü İngilizce yazımda ad karakterlerinin bitişik yazılma eğiliminde olduğuna dair örnek de veriliyor
    • Örnek “Yangqing Jia”; “Yang Qing Jia” değil
  • Ancak iki +0200 commit de5c5e4, e446ab7a için committer Lasse Collin ve bunlar Jia’nın e-postayla gönderdiği yamaları git am ile uygulamış gibi görünüyor
  • Söz konusu commit’lerin ve bazı bitişik commit’lerin aynı zaman damgasına sahip olması, yama dosyası demetinin git am ile uygulanması durumuyla uyumlu
  • Yamalar e-postayla gidip geldiğinde saat dilimi bilgisine güvenmek zorlaştığından, bu analizin bir kısmı zayıflıyor

1 yorum

 
GN⁺ 2024-04-01
Hacker News yorumları
  • Bu devlet destekli bir saldırı idiyse, kodu ve e-posta listesi mesajlarını yazan kişi/birimden ayrı olarak, ortaya çıkan şeylerin internete çıkış zamanını ve zaman damgalarını “proje kurgusuna uygun hikâyeyle” eşleştiren ayrı bir ekip bulunmuş olması gayet olası.
    Hatta bazen araştırmacılara gerçek konumu değil, seçilmiş başka bir yeri ima etmek için bilerek “hatalar” eklemiş de olabilirler.

    • Bu operasyonun arkasında muhtemelen bütün bir ekip vardı; bu ekibin işleri arasında “XZ projesini, seçtiğimiz bakım sorumlusunu kabul etmeye sosyal mühendislikle yönlendirmek” gibi şeyler de yer almış olabilir.
      Başka bir yazıda[1] da aniden ortaya çıkan hesapların aciliyet hissi yaratarak bakım yetkisinin devrini hızlandırmış olabileceği öne sürülmüştü.
      [1] https://connortumbleson.com/2024/03/31/watching-xz-unfold-fr...
      via: https://news.ycombinator.com/item?id=39888854
      İlgili kısmı bulmak için "Progress will not happen until there is new maintainer" diye aratabilirsiniz.
    • Bunun “tek başına hareket eden yalnız bir kurt” olmadığı varsayımıyla çok daha fazla şey mümkün hale geliyor.
      Belirli bir konumdan faaliyet gösteriyormuş gibi görünmesini sağlamak ve aynı zamanda birden fazla kişi gibi görünmemesini kurgulamak da buna dahil.
  • Doğu Avrupa kökenli olduğunu sanmıyorum; ama UTC+0200/+0300 açısından bakınca Avrupa’da Finlandiya, Baltık ülkeleri, Ukrayna, Romanya, Moldova ve Yunanistan gibi yerler buna giriyor.
    Biraz daha aşağı inince İsrail dahil Orta Doğu’nun epey geniş bir bölgesi de kapsama giriyor.

    • Ağustosta 4 haftalık bir boşluk görünüyor; bu da Avrupa’daki tatil takvimleriyle örtüşüyor.
      Ancak Finlandiya’da genelde temmuz tercih edildiği için bu daha az yaygın.
    • Tukaani, ağırlıklı olarak Finlandiyalıların katkıda bulunduğu Finlandiyalı bir organizasyon ve katkıda bulunanlara bakınca neredeyse hepsinin adı Finlandiya usulü.
      Dışarıdan bakınca tutarlı görünüyor.
    • Yaz saati uygulaması ve tatiller açısından İsrail’le nasıl örtüştüğünü merak ediyorum.
    • Neden downvote aldığını bilmiyorum. Devlet aktörleri denince Stuxnet gibi örnekler nedeniyle İsrail, ABD/Rusya/Çin/Kuzey Kore ile birlikte listede epey yukarılarda yer alıyor.
      Özellikle IDF’nin Unit 8200 biriminin oldukça bilinen bir itibarı var.
      Diğer ülkelerin kapasitesi olmadığı anlamına gelmiyor; ayrıca bu saldırı mutlaka NSA ya da GCHQ seviyesinde kaynak gerektiriyormuş gibi de görünmüyor. Gerçekte tek başına hareket eden bir yalnız kurt da olabilir, ama yine de dikkate değer.
    • “Kimseye güvenme! Tanrı üçüncü mağara adamını sıçtığı andan beri, onlardan birini hedef alan bir komplo kuruluyordu!” - Gen. Hunter Gathers, OSI (The Venture Bros.)
      Fiilen sınırsız kaynağa ve motivasyona sahip güçler, sorumluluğu belirli bir yöne çekmek için false flag operasyonları düzenleyebilir. Bunlar izlerini silmekte çok ustadır ve en deneyimli güvenlik araştırmacısının bile sorumlunun kim olduğuna dair eğitimli bir tahmine varması aylar ya da yıllar sürebilir.
      Bu yüzden “bunu kim yaptı”yı bulmaya çalışmak neredeyse zaman kaybıdır.
      Çıkarılacak ders şu: üretim ortamlarına hiçbir gerekçeyle son teknoloji ama doğrulanmamış yazılım koymayın; kurumun sızma testçileri düzenli olarak stack’i kırmayı denemeli ve sonuçları kuruma ve paket yöneticilerine bildirmeli; özgür ve açık kaynak bakım sorumluları özellikle güvenliğe duyarlı yeni kodu her sürümde denetlemeli; ayrıca bakım sorumlularına bağış yapılmalı.
      Neyse ki stable’a girmedi; sistemin içinde bir güvenlik Çernobili patlamak üzereyken kıl payı kurtulduk sayılır.
      Belirli bir gücün sorumlu olduğuna herkesi ikna etmeye çalışanlar var ve bunun jeopolitik amaçları bulunuyor. Örneğin ABD’de popüler web uygulamalarının yabancı sahipliğini yasaklama tartışmaları varken, böyle bir yasadan çıkar sağlayacak bir hükümet ya da şirket için, Çinli isimli bir GitHub kullanıcısının PRC’den geliyormuş gibi görünen zaman damgalarıyla bir saldırı vektörü commit etmesi ne kadar kullanışlı olurdu.
      Gerçekten Çin ana karasından biri olsa bile, devlet desteği aldıysa hakkında iddianame ve iade talebi çıksa dahi ABD marshal’larına teslim edilme ihtimali neredeyse yok. Hatta daha büyük örgütsel bilgilerin düşmana geçmesini önlemek için “susturulabilir” bile.
      Bond filmi tarzı komploları bir kenara bırakırsak, bu bilgiyi pratikte uygulayabileceğiniz pek fazla yer yok. Kullanıcıların nereden geldiğini genellikle zaten biliyorsunuz ve bölgesel engelleme de yapabilirsiniz. Aksi halde o bölgeden gelen başka tehditlere karşı hazırlıklı olmanız gerekir.
  • GMT+8, adın yapısı (Çince/karma lehçe tarzı ad + Hokkien soyadı) ve Singapur’daki bir VPN çıkışı ya da barındırma sunucusu gibi görünen yerden bağlanıldığına dair emareler[1], gerçek olsun ya da kılık değiştirme olsun, Singapurlu kimliğiyle tamamen örtüşüyor.
    Bu yüzden [1]’deki kaynağın “isim sahte gibi geliyor” değerlendirmesini de biraz süzgeçten geçirmek gerekir. Çin ana karasındaki insanlar, diaspora Çinli topluluklarını her zaman iyi tanımayabilir.
    Bahsedilen tatillerin önemli bir kısmı da Singapur resmi tatilleri[2] değil. 24 Ocak resmi tatildi, ama “iş günlerinde çalışır” kalıbını uygulamak için 22 Ocak pazar olmasına rağmen çalışılmış gibi görünüyor.
    Jia Tan’ın yazılarına, özellikle daha eski olanlara daha çok bakmak ilginç olabilir. Singapurluları, Çin ana karasından gelenleri, çeşitli Slav dillerini konuşanları ve ana dili İngilizce olanları ayırt etmeye yarayabilecek oldukça belirgin dil alışkanlıkları bulunabilir.
    [1] https://boehs.org/node/everything-i-know-about-the-xz-backdo...
    [2] https://www.mom.gov.sg/employment-practices/public-holidays

    • Jia Tan’ın gördüğüm birkaç commit’inde İngilizce, ABD’li ya da Britanyalı bir ana dil konuşurununki kadar doğal okunuyordu; Singapur İngilizcesi izlerine rastlamadım.
      Elbette örneklem çok küçük, bu yüzden bundan fazla anlam çıkarmamak gerekir.
      Singapurluların neredeyse %10’unun soyadı Tan’dır.
      [1] [https://en.wikipedia.org/wiki/File:Singaporean_surnames_by_f...](https://en.wikipedia.org/wiki/File:Singaporean_surnames_by_frequency.png)
    • Tan yalnızca ayrı bir Hokkien soyadı (çok daha yaygın olan 陳) değil, aynı zamanda Çince soyadıdır.
  • Konunun ciddiyetini bir kenara bırakırsak, bu olayın dedektif romanı gibi olan yönüne tamamen kapıldım
    İnternetin “kim, nasıl, neden” sorularını çözmeye çalışması ilginç

  • Birkaç yıl önce tam da bu nedenle terminaldeki gc komutunu TZ=UTC0 git commit ile eşlemiştim
    Sistem saatini ya da git ayarlarını değiştirmeye gerek yok. Genel ayarlarda daha iyi bir yöntem olabilir ama
    Kötü niyetli bir sebep de değil. Çok seyahat ediyorum ve herkese açık depolara seyahat programımı sızdırmak istemiyorum

    • git commit’lerindeki zaman bilgisini gizlemek için küçük bir araç yapıp kullanıyorum: https://github.com/SmartHypercube/git-date-truncate
      Yalnızca saat dilimini UTC’ye çekmekle kalmıyor, saati de 00:00 olarak ayarlıyor; böylece commit’te yalnızca tarih bilgisi kalıyor. git commit’lerinde kalıcı olarak saklanacak bilgi olarak tarihin yeterli olduğunu, tam commit saatini sızdırmaya gerek olmadığını düşünüyorum
    • Şöyle yapsak nasıl olur?
      alias git='TZ=UTC0 git'
    • Çok seyahat ediyorum ama bu aralar iş istasyonumun saat dilimini PST/PDT’den değiştirmiyorum
      Manuel bir adım gerekiyor ve konum servislerini de kullanmıyorum
  • Jia’ya yazık olmuş. 2 yıl çalıştığı şeyin tamamı boşa gitti
    Jia, bunu okuyorsan, denemediğin şutların %100’ünü kaçıracağını hatırla. Başını dik tut, kardeşim

    • O çevrimiçi kişiliğin arkasındaki kişinin kaç tane başka alter egosu olduğunu ve bu kimliklerle başka projeleri ne kadar kirlettiğini kimse bilmiyor
    • Endişelenmeye gerek yok. Onlar, yani ekip, muhtemelen görüntü kütüphanelerine, WebKit’e, Kubernetes’e vb. de katkı veriyordur
    • Neden boşa gittiğini düşünüyorsun? Hedefine ulaşmadığını biliyor musun?
    • JiaT’nin yalnızca xz projesinde çalışmış olduğundan emin olmak zor
  • “Kim sabahın erken saatlerinde düzenli olarak çalışır ki?”
    Ben
    “Bir hacker’ın öğleden sonra ve gece geç saatlerde çalışması çok daha olasıdır”
    Burada hacker’ı genç biriyle değiştirirsen daha doğru olur gibi

    • “Hacker” stereotipi de eski, ama bunu “genç biri”yle değiştirip “yaşlı biri” olmadığını ima etmek de aynı derecede tuhaf
      41 yaşındayım ve son 10 yılda sabah 7’den önce uyanık olduğum gün sayısı herhalde 20’yi ancak bulur. Hâlâ bilgisayar işine katlanmamın yarı nedeni, çoğu gün 11:00-19:00 düzeniyle çalışıp yine de iyi iş çıkarabildiğim az sayıdaki meslekten biri olması
      Sabah insanları ve gece insanları var. Herkesin kendi ritmi vardır ve bu yargılanacak bir şey değil; ama yaşlandıkça doğal olarak değişen ya da değişmesi gereken bir şey de değil
    • c/hacker/younger person bu nasıl bir sözdizimi? sed ikamesindeki s/a/b/yi biliyorum ama c ile başlayanını bilmiyorum
    • Stereotipleri bir kenara bıraksak bile, ciddi şekilde kod yazan hacker’lar genelde “asıl iş” programlarını dış yükümlülüklerin etrafına yerleştirir
      Sabahları “sabah insanları”yla uğraşmak gibi dikkat dağıtıcı şeyler çoktur; öğleden sonradan akşama kadar araya giren şeyler çok daha azdır
      Rastgele telefon ve e-postaların geldiği 8 saatlik mesaiden çok, kesintisiz 4 saat içinde çok daha fazla iş çıkarılabilir. Artık genç de değilim ama dikkat dağıtıcı bir şey olmadığında ve birkaç saat boyunca aralarda üzerine düşündükten sonra işi yarı sürede bitirebildiğim için gece yaptığım işler de oluyor
      Huzurlu sabahlar geçiriyorsan imreniyorum
  • “27 Haziran 2023 Salı günü 23:38:32 +0800 ve 17:27:09 +0300 zamanlı iki commit görünüyor. Hesaplayınca iki commit arasında yaklaşık 9 saat fark var”
    Ama 17:27:09 +0300, 22:27:09 +0800 olduğuna göre, iki commit arasında yaklaşık 1 saat fark yok mu?

    • Doğru. Daha kötü bir kısım da var
      “Daha belirleyici olarak, 6 Ekim 2022’de 21:53:09 +0300 commit’inden sonra 17:00:38 +0800 commit’i görünüyor. Bu yalnızca birkaç dakika fark demek!”
      Hayır. Bu neredeyse 10 saat fark
      Yazar iki analizi yanlışlıkla karıştırmış ya da saat dilimi hesabını pek iyi yapamıyor gibi
  • Ya Amerikalı, ya da bambaşka bir bölgeden biri; Çinli gibi davranan Doğu Avrupalı gibi davranıyorsa?
    Bir şeyi gizleyecek olsam en azından bir katman daha dolambaç eklerdim

    • Çinli biri, Çinli gibi davranan Doğu Avrupalı ya da İsrailli gibi davranıyor da olabilir
      Böyle bir kurguda bu tür sızıntılar olsa bile pek bir şey olmaz
  • Orijinal yazarlardan biriyim. Gelecekteki analizlerde kullanmak için çok sayıda fikir edindim; sık gelen dört itiraza yanıtım şöyle
    Bunun tek kişi mi yoksa birden fazla kişi mi olduğu belirsiz, buna katılıyorum. Ancak ekip olsa bile saat dilimi yaklaşımı o ekibin nerede bulunduğunu gösterebilir. Etkinlik saatleri, dünyanın dört yanına dağılmış bir ekipten çok normal çalışma saatleri gibi görünüyor
    Commit saatlerinin değiştirilmiş olması ya da commit/upload işlemlerinin zamanlanmış bir script ile yapılmış olması elbette mümkün. Yine de gerçekten büyük bir saat dilimi farkını gizlemek için çok büyük gecikmeler eklemek gerekeceğinden, bunun pratikte zor olduğunu düşünüyorum. Çünkü xz boşlukta geliştirilmiş bir şey değildi; issue açılması veya mailing list yazıları gibi çevrimiçi olaylara tepki verilerek geliştirildi
    İki örneği gerçekten karıştırmışız. 10 saat kadar fark olduğunu söylediğimiz iki zaman aslında birkaç dakika farkla; birkaç dakika fark olduğunu söylediğimiz zamanlar ise yaklaşık 10 saat farkla. Güncelleyeceğiz
    Son olarak UTC+2/3’ün yalnızca Doğu Avrupa’yı değil, Orta Doğu’nun bazı kısımlarını da kapsadığı doğru. Bunu da yazı güncellemesinde netleştirdik