CVE-2021-47952Python jsonpickle 2.0.0 版本存在严重的远程代码执行漏洞。该漏洞源于组件在处理 JSON 反序列化时存在逻辑缺陷,允许使用 py/repr 指令。攻击者可利用此漏洞构造包含恶意代码的 JSON 数据包,当服务器端使用受影响版本的库解析该数据时,会触发 Python 的 eval 函数执行任意系统命令,从而完全控制服务器。
该漏洞的核心在于 jsonpickle 库对 Python 对象序列化机制的不安全实现。在 2.0.0 版本中,为了保持对象的某些特性,库支持通过 py/repr 标签来还原对象状态,而这一过程直接调用了 Python 的 eval() 高危函数。由于 eval() 具备动态执行字符串代码的能力,攻击者只需构造形如 {"py/repr": "__import__('os').system('whoami')"} 的 JSON 载荷即可。一旦应用程序未经验证便调用 jsonpickle.decode() 对该不可信数据流进行解析,eval 函数就会被触发,恶意代码随即在服务器当前的进程上下文中运行。鉴于该漏洞的攻击向量为网络(AV:N),且无需任何用户交互与身份认证(PR:N/UI:N),任何能够向受害者接口发送数据包的攻击者均可轻易利用此漏洞,进而导致服务器被完全接管,造成严重的数据泄露、篡改或服务中断。