Johannes Willbold
$whoami
44th IEEE Symposium on Security and Privacy (S&P)
Distinguished Paper Award
Firmware Attacks
Bigger Picture
Survey
System Analysis
Space Segment
?
Affordable Ground Stations
Ground Station as a Service
GSaaS
More Satellites
GEO → LEO
No Insights <=> No Attacker
No Insights <=> No Attacker
Commercial off-the-Shelf (COTS) Components
Higher Stakes
Critical Infrastructure
More Developers
More People Involved
Payload
Bus
?
COM
Payload
CDHS
EPS
ADCS
PDHS
PLCOM
COM
CDHS
Bus
PDHS
PLCOM
COM
CDHS
Bus
COM
CDHS
Bus
COM
CDHS
Bus
COM
CDHS
Bus
1
2
3
4
Bypass COM Protection
Dangerous / Vulnerable TC
Hijack Bus Control Flow
Full Bus Privileges
System Design
Protocols
ESTCube-1
Peripherals
E-Sail (E. Solar Wind Sail) Propulsion
Bus Platform
ARM STM32
Developed by University of Tartu
Sender Subsystem ID
Recipient Subsystem ID
Flow Control Flags
Inner Payload
Fletcher-16 Checksum
TX seq.
RX seq.
COM
ID | Subsystem |
---|---|
0 | EPS |
1 | COM |
2 | CDHS |
... | |
5 | Ground Station |
bit 0 | bit 1 | bit 2 | bit 3 | bit 4 | bit 5 | bit 6 | bit 7 | |
---|---|---|---|---|---|---|---|---|
Byte 0 | ||||||||
Byte 1 | ||||||||
Byte 2 | ||||||||
Byte 3 | ||||||||
... |
Command Identifier (MSB)
Command Identifier (LSB)
Source
Block ID
Length
Args
COM
CDHS
int sch_handle_command(scheduler_packed_cmd_t ∗pCmd) {
// ! simplified !
sch_unpack_command(&g_command, pCmd);
// ...
handler_func = &handler_table[g_command.handler_func_index] ;
// ...
retval = (∗handler_func) (&g_command) ;
}
bit 0 | bit 1 | bit 2 | bit 3 | bit 4 | bit 5 | bit 6 | bit 7 | |
---|---|---|---|---|---|---|---|---|
Byte 0 | ||||||||
Byte 1 | ||||||||
Byte 2 | ||||||||
Byte 3 | ||||||||
... |
Command Identifier (MSB)
Command Identifier (LSB)
Source
Block ID
Length
Args
COM
CDHS
int sch_handler_set_raw_memory(scheduler_cmd_t* pCmd) {
raw_mem_access_cmd_t* pAddr = pCmd−>pCmdArgs;
char* pWriteData;
if (pAddr) {
if (g_sch_exec_mode != 1 ) {
/* exception and return */
}
char* pWriteData = &pAddr−>start_of_data_buf;
if (pAddr−>filesystem_target) {
// [...]
} else {
memcpy(pAddr−>targetAddr,
&pAddr−>start_of_data_buf,
pAddr−>writeLength);
}
}
// ...
}
COM
CDHS
Image Source: Maximilian Gerhardt, Reverse Engineering Satellite Firmware for Security Evaluation, 13. Dec. 2021
COM
CDHS
Bus
Experimenter
Operated by ESA
Open for Research
Peripherals
S-/X-Band, SDR, Optical Rx., Camera, ...
2
4
3
CCSDS Protocol Stack
4
ARM Cortex A9, Yocto Linux
2
AVR32 AT32UTC3, FreeRTOS
1
3
1
Cubesat Space Protocol (CSP)
2
2
AVR32 AT32UTC3, FreeRTOS
1
1
Cubesat Space Protocol (CSP)
/ libcsp
Source: https://en.wikipedia.org/wiki/Cubesat_Space_Protocol
TCP/IP Oriented Design
1
Security Issues
memcmp
to compare the digestconst uint32_t nonce = (uint32_t)rand();
Authors: Issues fixed in libcsp v2
Security Features
1
Security Issues
memcmp
to compare the digestconst uint32_t nonce = (uint32_t)rand();
Authors: Issues fixed in libcsp v2
Security Features
1
3
CCSDS Protocol Stack
3
2
AVR32 AT32UTC3, FreeRTOS
2
Space Packet Protocol
IP
Sync. and Channel Coding Sublayer
Message Abstraction
...
IPSec
TM Space Link Protocol
TC Space Link Protocol
AOS Space Data Link P.
Proximity-1
Data Link Lay.
3
Space Packet Protocol
IP
Sync. and Channel Coding Sublayer
Message Abstraction
...
IPSec
TM Space Link Protocol
TC Space Link Protocol
AOS Space Data Link P.
Proximity-1
Data Link Lay.
3
int csp_route_security_chek(...) {
if (packet->id.flags & CSP_FXTEA) {
csp_log_error("Received XTEA encrypted packet, but CSP was compiled without XTEA support. Discarding packet");
}
// ...
if (packet->id.flags & CSP_FHMAC) {
csp_log_error("Received packet with HMAC, but CSP was compiled without HMAC support. Discarding packet");
}
// ...
}
COM
COM
CDHS
int sch_handler_set_raw_memory(scheduler_cmd_t* pCmd) {
raw_mem_access_cmd_t* pAddr = pCmd−>pCmdArgs;
char* pWriteData;
if (pAddr) {
if (g_sch_exec_mode != 1 ) {
/* exception and return */
}
char* pWriteData = &pAddr−>start_of_data_buf;
if (pAddr−>filesystem_target) {
// [...]
} else {
memcpy(pAddr−>targetAddr,
&pAddr−>start_of_data_buf,
pAddr−>writeLength);
}
}
// ...
}
Message Abstraction Layer (MAL)
S-Band
Space Packet Protocol (SPP)
PUBSUB_MonitorEvent
SUBMIT_SetPowerState
INVOKE_GetGPSData
...
PROGRESS_GetSummary
Custom Byte Parsing
ADCS Server
...
UHF
Cubesat Space Protocol (CSP)
Parameter DB
CSP => SPP
Space Packet Protocol
Message Abstraction
void task_adcs_servr() {
char log_file_name [32];
csp_listen(socket, 10);
csp_bind(socket, port);
do {
do {
conn = csp_accept(socket, 0xff);
} while (do_wait_for_conn);
packet = csp_read(conn, 10);
if (packet) {
packet_data = packet->data;
switch(*packet_data) {
// [...]
case SET_LOGFILE: {
packet_data = packet->data + 0xf;
log_file_name[0] = '\0';
strcat(log_file_name,packet_data);
// ...
}
}
}
}
}
ADCS Server
Cubesat Space Protocol (CSP)
COM
CDHS
Bus
QEMU
AVR32
OBSW
Simulation Agent
Sensors
UHF
TC Handlers
Telecommand
Telemtry
TCP
TCP
Flight Manuvers
Sensor Values
Peripherals
De-orbit mechanism, AIS, Camera, etc...
Bus Platform
SPARC LEON 3 - OBC from Airbus S&D
Technology Tester
Co-Developed by
Airbus Space & Defense
Space Packet Protocol
IP
Sync. and Channel Coding Sublayer
Custom
...
IPSec
TM Space Link Protocol
TC Space Link Protocol
AOS Space Data Link P.
Proximity-1
Data Link Lay.
Space Link Protocol Header
Frame Data
Space Link Protocol Trailer
Space Link Protocol Header
Security Header
Frame Data
Security Trailer
Space Link Protocol Trailer
But it's different for [...] satellites.
But it's different for [...] satellites,
.... right?
Custom
Standard
Weight
~ 1.3 kg
~ 5.4 kg
~ 120 kg
Weight ≈ Money
Custom / Standard
Weight ≈ Money
1-50 kg | 50-100 kg | > 100 kg | |
---|---|---|---|
Standard | 1 | 1 | 4 |
Custom | 6 | 1 | 0 |
Abstains | 3 | 0 | 1 |
∑ | 10 | 2 | 5 |
=> Inaccessible Standard
Question: Are any measures deployed to prevent 3rd parties from controlling your satellite?
Unknown*:
Prefer not to say / Don't know
2
4
6
8
9
3
5
Yes
No
Unknown*
Question: What measures are deployed to prevent 3rd parties from controlling your satellite? (Multiple Answers)
2
4
4
5
Access Control
Encryption
3
*: Special knowledge about ....
Special permit needed
* ... Frequences, Modulation, etc.
* ... Protocols
3
2
Emulation
Hardware Tests
In Orbit
Static Analysis
Nobody said Yes
Limited Academic Value
More convincing than Emulation
Huge Public Impact
Enormous Educational Value
Firmware Attacks on Satellites are a Thing
ViaSat Incident != Satellite Firmware Attack
Common Sat Protocols lack Security
Security by Obscurity
Missing State-of-the-Art Defenses
Missing TC Protection
Long Road to IODs
Reasons for and against IODs
/jwillbold
Johannes Willbold - johannes.willbold@rub.de
[1] ESTCube-1 Image: https://www.eoportal.org/satellite-missions/estcube-1
[2] OPS-Sat Image: https://www.esa.int/ESA_Multimedia/Videos/2019/12/OPS-SAT_ESA_s_flying_lab_open_to_all
[3] Flying Laptop Image: https://www.irs.uni-stuttgart.de/en/research/satellitetechnology-and-instruments/smallsatelliteprogram/flying-laptop/