GlitchedOnEarth Slides
GlitchedOnEarth Slides
Lennert Wouters
@LennertWo
Laser link
Space
Earth
User Terminal (UT) Gateway
Source: u/darkpenguin22
Source: SpaceX 2
3
Teardowns
danmurray.net
@DanJMurray
youtube.com/c/ColinOFlynn @colinoflynn olegkutkov.me @olegkutkov 4
Hardware revisions
8
PCB overview
GPS receiver 59 cm (23,23″) Clock generation
GPS
SoC clock
POE
A
• V2 hardware and up:
• 1 DBF → 16 FEMs
B
10
Siliconpr0n
siliconpr0n.org/archive/doku.php?id=mcmaster:spacex:gllbsuabbba-shiraz id=mcmaster:spacex:gea-aa12-109d-tg02-pulsarad
Thanks to John McMaster!
@johndmcmaster 11
• (A) System-on-Chip
• Custom quad-core ARM Cortex-A53
• ST Microelectronics
• GLLCCOCA6BF (cut 3?)
• GLLCCODA6BF (cut 4?)
• Codename: CATSON
D C
• (C) 4GB eMMC
• (D) 2 x 4Gbit DDR3
D 12
SoC
• through substrate image
• GLLCCOCA6BF (cut 3?)
• Thorlabs NIR camera
• Mitutoyo NIR objective 50x
13
Identifying eMMC test points
D0
CLK
CMD
14
Reading eMMC in-circuit
What I did What I recommend
SD card reader
Low Voltage eMMC Adapter
by
TXS0202EVM
Level shifter
1V8
15
Extracting the eMMC dump
• esat.kuleuven.be/cosic/blog/dumping-and-extracting-the-spacex-starlink-user-terminal-firmware
16
Temperature and RF channels
17
Development geofences
18
Obtaining root
19
Fault injection
✓ Flip-chip packaging exposes die backside
• Laser Fault Injection, Body Bias Injection, Electromagnetic Fault Injection
x PCB is too big for our automatic XYZ positioning equipment
• Likely cumbersome to do on a roof...
x No development kits
21
Example output
22
Results
23
STM/SpaceX ARM TFA-A
25
Normal boot
“INFO: Image id=6 loaded at address 0x30209000, size = 0x90”
→ Certificate has been loaded
UART
EM side-channel
x 10e6 samples
Signature verification
26
Glitched boot
“INFO: cert_nv_ctr : 1”
→ Signature verified and the rollback counter is 1
UART
EM side-channel
x 10e6 samples
28
BL1 glitch detection example
BL1 UART output
INFO: BL1: Get the image descriptor
INFO: BL1: Loading BL2 Certificate has been loaded
INFO: Loading image id=6 at address 0x30209000 Contains invalid signature but
INFO: Skip reserving region [base = 0x30209000, size = 0x90]
valid digest of BL2 firmware
INFO: Image id=6 loaded at address 0x30209000, size = 0x90
29
BL1 glitch detection example
1 2
• Decoupling capacitors
are needed for later boot
stages
• Experimented with:
• N-channel MOSFETS
• P-channel MOSFETS
• High/Low side switching
• Gate voltage
• MOSFET drivers
• Capacitor sizes
• Timing
31
Researcher access
• Demonstrated a full attack in the lab!
• But the setup is still too bulky to be used in a practical setting (e.g., on the roof)
• SpaceX offered an easy way out: SSH access through a Yubikey
• But I was already too far down the rabbit hole …
32
Creating a mobile setup
• Replacing lab
equipment with
low-cost off-the-
shelf components
• RPI Pico replaces
oscilloscope and
ChipWhisperer
• Works
• But still messy…
33
PCB design
• Scanner @ 600 DPI
• Draw board outline at real size in Inkscape
• Load in KiCad and use in the edgecuts layer
34
Modchip
Decoupling MOSFETs
6 cm
RP2040 @250MHz 2,36″
2 channel MOSFET driver
PIO for triggering
and glitch generation
0,8 mm
Available on GitHub!
35
Installed modchip
36
37
SpaceX strikes back
38
Adapt
BEFORE
AFTER 39
Overcome
40
Network exploration
• All interesting communication uses mutually authenticated TLS (STSAFE)
• Added STSAFE support to the tlslite-ng TLS implementation
• Python script to download the latest firmware updates
• Mostly IPv6 2620:134:b000::1:0:0
• Open ports (nmap): 8001-8012, 9000, 9003, 9005, 9010, 9011
Firmware update archive
41
What’s next?
• You can make your own modchip and use it to:
• Further explore the network infrastructure
• Not accessible as a normal user
• Integrate the STSAFE with GRPC
• Interact with the Digital BeamFormers and update their firmware
• Repurpose your terminal?
42
Conclusion
• We can bypass secure boot using voltage fault injection in BL1
• Quad core Cortex-A53 in a black box scenario
• no documentation, no open development kits
• Enabling and disabling of decoupling capacitors
• Fault injection countermeasures are only as good as the fault model that was used
@LennertWo
Demo!
45
Thanks!
• Arthur Beckers
• Gert Van Beneden
• Tim Ferrell
• John McMaster
• Dan Murray
• Colin O’Flynn
46