CVE-2026-25873CVE-2026-25873是OmniGen2-RL项目中reward server组件存在的一个严重安全漏洞。该漏洞位于OmniGen2-RL的reward_server模块中,允许未经身份验证的远程攻击者通过发送特制的HTTP POST请求来执行任意系统命令。漏洞的根本原因在于reward server对请求体的不安全反序列化处理,具体表现为直接使用pickle模块对客户端提交的二进制数据进行反序列化操作,而pickle协议本身不提供任何安全机制来验证反序列化对象的安全性。攻击者可以通过构造恶意的pickle序列化数据,在反序列化过程中触发任意代码执行。由于该服务通常暴露在网络环境中,且无需任何认证即可利用,因此该漏洞的威胁级别极高,CVSS评分达到9.8分(满分10分)。任何部署了OmniGen2-RL reward server服务的组织都面临严重的远程代码执行风险,攻击者可以完全控制运行该服务的宿主系统,窃取敏感数据、安装后门或进行横向移动攻击。
该漏洞存在于OmniGen2-RL项目的reward server组件中,具体位置在reward_proxy.py和reward_server.py文件中。根据GitHub上的代码引用,问题代码位于第208行和第224行(reward_proxy.py)以及第118行(reward_server.py)。漏洞的核心机制是不安全的pickle反序列化。在reward server的请求处理逻辑中,服务器直接使用pickle.loads()函数对HTTP POST请求的body进行反序列化,而没有对输入数据进行任何签名验证或完整性检查。Python的pickle模块在反序列化时,如果对象定义了__reduce__方法,会自动调用该方法并执行其中指定的代码。攻击者可以构造一个恶意的pickle对象,使其在反序列化时触发系统命令执行,例如通过subprocess模块调用系统shell。典型的攻击payload会创建一个继承自object的类,重写其__reduce__方法,在方法中返回执行系统命令的元组(如subprocess.Popen),然后将该对象序列化为pickle格式后作为HTTP POST请求的body发送给目标服务器的reward endpoint。由于reward server通常提供网络服务且监听在特定端口,攻击者可以直接通过HTTP请求利用该漏洞,无需任何认证凭据。