eSIM / Java Card VM Exploitation
Reading time: 5 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Genel Bakış
Gömülü SIM'ler (eSIM'ler), güvenli bir bileşenin üzerinde Gömülü UICC (eUICC) akıllı kartları olarak uygulanır ve Java Card Sanal Makinesi (JC VM) çalıştırır. Profiller ve appletler, Uzaktan SIM Sağlama (RSP) aracılığıyla hava üzerinden (OTA) sağlanabildiğinden, JC VM içindeki herhangi bir bellek güvenliği hatası, cihazın en ayrıcalıklı bileşeni içinde uzaktan kod yürütme ilkesine dönüşür.
Bu sayfa, getfield
ve putfield
bytecode'larındaki eksik tür güvenliği kontrollerinin neden olduğu Kigen’in eUICC'sinin (Infineon SLC37 ESA1M2, ARM SC300) gerçek dünyada tam bir ihlalini tanımlamaktadır. Aynı teknik, kart üzerindeki byte-code doğrulamasını atlayan diğer satıcılara karşı da yeniden kullanılabilir.
Saldırı Yüzeyi
- Uzaktan Uygulama Yönetimi (RAM)
eSIM profilleri, rastgele Java Card appletlerini içerebilir. Sağlama, SMS-PP (Kısa Mesaj Servisi Noktadan Noktaya) veya HTTPS üzerinden tünellenebilen standart APDU'lar ile gerçekleştirilir. Bir saldırgan, bir profil için RAM anahtarlarını ele geçirirse (veya çalarsa), uzaktan kötü niyetli bir applet
INSTALL
/LOAD
edebilir. - Java Card byte-code yürütmesi Kurulumdan sonra, applet VM içinde yürütülür. Eksik çalışma zamanı kontrolleri bellek bozulmasına izin verir.
Tür Karışıklığı Primitifi
getfield
/ putfield
yalnızca nesne referansları üzerinde çalışması beklenir. Kigen eUICC'de, talimatlar yığın üzerindeki operandın bir nesne veya bir dizi referansı olup olmadığını asla doğrulamaz. Bir array.length
kelimesi, normal bir nesnenin ilk örnek alanıyla tam olarak aynı ofsette bulunduğundan, bir saldırgan:
- Bir byte-dizisi oluşturur
byte[] buf = new byte[0x100];
- Bunu
Object o = (Object)buf;
olarak dönüştürür. putfield
kullanarak bitişik bir nesne içindeki herhangi 16-bit değeri üzerine yazar (VTABLE / ptr çeviri girişleri dahil).- İçsel işaretçiler ele geçirildiğinde rastgele belleği okumak için
getfield
kullanır.
// Pseudo-bytecode sequence executed by the malicious applet
// buf = newarray byte 0x100
// o = (Object) buf // illegal but not verified
// putfield <victimObject+offset>, 0xCAFE // arbitrary write
// ... set up read-what-where gadgets ...
Primitive, eUICC adres alanında keyfi okuma/yazma sağlar - bu, kartı GSMA ekosistemine kimlik doğrulamak için kullanılan cihaz-a özgü ECC özel anahtarını dökmek için yeterlidir.
Uçtan Uca Sömürü İş Akışı
- Firmware'i numaralandır – Belgelendirilmemiş
GET DATA
öğesiDF1F
kullan:
80 CA DF 1F 00 // → "ECu10.13" (açık)
- Kötü niyetli applet'i OTA yükle – TS.48 Genel Test Profili'nin kamuya açık anahtarlarını kötüye kullan ve CAP dosyasını (
LOAD
) taşıyan SMS-PP parçalarını iterekINSTALL
ile devam et:
// basitleştirilmiş APDU zinciri
80 E6 02 00 <data> // LOAD (blok n)
80 E6 0C 00 <data> // yükleme için INSTALL
- Tür karışıklığını tetikle – Applet seçildiğinde, bir işaretçi tablosunu ele geçirmek için write-what-where işlemi gerçekleştirir ve normal APDU yanıtları aracılığıyla bellek sızdırır.
- GSMA sertifika anahtarını çıkar – Özel EC anahtarı applet'in RAM'ine kopyalanır ve parçalar halinde geri döner.
- eUICC'yi taklit et – Çalınan anahtar çifti + sertifikalar, saldırganın herhangi bir RSP sunucusuna meşru bir kart olarak kimlik doğrulamasını sağlar (bazı operatörler için EID bağlama hala gerekebilir).
- Profilleri indir ve değiştir – Düz metin profilleri
OPc
,AMF
, OTA anahtarları ve hatta ek appletler gibi son derece hassas alanlar içerir. Saldırgan:
- İkinci bir eUICC'ye bir profili klonlayabilir (ses/SMS ele geçirme);
- Yeniden yüklemeden önce Java Card uygulamalarını yamanlayabilir (örneğin, STK kötü amaçlı yazılımı eklemek);
- Büyük ölçekli kötüye kullanım için operatör sırlarını çıkarabilir.
Klonlama / Ele Geçirme Gösterimi
PHONE A ve PHONE B üzerinde aynı profilin yüklenmesi, Mobil Anahtarlama Merkezi'nin gelen trafiği en son kaydedilen cihaza yönlendirmesiyle sonuçlanır. Bir oturumluk Gmail 2FA SMS müdahalesi, kurban için MFA'yı atlamak için yeterlidir.
Otomatik Test & Sömürü Araç Kiti
Araştırmacılar, bir Java Card VM'nin savunmasız olup olmadığını hemen gösteren bsc
(Temel Güvenlik Kontrolü) komutuna sahip bir iç araç yayınladı:
scard> bsc
- castcheck [arbitrary int/obj casts]
- ptrgranularity [pointer granularity/tr table presence]
- locvaraccess [local variable access]
- stkframeaccess [stack frame access]
- instfieldaccess [instance field access]
- objarrconfusion [object/array size field confusion]
Framework ile birlikte gönderilen modüller:
introspector
– tam VM ve bellek gezgini (~1.7 MB Java)security-test
– genel doğrulama atlatma appleti (~150 KB)exploit
– %100 güvenilir Kigen eUICC ihlali (~72 KB)
Önlemler
- Kart üzerindeki byte-code doğrulaması – yalnızca yığın üstü yerine tam kontrol akışı ve veri akışı türü izleme zorunlu kılın.
- Dizi başlığını gizle –
length
değerini örtüşen nesne alanlarının dışına yerleştir. - RAM anahtarları politikası güçlendir – asla kamu anahtarları ile profiller göndermeyin; test profillerinde
INSTALL
'ı devre dışı bırakın (GSMA TS.48 v7'de ele alınmıştır). - RSP sunucu tarafı sezgileri – EID başına profil indirmelerini sınırlayın, coğrafi anormallikleri izleyin, sertifika tazeliğini doğrulayın.
Pentesterlar için Hızlı Kontrol Listesi
GET DATA DF1F
sorgusu – savunmasız firmware dizesiECu10.13
Kigen'i gösterir.- RAM anahtarlarının biliniyorsa kontrol et ‑> OTA
INSTALL
/LOAD
denemesi yap. - Applet kurulumu sonrası, basit cast primitive'ini brute-force yap (
objarrconfusion
). - Güvenlik Alanı özel anahtarlarını okumayı dene – başarı = tam ihlal.
Referanslar
- Security Explorations – eSIM güvenliği
- GSMA TS.48 Genel Test Profili v7.0
- Java Card VM Spesifikasyonu 3.1
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.