CVE-2025-62515CVE-2025-62515是pyquokka框架中存在的一个高危反序列化漏洞,CVSS评分为9.8,属于严重级别。pyquokka是一个用于时序数据湖处理的框架,在0.3.1及之前版本中,其FlightServer类在处理来自Flight客户端的Action请求时,直接调用Python内置的pickle.loads()函数对数据进行反序列化操作,而未对输入数据进行任何过滤、校验或签名验证。pickle模块在反序列化过程中可以执行任意Python代码,当攻击者构造恶意的pickle序列化数据并通过网络发送到监听在0.0.0.0的FlightServer时,服务器将自动执行其中的恶意代码,从而导致远程代码执行(RCE)。该漏洞的影响范围涵盖机密性、完整性和可用性三个维度,均为高影响。攻击者无需任何认证或用户交互即可利用此漏洞,对系统安全构成极大威胁。受影响的代码路径不仅限于do_action方法,还包括cache_garbage_collect、do_put和do_get等函数,这些函数同样使用了pickle.loads()对来自远程客户端的不可信数据进行反序列化处理,扩大了攻击面。
该漏洞的根本原因在于pyquokka框架对不可信远程数据使用了Python的pickle模块进行反序列化。pickle.loads()函数在反序列化过程中会调用Python对象的__reduce__、__setstate__等魔术方法,攻击者可以利用这些机制执行任意系统命令。
具体漏洞点位于pyquokka/flight.py文件的第283行,do_action()方法直接将从Flight客户端接收到的action body数据传递给pickle.loads()函数。当FlightServer配置监听在0.0.0.0地址时(默认配置),任何能够访问该网络的主机都可以作为攻击源。
攻击者首先需要构造一个恶意的pickle payload。常见的构造方式是使用__reduce__方法返回一个可调用对象,例如os.system或subprocess.Popen等。然后将该payload通过set_configs action发送给FlightServer。当服务器调用pickle.loads()处理该数据时,__reduce__方法中定义的恶意代码将在服务器进程中执行。
除了do_action方法外,cache_garbage_collect、do_put和do_get函数中也存在类似的pickle.loads()调用,这些函数处理来自远程客户端的数据时同样缺乏安全验证,构成了多个攻击入口点。攻击者可以利用这些入口点之一来执行任意代码,包括但不限于读取敏感文件、安装后门、窃取数据、横向移动等。