CVE-2026-55511 - Yamcs vulnerable to authenticated RCE via StreamSQL aggregate-compiler column-na
CVE-2026-55511是Yamcs任务控制框架中的一个严重远程代码执行漏洞,CVSS评分9.1。由于StreamSQL聚合编译器对列名未做转义处理,持有ControlArchiving权限的认证用户可通过POST /api/archive/{instance}:executeSql注入任意Java代码,从而完全控制Yamcs服务器。该漏洞影响5.12.8之前的5.12.x版本和5.13.2之前的5.13.x版本,建议用户立即升级至修复版本。
CVE-2026-55511 - Yamcs vulnerable to authenticated RCE via StreamSQL aggregate-compiler column-na
📋 漏洞概述
Yamcs存在StreamSQL聚合编译器中列名未转义导致的Java代码注入漏洞,经认证用户可远程执行任意代码。
📋 基础信息
| 受影响版本 | Yamcs < 5.12.8 和 < 5.13.2(5.12.x、5.13.x 受影响) |
| 漏洞类型 | Java语句注入(代码注入) |
| CVSS | 9.1 · Critical |
| CVE | CVE-2026-55511 |
🔬 漏洞根因
Yamcs 使用 Janino SimpleCompiler 将 StreamSQL 表达式动态编译为 Java,未设置限制性类加载策略或表达式沙箱。当 sum 等聚合函数应用于列时,列名未进行转义或校验便直接拼接进生成的 Java 源码中。而 Yamcs 允许在双引号列标识符中使用任意字符,且创建列时不验证,导致拥有 ControlArchiving 权限的用户可构造恶意列名注入任意 Java 代码。
🎯 攻击场景
1. 前提:攻击者拥有 SystemPrivilege.ControlArchiving 权限,并能访问 Yamcs 的 REST API。 2. 攻击者通过 SQL 或 Yarch 创建一个列,列名包含恶意 Java 代码,例如使用双引号括起的包含分号和调用 Runtime.exec 的字符串。 3. 攻击者向 /api/archive/{instance}:executeSql 发送包含 sum(该恶意列) 的 StreamSQL 查询。 4. 服务端 SelectExpression.compile 调用 CompilableAggregateExpression 和 SumExpression,Janino SimpleCompiler.cook 编译被注入的 Java 源码。 5. 恶意代码在 Yamcs 服务器 JVM 内执行,实现远程代码执行,攻击者获取服务器控制权。
💥 漏洞影响
攻击者可完全控制 Yamcs 服务器进程,读取任务数据、数据库凭据等敏感信息,篡改遥测数据,或发起拒绝服务攻击,导致保密性、完整性和可用性全面受损。由于是普通 Java 执行,JDK 的文件系统、进程执行、反射、类加载等危险 API 均可达。
🛡️ 修复建议
升级 Yamcs 至 5.12.8 或 5.13.2 及以上版本。临时缓解措施:严格控制 ControlArchiving 系统权限的授予,仅限完全可信用户;在网络层限制 /api/archive/{instance}:executeSql 接口的访问来源;对 StreamSQL 查询输入进行严格过滤和校验(如禁止双引号标识符中的危险字符);使用外部沙箱或容器隔离 Yamcs 服务进程。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-55511
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-55511
- 原始来源(GitHub-Advisory)
🚨 威胁评估
| 📈 EPSS 利用概率 | 暂无数据 |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-08-31 01:06 | 来源: GitHub-Advisory
🤖 常见问题解答(FAQ)
❓ 攻击者利用此漏洞的入口是什么?
攻击者需为已认证用户且拥有ControlArchiving权限,通过POST /api/archive/{instance}:executeSql发送包含恶意列名的StreamSQL查询,触发Janino编译执行。
❓ 如何判断我的Yamcs版本是否受影响?
检查Yamcs版本:若版本低于5.12.8或低于5.13.2则受影响。可在产品发布说明或通过系统信息接口确认当前版本。
❓ 不升级是否有临时防护方法?
限制ControlArchiving权限仅授予可信用户,并限制executeSql接口的网络访问,同时对StreamSQL查询中的双引号标识符进行校验,阻止异常字符。