Johannes Willbold
@jwillbold
/jwillbold
$whoami
44th IEEE Symposium on Security and Privacy (S&P)
Distinguished Paper Award
34 cm
10 cm
3U CubeSat
Firmware Attacks
Survey
System Analysis
Attacker Perspective
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
COM
Payload
CDHS
Telecommand (TC)
Telemetry (TM)
EPS
ADCS
COM
PDHS
CDHS
EPS
ADCS
PLCOM
Payload Traffic
TC / TM Traffic
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 Tartau
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
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
3
CCSDS Protocol Stack
2
AVR32 AT32UTC3, FreeRTOS
1
3
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);
}
}
// ...
}
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
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.
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
Inaccessible Standard
"Guideline" Standards
Few Open-Source Implementations
No Best Practices
Unknown Requirements
Grown over Decades
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
Security by Obscurity
Emergency Recovery
Technical Challenges
Question: Which, if any, methods, tools or techniques were used to ensure/improve code quality? (Multiple Answers Possible)
5
1
14
Penetration Testing
Bounded Model Checking
2
Hardware/Software in the Loop
Unit Testing
10
14
But it's different for *my* satellite
1. Hack a Satellite
2. ???
Orbital Access
1
Attacking Inter-Sat Links
2
Orbital Traffic Interception
3
Orbital Denial-of-Service
Kessler Syndrome
4
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
Attacker Access to Orbit as Staging Ground
Unknown Consequences
Missing TC Protection
@jwillbold
/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/