eSIM / Java Card VM Exploitation

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Oorsig

Ingebedde SIMs (eSIMs) word geïmplementeer as Ingebedde UICC (eUICC) slimkaarte wat 'n Java Card Virtual Machine (JC VM) bo-op 'n veilige element laat loop. Omdat profiele en applets oor-die-lug (OTA) via Remote SIM Provisioning (RSP) verskaf kan word, word enige geheue-veilige fout binne die JC VM onmiddellik 'n afstandkode-uitvoeringsprimitive binne die mees bevoorregte komponent van die toestel.

Hierdie bladsy beskryf 'n werklike volledige kompromie van Kigen se eUICC (Infineon SLC37 ESA1M2, ARM SC300) veroorsaak deur ontbrekende tipe-veilige kontroles in die getfield en putfield bytecodes. Dieselfde tegniek kan hergebruik word teen ander verskaffers wat op-kaart byte-kode verifikasie oorslaan.

Aanvaloppervlak

  1. Afstandtoepassingbestuur (RAM) eSIM profiele kan arbitrêre Java Card applets insluit. Verskaffing word uitgevoer met standaard APDUs wat deur SMS-PP (Short Message Service Point-to-Point) of HTTPS getunnel kan word. As 'n aanvaller die RAM sleutels vir 'n profiel besit (of steel), kan hulle 'n kwaadwillige applet op afstand INSTALL/LOAD.
  2. Java Card byte-kode uitvoering Na installasie, voer die applet binne die VM uit. Ontbrekende tydslope kontroles laat geheue-korrupsie toe.

Die Tipe-Bewustheid Primitive

getfield / putfield is veronderstel om slegs op objekverwysings te werk. In Kigen eUICC valideer die instruksies nooit of die operand op die stapel 'n objek of 'n array verwysing is nie. Omdat 'n array.length woord op presies dieselfde offset as die eerste instansieveld van 'n normale objek lewe, kan 'n aanvaller:

  1. 'n byte-array skep byte[] buf = new byte[0x100];
  2. Dit cast na Object o = (Object)buf;
  3. Gebruik putfield om enige 16-bis waarde binne 'n aangrensende objek te oorskryf (insluitend VTABLE / ptr vertaalinge).
  4. Gebruik getfield om arbitrêre geheue te lees sodra interne punte verower is.
java
// 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 ...

Die primitive bied arbitraire lees / skryf in die eUICC adresruimte – genoeg om die toestel- unieke ECC private sleutel wat die kaart aan die GSMA ekosisteem autentiseer, te dump.

Eind-tot-Eind Exploit Werkvloei

  1. Tel firmware op – Gebruik ongedokumenteerde GET DATA item DF1F:
80 CA DF 1F 00   // → "ECu10.13" (kwulnerabel)
  1. Installeer kwaadwillige applet OTA – Misbruik publiek bekende sleutels van die TS.48 Generiese Toetsprofiel en druk SMS-PP fragmente wat die CAP-lêer (LOAD) vervoer, gevolg deur 'n INSTALL:
// vereenvoudigde APDU ketting
80 E6 02 00 <data>   // LOAD (blok n)
80 E6 0C 00 <data>   // INSTALL vir laai
  1. Trigger tipe-verwarring – Wanneer die applet gekies word, voer dit die skryf-wat-waar uit om 'n wysiger tabel te kapen en geheue deur normale APDU-antwoorde te lek.
  2. Onthul GSMA sertifikaatsleutel – Private EC-sleutel word na die applet se RAM gekopieer en in stukke teruggestuur.
  3. Imiteer die eUICC – Die gesteelde sleutel paar + sertifikate laat die aanvaller toe om te autentiseer by enige RSP bediener as 'n wettige kaart (EID binding mag steeds vereis word vir sommige operateurs).
  4. Laai en wysig profiele – Plak tekst profiele bevat hoogs sensitiewe velde soos OPc, AMF, OTA sleutels en selfs addisionele applets. Die aanvaller kan:
  • 'n profiel na 'n tweede eUICC kloon (stem/SMS kap);
  • Java Card toepassings patch (bv. voeg STK spyware in) voordat dit weer opgelaai word;
  • Operateur geheime onttrek vir grootskaalse misbruik.

Kloon / Kap Demonstrasie

Die installering van dieselfde profiel op PHONE A en PHONE B lei tot die Mobile Switching Centre wat inkomende verkeer na die toestel roete wat die mees onlangse registrasie gehad het. Een sessie van Gmail 2FA SMS onderskep is genoeg om MFA vir die slagoffer te omseil.

Geoutomatiseerde Toets & Exploit Toolkit

Die navorsers het 'n interne hulpmiddel vrygestel met 'n bsc (Basic Security Check) opdrag wat onmiddellik wys of 'n Java Card VM kwulnerabel is:

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]

Modules verskeep met die raamwerk:

  • introspector – volle VM en geheue verkenner (~1.7 MB Java)
  • security-test – generiese verifikasie omseil applet (~150 KB)
  • exploit – 100 % betroubare Kigen eUICC kompromie (~72 KB)

Mitigasies

  1. Op-kaart byte-kode verifikasie – afdwing volle kontrole-stroom & data-stroom tipe opsporing in plaas van net stapel-top.
  2. Versteek array kop – plaas length buite oorvleuelende objek velde.
  3. Versterk RAM sleutels beleid – stuur nooit profiele met publieke sleutels nie; deaktiveer INSTALL in toets profiele (aangespreek in GSMA TS.48 v7).
  4. RSP bediener kant heuristiek – beperk profiele aflaai per EID, monitor geografiese anomalieë, valideer sertifikaat varsheid.

Vinning Kontrolelys vir Pentesters

  • Vra GET DATA DF1F – kwesbare firmware string ECu10.13 dui Kigen aan.
  • Kontroleer of RAM sleutels bekend is ‑> probeer OTA INSTALL/LOAD.
  • Na applet installasie, brute-force eenvoudige cast primitief (objarrconfusion).
  • Probeer om Sekuriteit Domein private sleutels te lees – sukses = volle kompromie.

Verwysings

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks