XZ arka kapısı: Zaman, lanet zaman ve aldatmacalar
(rheaeve.substack.com)- 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_DATEveGIT_COMMITTER_DATEile 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 amile 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_DATEveGIT_COMMITTER_DATEortam 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,e446ab7aiçin committer Lasse Collin ve bunlar Jia’nın e-postayla gönderdiği yamalarıgit amile 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 amile 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
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.
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.
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.
Ancak Finlandiya’da genelde temmuz tercih edildiği için bu daha az yaygın.
Dışarıdan bakınca tutarlı görünü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.
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
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)
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
gckomutunuTZ=UTC0 git commitile eşlemiştimSistem 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
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
alias git='TZ=UTC0 git'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
“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
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 personbu nasıl bir sözdizimi?sedikamesindekis/a/b/yi biliyorum amacile başlayanını bilmiyorumSabahları “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?
“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
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