eSIM / Java Card VM Exploitation
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๊ฐ์
Embedded SIMs (eSIMs)๋ ๋ณด์ ์์ ์์์ Java Card Virtual Machine (JC VM)์ ์คํํ๋ Embedded UICC (eUICC) ์ค๋งํธ์นด๋๋ก ๊ตฌํ๋ฉ๋๋ค. ํ๋กํ๊ณผ ์ ํ๋ฆฟ์ด Remote SIM Provisioning (RSP)์ ํตํด over-the-air (OTA)๋ก ํ๋ก๋น์ ๋๋ ์ ์๊ธฐ ๋๋ฌธ์, JC VM ๋ด๋ถ์ ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๊ฒฐํจ๋ ์ฆ์ ํธ๋์ ์์ ๊ฐ์ฅ ๊ถํ์ด ๋์ ์ปดํฌ๋ํธ ๋ด๋ถ์์์ remote code-execution primitive๊ฐ ๋ฉ๋๋ค.
์ด ํ์ด์ง๋ getfield ๋ฐ putfield ๋ฐ์ดํธ์ฝ๋์ ํ์ ์์ ์ฑ ๊ฒ์ฌ๊ฐ ๋๋ฝ๋์ด Kigen์ eUICC (Infineon SLC37 ESA1M2, ARM SC300)๊ฐ ์ค์ ๋ก ์์ ํ ํ์ทจ๋ ์ฌ๋ก๋ฅผ ์ค๋ช ํฉ๋๋ค. ๋์ผํ ๊ธฐ๋ฒ์ on-card byte-code verification์ ์๋ตํ๋ ๋ค๋ฅธ ๋ฒค๋์๋ ์ฌ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๊ณต๊ฒฉ ํ๋ฉด
- Remote Application Management (RAM)
eSIM ํ๋กํ์ ์์์ Java Card applets๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ํ๋ก๋น์ ๋์ ํ์ค APDUs๋ก ์ํ๋๋ฉฐ, ์ด๋ SMS-PP (Short Message Service Point-to-Point) ๋๋ HTTPS๋ฅผ ํตํด ํฐ๋๋ง๋ ์ ์์ต๋๋ค. ๊ณต๊ฒฉ์๊ฐ ํ๋กํ์ RAM keys๋ฅผ ๋ณด์ (๋๋ ํ์ทจ)ํ๋ฉด ์๊ฒฉ์ผ๋ก ์ ์ฑ ์ ํ๋ฆฟ์INSTALL/LOADํ ์ ์์ต๋๋ค. - Java Card byte-code execution
์ค์น ํ ์ ํ๋ฆฟ์ VM ๋ด๋ถ์์ ์คํ๋ฉ๋๋ค. ๋ฐํ์ ๊ฒ์ฌ ๋๋ฝ์ ๋ฉ๋ชจ๋ฆฌ ์์(memory corruption)์ ํ์ฉํฉ๋๋ค.
2024โ2025 ecosystem changes
- GSMA TS.48 v7.0 (18 Jun 2025) removed public RAM keysets from the Generic Test Profile and blocks
INSTALLunless randomized keys are provided; cached vโค6 profiles still expose static RAM keys and remain exploitable. - 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.
- 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.
The Type-Confusion Primitive
getfield / putfield are supposed to operate only on object references. Kigen eUICC์์๋ ํด๋น ๋ช
๋ น๋ค์ด ์คํ ์์ ์คํผ๋๋๊ฐ object์ธ์ง array์ธ์ง ๊ฒ์ฆํ์ง ์์ต๋๋ค. array.length ์๋๋ ์ผ๋ฐ ๊ฐ์ฒด์ ์ฒซ ๋ฒ์งธ ์ธ์คํด์ค ํ๋์ ์ ํํ ๊ฐ์ ์คํ์
์ ์๊ธฐ ๋๋ฌธ์, ๊ณต๊ฒฉ์๋ ๋ค์์ ํ ์ ์์ต๋๋ค:
- ๋ฐ์ดํธ ๋ฐฐ์ด ์์ฑ:
byte[] buf = new byte[0x100]; - ์บ์คํธ:
Object o = (Object)buf; putfield๋ฅผ ์ฌ์ฉํด ์ธ์ ๊ฐ์ฒด ๋ด๋ถ์ ์ด๋ค 16๋นํธ ๊ฐ์ด๋ ๋ฎ์ด์๋๋ค(์ฌ๊ธฐ์๋ VTABLE / ptr translation entries ํฌํจ).- ๋ด๋ถ ํฌ์ธํฐ๊ฐ ํ์ทจ๋๋ฉด
getfield๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ์ต๋๋ค.
// 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 ...
The primitive provides arbitrary read / write in the eUICC address space โ enough to dump the device-unique ECC private key that authenticates the card to the GSMA ecosystem.
์๋ ํฌ ์๋ ์ต์คํ๋ก์ ์ํฌํ๋ก์ฐ
- ํ์จ์ด ์ด๊ฑฐ โ ๋ฌธ์ํ๋์ง ์์
GET DATAํญ๋ชฉDF1F์ฌ์ฉ:
80 CA DF 1F 00 // โ "ECu10.13" (vulnerable)
- ์
์ฑ applet OTA ์ค์น โ TS.48 Generic Test Profile์ ๊ณต๊ฐ๋ ํค๋ฅผ ์
์ฉํ๊ณ CAP ํ์ผ์ ์ ์กํ๋ SMS-PP ์กฐ๊ฐ์ ํธ์ํ ํ
INSTALL์ํ:
// simplified APDU chain
80 E6 02 00 <data> // LOAD (block n)
80 E6 0C 00 <data> // INSTALL for load
- type-confusion ์ ๋ฐ โ applet์ด ์ ํ๋๋ฉด write-what-where๋ฅผ ์ํํ์ฌ ํฌ์ธํฐ ํ ์ด๋ธ์ ํ์ด์ฌํนํ๊ณ ์ ์ APDU ์๋ต์ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ leakํฉ๋๋ค.
- GSMA certificate key ์ถ์ถ โ Private EC key๋ applet์ RAM์ผ๋ก ๋ณต์ฌ๋์ด ์ฒญํฌ ๋จ์๋ก ๋ฐํ๋ฉ๋๋ค.
- eUICC ๊ฐ์ฅ โ ํ์ทจํ ํค ํ์ด์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณต๊ฒฉ์๋ ์ ๋นํ ์นด๋๋ก์ any RSP ์๋ฒ์ ์ธ์ฆํ ์ ์์ต๋๋ค(์ผ๋ถ ํต์ ์ฌ์์๋ ์ฌ์ ํ EID ๋ฐ์ธ๋ฉ์ด ํ์ํ ์ ์์).
- ํ๋กํ์ผ ๋ค์ด๋ก๋ ๋ฐ ์์ โ ํ๋ฌธ ํ๋กํ์ผ์๋
OPc,AMF, OTA keys ๋ฐ ์ถ๊ฐ applet ๋ฑ ๋งค์ฐ ๋ฏผ๊ฐํ ํ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ณต๊ฒฉ์๋ ๋ค์์ ์ํํ ์ ์์ต๋๋ค:
- ํ๋กํ์ผ์ ๋ ๋ฒ์งธ eUICC๋ก ๋ณต์ (voice/SMS hijack);
- ์ฌ์ ๋ก๋ํ๊ธฐ ์ ์ Java Card ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์น(์: STK spyware ์ฝ์ );
- ๋๊ท๋ชจ ์ ์ฉ์ ์ํด ์ด์์ ๋น๋ฐ์ ์ถ์ถ.
Cloning / Hijacking Demonstration
PHONE A์ PHONE B์ ๋์ผํ ํ๋กํ์ผ์ ์ค์นํ๋ฉด Mobile Switching Centre๊ฐ ๊ฐ์ฅ ์ต๊ทผ์ ๋ฑ๋ก๋ ๊ธฐ๊ธฐ๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋ผ์ฐํ ํฉ๋๋ค. Gmail 2FA SMS๋ฅผ ํ ์ธ์ ๋ง ๊ฐ๋ก์ฑ๋ ํผํด์์ MFA๋ฅผ ์ฐํํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค.
์๋ํ๋ ํ ์คํธ ๋ฐ ์ต์คํ๋ก์ ํดํท
์ฐ๊ตฌ์๋ค์ bsc (Basic Security Check) ๋ช
๋ น์ ํฌํจํ ๋ด๋ถ ๋๊ตฌ๋ฅผ ๊ณต๊ฐํ์ผ๋ฉฐ, ์ด ๋ช
๋ น์ Java Card VM์ด ์ทจ์ฝํ์ง ์ฌ๋ถ๋ฅผ ์ฆ์ ๋ณด์ฌ์ค๋๋ค:
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 shipped with the framework:
introspectorโ full VM and memory explorer (~1.7 MB Java)security-testโ generic verification bypass applet (~150 KB)exploitโ 100 % reliable Kigen eUICC compromise (~72 KB)
์ํ ์กฐ์น
- ์นด๋ ๋ด byte-code verification โ stack-top๋ง์ด ์๋๋ผ ์ ์ฒด control-flow & data-flow type tracking์ ์ ์ฉํ๋๋ก ๊ฐ์ .
- ๋ฐฐ์ด ํค๋ ์จ๊ธฐ๊ธฐ โ ๊ฒน์น๋ ๊ฐ์ฒด ํ๋ ๋ฐ์
length๋ฅผ ๋ฐฐ์น. - RAM ํค ์ ์ฑ
๊ฐํ โ ๊ณต๊ฐ ํค๊ฐ ํฌํจ๋ ํ๋กํ์ผ์ ์ ๋ ์ถ๊ณ ํ์ง ์์; ํ
์คํธ ํ๋กํ์ผ์์
INSTALL๋นํ์ฑํ( TS.48 v7์ RAM keysets ์ ๊ฑฐ ). - RSP ์๋ฒ ์ธก heuristics โ EID๋ณ ํ๋กํ์ผ ๋ค์ด๋ก๋ ์๋ ์ ํ, ์ง๋ฆฌ์ ์ด์ ์งํ ๋ชจ๋ํฐ๋ง, ์ธ์ฆ์ ์ต์ ์ฑ ๊ฒ์ฆ.
- ์ฅ์น๋ฅผ ๋ ๊ฑฐ์ ํ ์คํธ ํ๋กํ์ผ์์ ๋ถ๋ฆฌ ์ ์ง โ TS.48 vโค6์ผ๋ก applet ๋ก๋ฉ์ ์ฐจ๋จํ๋ 2025๋ 7์ OTA๋ฅผ ์ ์ฉํ๊ฑฐ๋ ๊ณต์ฅ ์ด๋ฏธ์ง์์ ํ ์คํธ ํ๋กํ์ผ ์ ๊ฑฐ.
Pentesters๋ฅผ ์ํ ๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์คํธ
- Query
GET DATA DF1Fโ ์ทจ์ฝํ ํ์จ์ด ๋ฌธ์์ดECu10.13์ Kigen์ ๋ํ๋. - ๋ก๋๋ ํ๋กํ์ผ ๊ฒ์ฌ: static RAM keys๊ฐ ์๋ TS.48 ํ ์คํธ ํ๋กํ์ผ(vโค6)์ ์ง์ ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅ; RAM keys๊ฐ ์๋ v7์ ์๋ก์ด key leak์ด ํ์.
- RAM keys๊ฐ ์๋ ค์ ธ ์๋์ง ํ์ธ โ> OTA
INSTALL/LOAD์๋. - applet ์ค์น ํ, brute-force simple cast primitive (
objarrconfusion). - Security Domain ๊ฐ์ธ ํค๋ฅผ ์ฝ์ด ์๋ โ ์ฑ๊ณต = full compromise.
References
- Security Explorations โ eSIM security
- GSMA TS.48 Generic Test Profile v7.0
- GSMA AN-2025-07 Preventing misuse of an eUICC Profile
- The Hacker News โ eSIM vulnerability in Kigen eUICC (July 2025)
- Java Card VM Specification 3.1
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


