CVE-2025-68271OpenC3 COSMOS是一款开源的航天器地面测试与控制系统软件,提供与嵌入式系统通信的功能。该软件从5.0.0版本到6.10.1版本存在一处严重的远程代码执行漏洞,存在于其JSON-RPC API接口中。漏洞的根本原因在于当JSON-RPC请求使用特定API的字符串形式时,系统使用String#convert_to_value方法将攻击者控制的参数文本解析为值。对于数组类型的输入,该方法会调用Ruby的eval()函数执行代码。由于cmd命令处理代码路径在调用授权检查(authorize())之前就已经解析了命令字符串,攻击者可以在未经身份验证的情况下触发Ruby代码执行,即使最终请求会因授权失败(401)而中止,但恶意代码已经在解析阶段被执行。此漏洞CVSS评分达到满分10.0,属于最严重的安全漏洞,攻击者可利用此漏洞完全控制目标系统,窃取敏感数据、植入后门或进行横向移动。
漏洞主要存在于OpenC3 COSMOS的JSON-RPC API实现中。当用户发送JSON-RPC请求时,系统会根据请求内容调用相应的处理方法。问题出在String#convert_to_value方法上,该方法用于将字符串形式的参数转换为Ruby对象。当参数是数组类型时,该方法会使用eval()来解析和执行代码。攻击者可以通过构造特殊的JSON-RPC请求,在命令参数中嵌入恶意Ruby代码。由于cmd处理流程中,命令字符串的解析发生在authorize()授权检查之前,因此即使攻击者没有有效的认证凭证,代码也已经在解析阶段被执行。攻击者只需构造一个包含数组形式恶意代码的JSON-RPC请求即可触发漏洞。例如,发送一个cmd类型的请求,参数中包含类似[].class_eval{system('id')}的代码,即可执行任意系统命令。修复方案是在6.10.2版本中调整了代码执行流程,确保授权检查在参数解析之前完成。