CVE-2026-53451
CriticalCVSS 9.8Exploitation Probability (EPSS)
Elevated risk57th percentile - higher than 57% of all known CVEs
Summary
Ground Station before version 0.4.13 contains a vulnerability in the unauthenticated save-waterfall-snapshot Socket.IO command. An attacker can control the snapshotName input, allowing file writes outside the data directory via path traversal. It is possible to write a YAML logging configuration file that, during service restart, executes arbitrary code (RCE) with service privileges.
Risk Assessment
An attacker can execute arbitrary code on the server with service privileges, potentially leading to full system compromise, persistent crash loop, or data theft.
Recommendation
Update Ground Station to version 0.4.13 or later. Restrict access to the service and monitor logs for unusual operations.
Other vulnerabilities in Ground Station
See all- CVE-2026-103244Critical
ground-station versions before 0.8.0 contain an authentication bypass vulnerability in the setup.restore command that allows unauthenticated attackers to execute arbitrary SQL during first-run setup mode. Attackers can invoke setup.restore via Socket.IO to plant admin users and forged session tokens, then authenticate as administrator without credentials for complete application takeover.
- CVE-2026-53984Critical
A vulnerability in Ground Station (before 0.6.0) allows unauthenticated attackers to destroy or replace the entire SQLite database by sending a full_restore command to the Socket.IO server on port 7000. Lack of authentication and wildcard CORS policy enable remote exploitation.
- CVE-2026-53452Medium
Ground Station prior to version 0.4.13 contains a vulnerability where the unauthenticated configure-sdr Socket.IO command accepts a recordingPath for the sigmf-playback SDR and stores it without validation before opening the path without enforcing containment. An absolute path or parent-directory escape ending in .sigmf-meta is parsed as JSON and returned in reply["data"]["metadata"] by the get-sdr-parameters flow. Exploitation requires the metadata file to be readable JSON and to have a sibling .sigmf-data file, but it can disclose contents outside backend/data/recordings without authentication.
- CVE-2026-53983High
Ground Station prior to 0.6.0 contains an unauthenticated blind server-side request forgery vulnerability in the orbital-source configuration path. An unauthenticated Socket.IO client can connect on port 7000, persist an attacker-supplied URL in the database, and trigger an orbital sync, causing outbound HTTP requests to attacker-chosen destinations, including cloud metadata (169.254.169.254). HTTP status codes and error messages are emitted to clients, providing an oracle for interpreting internal-service responses.
- CVE-2026-53985High
Ground Station prior to 0.6.0 contains an unauthenticated denial-of-service vulnerability in the Socket.IO server's service_control event handler that allows any unauthenticated network peer to forcibly terminate the ground-station process by sending a single restart_service command. Attackers can connect to the Socket.IO server on port 7000 without credentials due to disabled authentication enforcement and a wildcard CORS policy, then emit the service_control event to terminate all active satellite-tracking sessions, SDR recording pipelines, demodulators, decoders, and rotator controllers, with repeated triggering possible in Docker deployments to create a persistent denial-of-service condition.
Original NVD description (English source)
Ground Station is a browser-based suite for satellite tracking, SDR reception, hardware control, and telemetry decoding. Prior to version 0.4.13, the unauthenticated save-waterfall-snapshot Socket.IO command passes attacker-controlled snapshotName input from backend/handlers/entities/sdr.py to backend/server/snapshots.py, where os.path.join permits an absolute path or parent-directory traversal and writes attacker-controlled base64-decoded bytes outside backend/data/snapshots. An attacker can write a logging YAML file containing a logging.config.dictConfig callable factory, use the unauthenticated update-app-config operation to set log_config to that file, and invoke restart_service. During restart, backend/common/logger.py passes the YAML through resolve_log_config_path(), yaml.safe_load(), and logging.config.dictConfig(), which executes the factory with service privileges and can also cause a persistent crash loop. This issue is fixed in version 0.4.13.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

