Junglewise Threat Intelligence

CVE-2026-55565: Yamcs remote code execution via unescaped StreamSQL LIKE pattern

CVE-2026-55565 · Severity: critical · CVSS 9.9 · Published 2026-08-28

Executive brief

Yamcs is a telemetry and command processing system used in aerospace and satellite operations. A flaw in the StreamSQL query compiler allows authenticated users with routine read-only access (such as permission to view events or table data) to inject arbitrary Java code that executes with the privileges of the Yamcs process. An attacker can achieve complete system compromise, including tampering with telemetry, suppressing commands, accessing credentials, and establishing persistence.

Technical details

The vulnerability is a code injection flaw in the StreamSQL compiler. The `LikeExpression#fillCode_getValueReturn` method appends user-controlled LIKE patterns directly into generated Java string literals without escaping, whereas the sibling `ValueExpression` class correctly escapes via `escapeJavaString()`. When a pattern contains a double-quote character, it breaks out of the string literal and injects arbitrary Java code—for example, a `static{}` block that invokes `ProcessBuilder` to execute OS commands. This code is compiled with Janino and instantiated at stream preparation time, before any data flows. The vulnerability is reachable via four different API endpoints: `executeSql` and `streamSql` (requiring `ControlArchiving` privilege), `readRows` (requiring `ReadTables`), events queries and exports (requiring `ReadEvents`), and activities listings (requiring `ReadActivities`). All three lower-privilege paths are verified exploitable. No SecurityManager or Janino sandbox constraints are configured, so compiled code can freely call `Runtime` and `ProcessBuilder`. Patches are available in versions 5.12.8 and 5.13.2.

Affected products

  • Yamcs yamcs-core 5.13.0 through 5.13.1, 5.12.7 and earlier

Timeline

  • 2026-08-28: disclosed: GitHub Security Advisory published
  • 2026: patched: Versions 5.12.8 and 5.13.2 released with fix

References