
Bu yazı, sabit kod (fixed code) ve atlamalı kod (rolling code) temelli kablosuz erişim
güvenlik yapısını incelemek, bu yapılardaki güncel ve potansiyel zafiyetleri değerlendirmek,
analizlerde gözlemlenen davranışları teknik bir çerçevede açıklamak amacıyla hazırlanmıştır. Analiz
süreci NFC tabanlı kartlar, RF tabanlı erişim kartları, RFID kartlı geçiş sistemleri ve bu sistemlerin
korunma mantıkları üzerine yürütülmüştür. DesFire örneği bünyesinde CVE-2023-33221 ile
numaralandırılmış güvenlik açığı incelenmiştir.
Terminoloji
RF -> Radio Frequency – Radyo Frekansı
NFC – Near Field Communication – Yakın Alan İletişimi
RFID -> Radio Frequency Identification – Radio Frekansı Tanımlayıcı
Nonce -> Number Used Only Once – Sadece Bir Kere Kullanılan Sayı
PRNG -> Pseudorandom Number Generator – Sözde Rassal Sayı Üreteci
Heap -> Programın çalışma zamanında dinamik olarak bellek ayırdığı bölüm.
Sabit kod kullanan basit RF cihazlar, her tetiklemede aynı sinyali gönderir. Bu nedenle sinyal
herhangi bir aşamada yakalanabilirse, daha sonra tekrar gönderildiğinde sistem tarafından geçerli
kabul edilir. Kriptografik doğrulama bulunmadığı için bu davranış tasarım gereği gerçekleşen
beklenen bir davranıştır. Sistem yalnızca tanıdığı sabit değeri görür ve tetikleme işlemini uygular.
Bu tip yapılar modern güvenlik prensipleri açısından güvenli kabul edilmemesi, bu yapının temel
mimari özelliklerine dayanır.

Atlamalı kod (rolling code) yapıları ise farklı bir güvenlik mantığına dayanır. Verici her tetiklemede
tek seferlik bir kod üretir. Alıcı bu kodu doğruladıktan sonra kendi nonce değerini bir sonraki
pozisyona taşır. Böylece eski bir kod tekrar kullanıldığında alıcı tarafından reddedilir. Bu yöntem,
kodun tekrarlanamaz olmasını sağlamaya dayanır.

Bu aşamada RollJam gibi yöntemlere de değinmek gerekir. RollJam atlamalı kod yaklaşımını
aşmaya yönelik bir yöntemdir. RollJam yalnızca belirli koşullar sağlandığında etkili olabilen bir
yaklaşımdır. Yöntemin işleyebilmesi için vericinin ilk göndermeye çalıştığı kodun alıcıya ulaşmadan engellenmesi, aynı anda kaydedilmesi ve kullanıcının ikinci kez düğmeye basması gerekir. Sistemin ikinci kodu kabul etmesiyle saldırganın elinde kullanılmamış bir kod kalır. Ancak bu yöntem bile her rolling code yapısında işe yaramaz. Sayaç aralığının geniş olması, bütünlük doğrulamasının bulunması veya kullanılan kriptografinin sağlam olması hâlinde RollJam etkisiz kalır.

Bu noktada CVE-2023-33221 örneğine değinebiliriz. Bu zafiyet, DESFire kart okuyucu fonksiyonunda sınır kontrolü yapılmadan gelen verinin heap bölgesine kopyalanmasıyla ortaya çıkar. Kartın gönderdiği verinin uzunluğu doğru kontrol edilmediğinde, bellek taşması(buffer overflow) oluşur ve cihazın çalışma akışı çökebilir veya istenmeyen şekilde yönlendirilebilir. Bu güvenlik açığı, kriptografik gücü yüksek bir teknoloji kullanılsa bile uygulama katmanında yapılan kontrol eksikliğinin zafiyete sebebiyet verebileceğini gösterir. Varsayılan DESFire anahtarlarının kullanılması da saldırıyı daha kolay hale getirir, çünkü saldırganın cihaza özel anahtarları bilmesine gerek kalmaz.
CVE-2023-33221 Ayrıntılı Analizi:
Genel Bakış
• Zafiyet Kodu: CVE-2023-33221
• Üretici (Vendor): IDEMIA
• Etkilenen Ürünler: Biyometrik erişim kontrol terminalleri (SIGMA, MorphoWave, VisionPass serileri).
• Zafiyet Türü: Heap-based Buffer Overflow (Yığın Tabanlı Tampon Taşması).
• Kritiklik: Yüksek (CVSS v3.1 Score: 7.8)
Teknik Analiz ve Kök Neden
Bu zafiyet, cihazın Mifare DESFire kartlarını okuma ve işleme mantığında yatmaktadır.
• Mekanizma: IDEMIA terminalleri, yüksek güvenlikli DESFire kartlarını okuyabilmek için kart ile bir şifreli iletişim (handshake) kurar ve kartın anahtarlarını (keys) okumaya/doğrulamaya çalışır.
• Zafiyet: Firmware içerisindeki kart okuma fonksiyonu, karttan gelen veriyi cihazın belleğine (heap memory) kopyalarken sınır kontrolü (boundary check) yapmaz.
• Tetiklenme: Saldırgan, özel olarak hazırlanmış (malicious) bir DESFire kartını terminale okutur. Kart, terminalin beklediğinden daha uzun veya bozuk formatta bir veri (payload) gönderir.
•Sonuç: Yazılım, gelen bu aşırı uzun veriyi bellekte kendisine ayrılan alanın dışına taşırır (overflow). Bu taşma, “heap” bölgesindeki diğer kritik verilerin veya fonksiyon işaretçilerinin üzerine yazılmasına neden olur.
Saldırı Senaryosu (Attack Vector)
Bu zafiyet CVSS sınıflandırılmasında Remote (Uzaktan) kategorisinde değil, Local / Physical (Yerel/Fiziksel) kategorisindedir; ancak etkisi potansiyel olarak komut çalıştırma(RCE) ile sonuçlanabilmektedir.
1. Hazırlık: Saldırgan, özel bir RFID/NFC yazma cihazı kullanarak zafiyeti tetikleyecek payload’u içeren sahte bir DESFire kart hazırlar.
2. Eylem: Saldırgan fiziksel olarak hedef terminalin yanına gelir ve kartı okutur.
3. Default Key Riski: CVE açıklamasındaki “This is especially problematic if you use Default DESFire key” ibaresi kritiktir. Eğer terminal, fabrika çıkışı varsayılan DESFire anahtarlarını kullanacak şekilde yapılandırılmışsa, saldırganın cihazla iletişim kurması ve exploit’i tetiklemesi çok daha kolaylaşır. Özel anahtarlar (diversified keys) kullanılsaydı, saldırganın önce bu anahtarı bilmesi gerekecekti.
Sonuç: Cihaz çökebilir (DoS) veya saldırganın hazırladığı kod (shellcode) cihaz üzerinde root yetkisiyle çalıştırılabilir. Bu durumda saldırgan kapıyı açabilir, logları silebilir veya cihazı ağa sızmak için bir atlama tahtası (pivot) olarak kullanabilir.
Bir kablosuz erişim sisteminin güvensiz sayılması için belirli teknik koşulların oluşması gerekir. Sabit kod kullanımı başlı başına bir güvensiz tasarımdır. Rolling code yapısında ise PRNG’nin zayıf olması, nonce değerlerinin tahmin edilebilir olması, iletişimin şifrelenmemesi veya uygulama katmanında sinyal doğrulama hatalarının bulunması sistemi kırılgan hale getirir. Varsayılan anahtar kullanımı da ayrı bir risk faktörüdür. Bu eksikliklerin biri bile sistemde “tekrar edilebilir sinyal” ya da “manipüle edilebilir doğrulama süreci” oluşturuyorsa güvenlik seviyesi zayıflar.

Uygulama
Sabit kodlu bir cihazda Replay Attack simüle etmek için Flipper Zero Princeton 24 Bit (PT2262) Simülasyonu ile yapılan çalışmada, laboratuvar ortamında kontrollü bir sinyal kaynağı oluşturmak amacıyla fiziksel bir kumanda yerine Flipper Zero cihazı kullanılmıştır.
Deney Kurulumu
Sinyal Kaynağı (TX): Flipper Zero, Sub-ghz modülü üzerinden Princeton (PT2262)
protokolünü simüle edecek şekilde yapılandırılmıştır. 24-bitlik sabit kod (Fixed Code)
paketleri manuel olarak oluşturulmuş ve periyodik olarak yayınlanmıştır.

Sinyal Alıcı (RX): HackRF One, URH(Universal Radio Hacker) yazılımı ile 433.92 MHz frekansına kilitlenmiştir. Universal Radio Hacker ile Flipper Zero frekansı yakalanmıştır. Ardından yine Universal Radio Hacker ile sinyal Replay edilmiştir.


Flipper Zero’yu Sub-ghz menüsünde read moduna aldığımızda oynatılan sinyalin başarıyla Flipper Zero tarafından gönderilen key olan 1AEAB4 değeri başarıyla okunabilmiştir.

Son olarak, kablosuz sinyal yakalama ve yeniden gönderme işlemleri birçok ülkede düzenlemeye tabidir. Bu tür testler yalnızca sistem sahibinin açık izniyle yapılabilir. Bu çalışmada aktarılan yöntemler yalnızca savunma perspektifinden değerlendirilmiştir ve lab ortamında izole şekilde gerçekleştirilmiştir. Hukuki sınırların dışında kullanılmaları yasal sonuçlar doğurabilir. Türkiye Cumhuriyeti sınırları içerisinde elektronik haberleşme güvenliği 5809 Numaralı Elektronik Haberleşme Kanunu çerçevesinde değerlendirilmektedir.
TL;DR
Bu yazı, kablosuz erişim sistemlerinin güvenliğinin temeline ait bir doküman olarak hazırlanmıştır. Sabit kodlu sistemlerin modern tehditlere karşı yetersiz olduğu, rolling code sistemlerinin ise doğru tasarlandığında yüksek koruma sağlayabildiği görülmektedir. CVE-2023-33221 gibi uygulama katmanı zafiyetleri ise, güvenli sanılan teknolojilerin bile hatalı implemantasyon nedeniyle zayıflayabileceğini açıkça göstermektedir.
Kaynaklar:
https://www.idemia.com/wp-content/uploads/2023/11/Security-Advisory-SA-2023-05-2.pdf
https://en.wikipedia.org/wiki/Rolling_code
https://vietsol.com.vn/rollback-rolljam-exploring-vulnerabilities-to-strengthen-vehicle-security/
https://en.wikipedia.org/wiki/MIFARE
https://github.com/jopohl/urh
https://docs.flipper.net/sub-ghz
https://www.mevzuat.gov.tr/mevzuat?MevzuatNo=5809&MevzuatTur=1&MevzuatTertip=5
