
Simulation de PoC d'une vulnérabilité critique de rejeu de télécommandes CCSDS dans les systèmes de commande des satellites, démontrant l'absence de validation des numéros de séquence et l'exécution de commandes en double.
# satellite_sim.py - Spacecraft that executes telecommands without checking sequence number
class Satellite:
def __init__(self):
self.executed = set()
def receive_tc(self, cmd_id, seq_num):
# Vulnerability: ignores seq_num, allowing replay of same command
self.execute(cmd_id)
def execute(cmd_id):
print(f"Executing command {cmd_id}")
sat = Satellite()
# Legitimate command
sat.receive_tc("ORBIT_CORRECTION", 1001)
# Attacker replays the same command
sat.receive_tc("ORBIT_CORRECTION", 1001)
Un système de commande satellite accepte des paquets de télécommande CCSDS mais ne valide pas le numéro de séquence pour empêcher le rejeu. Un attaquant qui intercepte une commande peut la rejouer, provoquant des allumages de propulseurs en double ou d'autres opérations nuisibles.
Exécutez la simulation :
python satellite_sim.py
La même commande est exécutée deux fois.