Skip to content

Commit 7662eed

Browse files
author
HackTricks News Bot
committed
Add content from: Research Update: Enhanced src/generic-hacking/esim-javacard-...
1 parent 38cfd89 commit 7662eed

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

src/generic-hacking/esim-javacard-exploitation.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ This page describes a real-world full compromise of Kigen’s eUICC (Infineon SL
1414
2. **Java Card byte-code execution**
1515
After installation, the applet executes inside the VM. Missing run-time checks allow memory corruption.
1616

17+
### 2024–2025 ecosystem changes
18+
* **GSMA TS.48 v7.0 (18 Jun 2025)** removed public RAM keysets from the Generic Test Profile and blocks `INSTALL` unless randomized keys are provided; cached v≤6 profiles still expose static RAM keys and remain exploitable.
19+
* **GSMA AN‑2025‑07 (09 Jul 2025)** recommends on-card bytecode verification; most eUICCs still skip full verification so VM memory bugs stay reachable after applet install.
20+
* **Kigen OTA hardening (Jul 2025)** blocks applet loading when legacy TS.48 test profiles are active and adds runtime checks, but unpatched devices stay vulnerable.
21+
1722
## The Type-Confusion Primitive
1823
`getfield` / `putfield` are supposed to operate only on **object references**. In Kigen eUICC the instructions never validate whether the operand on the stack is an *object* or an *array* reference. Because an `array.length` word lives at the exact same offset as the first instance field of a normal object, an attacker can:
1924

@@ -72,18 +77,22 @@ Modules shipped with the framework:
7277
## Mitigations
7378
1. **On-card byte-code verification** – enforce full control-flow & data-flow type tracking instead of stack-top only.
7479
2. **Hide array header** – place `length` outside of overlapping object fields.
75-
3. **Harden RAM keys policy** – never ship profiles with public keys; disable `INSTALL` in test profiles (addressed in GSMA TS.48 v7).
80+
3. **Harden RAM keys policy** – never ship profiles with public keys; disable `INSTALL` in test profiles (TS.48 v7 removes RAM keysets).
7681
4. **RSP server side heuristics** – rate-limit profile downloads per EID, monitor geographic anomalies, validate certificate freshness.
82+
5. **Keep devices off legacy test profiles** – apply the July 2025 OTA that blocks applet loading with TS.48 v≤6 or remove the test profile from factory images.
7783

7884
## Quick Checklist for Pentesters
7985
* Query `GET DATA DF1F` – vulnerable firmware string `ECu10.13` indicates Kigen.
86+
* Inspect loaded profiles: TS.48 test profiles with static RAM keys (v≤6) are directly exploitable; v7 without RAM keys need a new key leak.
8087
* Check if RAM keys are known ‑> attempt OTA `INSTALL`/`LOAD`.
8188
* After applet installation, brute-force simple cast primitive (`objarrconfusion`).
8289
* Try to read Security Domain private keys – success = full compromise.
8390

8491
## References
8592
- [Security Explorations – eSIM security](https://security-explorations.com/esim-security.html)
8693
- [GSMA TS.48 Generic Test Profile v7.0](https://www.gsma.com/get-involved/working-groups/gsma_resources/ts-48-v7-0-generic-euicc-test-profile-for-device-testing/)
94+
- [GSMA AN-2025-07 Preventing misuse of an eUICC Profile](https://www.gsma.com/solutions-and-impact/technologies/esim/gsma_resources/an-2025-07-preventing-misuse-of-an-euicc-profile-and-installation-of-malicious-java-card-application-v1-0/)
95+
- [The Hacker News – eSIM vulnerability in Kigen eUICC (July 2025)](https://thehackernews.com/2025/07/esim-vulnerability-in-kigens-euicc.html)
8796
- [Java Card VM Specification 3.1](https://docs.oracle.com/en/java/javacard/3.1/jc-vm-spec/F12650_05.pdf)
8897

8998
{{#include ../banners/hacktricks-training.md}}

0 commit comments

Comments
 (0)