4 puan yazan GN⁺ 2025-06-02 | 1 yorum | WhatsApp'ta paylaş
  • Worldline Yomani XR kredi kartı terminali üzerinde güvenlik araştırması amacıyla tersine mühendislik çalışması yapıldı
  • İç söküm sürecinde fiziksel müdahale algılama özelliğinin iyi uygulandığı, ancak yazılımsal olarak root shell'in harici seri porta açık olduğu tespit edildi
  • Bellek yongasının sökülmesi, firmware çıkarımı ve analiziyle Linux 3.6 çekirdeği tabanlı bir sistemin yapısı ve çok eski bileşenler doğrulandı
  • Seri konsol portu üzerinden cihazı sökmeden de kolayca root yetkisi elde edilip kötü amaçlı yazılım kurulabildiği gösterildi
  • Tüm ödeme ve kimlik doğrulama ile ilgili kritik işlemler ayrı bir güvenli işlemci üzerinde yürütüldüğünden, gerçekte önemli verilerin açığa çıkma riski büyük değil

Projeye genel bakış

  • Bu proje, ödeme terminali güvenlik araştırması amacıyla Worldline Yomani XR modelinin tersine analiz sürecine odaklanıyor
  • İsviçre genelinde yaygın olarak kullanılan bu model artık üretimden kalkmış olsa da birçok büyük perakendeci ve küçük işletmede hâlâ kullanılıyor

İlk gözlemler ve donanımın sökülmesi

  • UI incelemesi, port taraması gibi temel araştırmaların ardından donanım sökümüne başlandı
  • Birden fazla PCB, iyi tasarlanmış bir kasa ve özel ASIC tabanlı çift çekirdekli Arm işlemci gibi unsurlar sayesinde oldukça güçlü bir donanım güvenliği gözlemlendi
  • Ana SoC, Samoa II kod adlı özel bir ASIC ve harici flash ile RAM içeriyor

Müdahale algılama ve kurcalamaya karşı koruma

  • Kasa açılmadan bile basınç algılamalı kart bağlantısındaki (Zebra strip) bozulma ya da vidaların gevşemesiyle müdahale olayı algılanabiliyor
  • Bu algılama, batarya sayesinde güç kesildiğinde de devam ediyor
  • Ana PCB üzerindeki zikzak izler (trace) ve kart okuyucuyu saran esnek PCB hasar gördüğünde müdahale tespiti tetikleniyor
  • Kısa süreli söküm ve yeniden montajdan sonra cihaz, müdahale algılandığı için yalnızca kırmızı bir "TAMPER DETECTED" ekranı gösteriyor ve harici girişlere yanıt vermiyor

Chip-off firmware çıkarımı

  • Kart üzerindeki flash sökülerek doğrudan bağlandı ve firmware çıkarıldı
  • Veriler şifrelenmemişti, ancak alışılmadık bir ECC yapısı ve YAFFS2 dosya sisteminin metadata yerleşimi görüldü
  • Dosya sistemi okuyucusu uygulanarak tüm dosya listesi elde edildi
  • Sistem, 2010 sürümü Buildroot tabanlı 3.6 çekirdek kullanıyor; içinde uClibc, busybox ve çok sayıda eski kütüphane bulunuyor

Root shell'in tesadüfen bulunma süreci

  • Firmware analizi sonrası flash yeniden bağlandı, seri konsol hatları bulundu ve mantık analizörüyle sinyaller yakalandı
  • Boot log'larıyla birlikte giriş istemi ortaya çıktı
  • "root" yazıldığında parola olmadan anında root shell'e girilebildi
  • Bu seri porta aslında dışarıdan yalnızca kapağı açarak doğrudan erişilebildiği görüldü
  • Saldırganlar terminali sökmeden hızlıca bağlanıp kötü amaçlı yazılım enjekte edebilir

Bu ne kadar ciddi bir sorun?

  • Boot ve sistem yapılandırmasının analizi, Linux'un yalnızca ağ, güncelleme ve iş mantığının bir kısmını yönettiğini gösterdi
  • Kart ödemeleri, PIN girişi, ekran gibi tüm güvenlikle ilgili işlevler ayrı bir mp1 işlemcisi tarafından yönetiliyor
  • Linux (mp2) her zaman açılıyor; ardından imzalı ve şifreli image güvenli bootloader tarafından güvenlik çekirdeğine yükleniyor
  • Dahili olarak güvenlik çekirdeği koruması düzgün çalışıyor ve güvenliğe kritik veriler root shell açığıyla sızdırılamıyor

Açıklama ve bildirim takvimi

  • 14 Kasım 2024: Root shell keşfedildi
  • 15 Kasım 2024: Üreticiye 90 günlük açıklama planıyla birlikte bildirim yapıldı
  • 18 Kasım 2024: Üreticiden raporun alındığına dair yanıt geldi
  • 1 Haziran 2025: Proje kamuya açıklandı

Sonuç

  • Harici seri port üzerinden root shell'in açık olması, açıkça gereksiz bir saldırı yüzeyi ve mühendislik hatası
  • Ancak güvenli işlemcinin ayrı tasarlanmış olması sayesinde ödeme verilerinin fiilen sızma riski düşük
  • Root girişine izin verilmesi, üretim firmware'ine yanlışlıkla uygulanmış olabilir ya da sürüme göre değişebilir
  • Araştırma sırasında bazı cihazlarda root giriş özelliğinin tamamen devre dışı olduğu da görüldü
  • Bu sorun kurum içinde muhtemelen zaten fark edilip düzeltilmiş olabilir

Bu proje birçok ilginç sonuç ortaya koydu ve firmware'i derinlemesine incelemenin değerini bir kez daha gösterdi

1 yorum

 
GN⁺ 2025-06-02
Hacker News görüşleri
  • Genç geliştiricilere bir not: “Hacker News”teki hacker tam da bu anlama geliyor; bu yazı tipik bir hacker yolculuğunu adım adım kolay anlaşılır şekilde analiz eden iyi bir örnek. Benzer örnekleri görmek isteyenler için Hack-a-day’e de bakılabilir. Yazar oldukça meraklı ve temel bilgisi de çok sağlam biri gibi görünüyor. Özünde bu süreç; çip veri sayfasını araştırmak, zarar vermeden desolder yapmak, bellekse kabloyla yeniden bağlamak, doğaçlama ve bol deneme-yanılmadan ibaret. Bir dahaki sefere sığ delikler açarken iz bırakmamak için pinhole kamera kullanmak da düşünülebilir. Yazar kurcalama algılama kontrollerini de aşıp cihazı normal çalıştırmayı deneseydi gerçekten çok daha ilginç olurdu.

    • Hacker terimi yalnızca bilgisayar güvenliğiyle sınırlı değil; çok daha geniş bir anlamı ve felsefi bir tanımı var. Guy Steele ve diğerlerinin derlediği Jargon File buna örnek gösterilebilir. Örneğin “programlama sistemlerinin ayrıntılarını öğrenmekten ve sınırlarını genişletmekten hoşlanan kişi”, “programlamanın kendisinden tutkuyla keyif alan kişi” ve “belirli bir programda çok yetkin uzman” gibi çeşitli anlamlarda kullanılıyor. Muhtemelen Hacker News’in kurucusu PG de adı koyarken bu geniş tanımı aklında tutuyordu. Hacker teriminin tarihinde The UNIX-HATERS Handbook da mutlaka anılmalı.

    • İlk cümleye sonuna kadar katılıyorum; bugün bir tane daha LLM wrapper görürsem gerçekten bıkkınlık gelecek.

    • Bu sitenin bir VC startup kuluçka programından çıkmış olması, adın mutlaka güvenlik anlamında hacking’e işaret ettiği anlamına gelmez. Muhtemelen startup dünyasındaki “move fast and break things” tarzı hack etmekten, yani hızlıca kod döküp sorunları zorlayarak aşma yaklaşımından söz ediliyor.

    • Uzun süre sadece takip edip yakın zamanda hesap açarak yorum yazmaya başladım; bilgi ve uygulama becerisiyle öne çıkan böyle gönderiler, Hacker News’in “hacker” ruhunu en iyi gösteren şeyler.

    • Bu yazı gerçekten hacking hakkında olduğu için ilk kez gönderinin kendisine upvote verdim. Normalde sadece yorumlara oy veririm ama bu gönderi istisnaydı.

  • 2 dolarlık bir USB kart okuyucuyla sahte kredi/banka kartı işlemleri simüle etmek mümkün. Tüm spesifikasyonlar ve protokoller çok kapsamlı ama açık; yalnızca belgeleri okuyarak uygulanabilir. Ancak gerçek bir işlemi onaylatmak için veriyi internet üzerinden bankaya göndermek gerekir ve bunu yaparsanız yetkililerin, örneğin FBI’ın, kapınıza gelmesi işten bile değildir. Kart okuyucunun kendisinde neredeyse hiç koruma yoktur; çoğu Linux ve zayıf parolalar kullanır. Asıl güvenlik, mağaza ile banka arasındaki sözleşme ve kurallardan gelir.

    • Kart okuyucularda “koruma yok” denmesine katılmıyorum. Gerçekte yalnızca imzalı binary’ler çalıştırılabilir, yürütülebilir dosya sistemi salt okunurdur, veri dosya sisteminde de noexec bayrağı vardır, root login kapalıdır, busybox kırpılmıştır, anahtarlar boot sırasında güvenli bölgeden yüklenir, master key ekleme işlemi de yalnızca fabrikada yapılabilir. Boot süreci de çok güvenlidir ve kurcalama tespit edilirse çip kendini boşlayarak sıfırlar. Ucuz ve sertifikasız terminallerde güvenlik neredeyse hiç olmayabilir ama EMV geliştirme deneyimime göre gerçek terminaller neredeyse kusursuz biçimde kilitlidir.

    • “Tek güvenlik mağaza ile banka arasındaki düzenlemeler” kısmı ise doğru. Bu yüzden insanların elde taşınan kart okuyucularla temassız kartlardan para çalabildiğine dair komplo teorilerini pratiğe dökmek çok zordur. Fiilen bir işlem üretmiş olsanız bile sonraki aşamalar ve ön hazırlıklar yüzünden parayı güvenli biçimde çekmek neredeyse imkânsızdır. Özellikle bugünlerde işlem push bildirimleri nedeniyle suç girişimlerinin ortaya çıkma ihtimali yüksektir.

    • Benim daha çok endişelendiğim şey, kart okuyucuların sahada hacklenip önbelleğe alınmış kredi kartı bilgilerinin okunması ya da araya giren türde malware yüklenmesi. Bu alandaki araştırmaların önemli olmasının nedeni de bu.

    • İşlemlerin onay için internet üzerinden bankaya gönderilmesi gerektiği ifadesi doğru değil. Bankaların kart işlemlerini işlemek için internete açık bir API’si yok.

    • Kart okuyucu güvenliğinin zayıf olduğu iddiasına da katılmıyorum. Gerçek mağaza terminallerinde banka ve ödeme ağı anahtarlarını güvenle saklayan güvenli donanım bulunur. Eğer bu anahtarlar sızarsa meşru işlemleri sahte olarak üretmek mümkün olabilir.

  • Stripe M2 reader’dan 36 tane satın alıp kullandık ve 7’si bozuldu. 2’sinin bataryası şarj tutmuyor, 1’i NFC tarayamıyor, 4’ü ise “tampered” hatası verip öldü. Yüzeyde bu çok ciddi bir arıza oranı gibi görünüyor ama kullanım günü ve yaş gibi bağlamı da hesaba katmak gerek. Yine de asıl kötü olan, toplamda yalnızca 9 gün kullanılmış, 1 ila 3 yıllık reader’ların 7 tanesinin bozulmuş olması. Taşırken her biri için hard-shell kutu ve köpük insert kullanıyoruz; yani kötü saklama da söz konusu değil. Buna rağmen Stripe M2 reader hâlâ eldeki en işe yarar seçenek olduğu için mecburen kullanıyoruz. Bu arada şirketimiz festival ödemelerini yönettiği için bu cihazları kısa süreli ama toplu biçimde kullanıyoruz.

    • Bir sonraki etkinlikten önce cihazları mutlaka tam şarjlı saklamayı öneririm. Çoğu batarya düşük şarj seviyesinde uzun süre bekletilmekten hoşlanmaz; ayrıca kurcalama algılama özelliğinin de düzgün çalışması için bataryanın sağlıklı olması gerekebilir.
  • Fiziksel kurcalama koruması tetiklendiğinde root shell açılması ilginç bir ihtimal olabilir. Yani sistem ya gerekli tüm kriptografik anahtarlara sahip bir güvenlik moduna giriyordur ya da debug/arıza analizi için root shell açılan bir moda geçiyordur. Tabii bu durumda önemli private key’lerin otomatik olarak silinmiş olmasını umarım.

    • Ben de root shell üzerinden yeni anahtarlar flash’lanıp cihazın yeniden kullanıma açılıp açılamayacağını merak ettim. Terminal zaten hizmet dışına çıkarılıyorsa ikinci el edinmek de çok zor olmayabilir.
  • “Root shell açılsa bile kart verileri risk altında değil” ifadesiyle birlikte, bunun güvenlik tasarımı yapanların mutlaka okuması gereken bir yazı olduğunu düşünüyorum.

    • Bir terminale fiziksel erişiminiz ve root yetkiniz varsa kart numaralarını okuyamıyor olmanız bana hiç inandırıcı gelmiyor. Güvenlikte fiziksel erişim ve root erişimi genelde oyunun bittiği anlamına gelir.
  • Yapı şöyle olabilir: Linux’un kurcalanmış hali, “compromised mode” kodunu mu yoksa mp1 güvenlik sistemini mi okuyacağını belirliyor. Bootloader’ın kendisi güvenli olsa bile gerçekte hangi ortamda çalıştığı çok şeyi değiştirir. Bir co-processor, Secure Enclave benzeri rol üstlenebilir; ancak Linux farklı bir bootloader yükleyebiliyorsa bu güvenlik açısından ciddi bir sorun olur.

    • Ayrı bir bootloader yüklemek mümkün değil. Ben de bizzat kurcalama tetikleyip bootloader’ı manipüle etmeye çalıştım ama düzgün boot etmedi; muhtemelen üçüncü bir boot ROM tarafından doğrulanıyor. Ayrıca Linux, kurcalama durumundan bağımsız olarak loadercode ve mp1.img dosyalarını her zaman birlikte yüklüyor; kurcalama durumuna göre dallanma, bütünlük korumalı loadercode içinde yapılıyor.
  • Yeni başlayan biriyseniz önce modern Android tabanlı kredi kartı terminallerini denemenizi öneririm. PIN dokunmatik ekrandan girildiği için daha da eğlenceli olabilir.

    • Touch controller genelde güvenlik işlemcisinin kontrol ettiği bir MUX’a bağlıdır ve güvenli bilgi girişi sırasında touch girdisi doğrudan güvenlik işlemcisine gider; Android tabanlı işletim sistemi araya girmez.

    • Touchpad üzerinde gösterilse bile PIN verisi trust zone içinde çalışan firmware tarafından yönetilir ve şifreli haldedir; aradaki uygulamalar PIN’i göremez.

    • Bu tür Android terminalleri hackleseniz bile güvenlik tasarımı aynıysa kartın kendisi karmaşık kriptografi yaptığı için pratikte işe yarar bir veri elde edemezsiniz. Böyle saldırılar ancak geriye sadece kredi kartı okuyucusu kalmışsa işe yarar; o noktada da cihaz zaten kullanıcıya bir skimmer uyarı işareti verir.

    • Hindistan’da kullanılan Android terminallerin hâlâ Android Oreo ile çalışması ilginç; desteği Ocak 2021’de sona ermişti.

  • Cihazın içini incelemeye başlar başlamaz hemen açıp kurcalama modunu tetiklemiş olması bana tuhaf geldi. Çoğu reader’da kurcalama algılama olduğunu bilmiyor muydu acaba? Kurcalama modunda test yapmak anlamı azaltabilir; belki de kurcalama tetiklendikten sonra aslında sıfırlama için shell açılıyordur. Son olarak, gerçekten en baştan açmaya yönelmenin doğal ilk adım olup olmadığını yeniden düşünmek gerek.

    • İlk başta donanım, SoC, arayüzler, flash gibi temel bilgileri öğrenmem gerektiğini düşündüğüm için açtım. Ön araştırma yapmadan yaklaşınca tamamen karanlıkta başlıyormuşum gibi geldi. Sonradan düşününce belki sadece debug connector’a hafifçe dokunmak bile yeterli olabilirdi. Ayrıca ikinci, sağlam terminalde de shell almayı başardım.
  • Bu kadar kapsamlı kurcalama korumasına rağmen etrafta hâlâ aşılabilecek şeyler ve ilginç izler kalmış olması etkileyici. Güvenlik kısmının güvenli biçimde devre dışı kalması zaten doğru tasarım.

    • Güçlendirilmiş işlemci (mp1) hâlâ kırılamamış durumda. Aslında diğer işlemciyle mesajlaşmak için sadece string’ler display_tool binary’sine veriliyor. Kart okuyucuya veya keypad’e Linux üzerinden doğrudan erişim yok; tamamen ayrı mp1 işlemcisi kart, PIN girişi, ekran gösterimi gibi “güvenli” işlerin tamamını yürütüyor. mp2 Linux ise sadece ağ, güncelleme ve iş mantığını yönetiyor.

    • Linux tarafı kurcalama olayını fark edip işliyor olabilir; ancak güvenlik anahtarları ancak kurcalama tamamen tespit edildikten sonra silinebiliyorsa, root shell önceden ele geçirilip sonra kurcalama akışı atlatılabilir. Bu da riskli bir senaryo olur.

  • Bu tip terminallerin Avrupa’nın her yerine yayılmış olması ilginç. İsviçre’den emin değilim ama bildiğim birçok Avrupa bölgesinde insanların kredi kartı taşıması pek yaygın görünmüyor. Buna karşılık POS terminalleri her tür kartı okuyabiliyor; bu yüzden onlara “POS sistemi” demek daha doğru olabilir. Yine de yazıyı keyifle okudum.

    • Cüzdanda bir sürü kart taşımaktan gerçekten nefret ediyorum. Zaten birçok sebepten, sadece ödeme için değil, cüzdanım patlayacak gibi oluyor; bir de üstüne telefonu ya da akıllı saati buna eklemek istemiyorum. Cihazı kaybettiğimde kişisel bilgilerin sızması bana fazla yıkıcı geliyor. Tercih meselesi ama mekanik saat seviyorum; bu yüzden de kart sadeleştirme yöntemlerini kullanmıyorum.