IPBUF安全漏洞报告
English
CVE-2021-47952 CVSS 9.8 严重

CVE-2021-47952 Python jsonpickle远程代码执行漏洞

披露日期: 2026-05-16

漏洞信息

漏洞编号
CVE-2021-47952
漏洞类型
远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
python jsonpickle

相关标签

RCE远程代码执行反序列化PythonjsonpickleCVE-2021-47952

漏洞概述

Python 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),任何能够向受害者接口发送数据包的攻击者均可轻易利用此漏洞,进而导致服务器被完全接管,造成严重的数据泄露、篡改或服务中断。

攻击链分析

STEP 1
侦察
攻击者识别出目标应用程序使用了存在漏洞的 python jsonpickle 2.0.0 版本处理 JSON 数据。
STEP 2
武器化
攻击者构造包含 py/repr 对象的恶意 JSON 载荷,其中嵌入了旨在执行任意 Python 代码的字符串(如反弹 shell 或系统命令)。
STEP 3
投递
攻击者通过网络向目标应用程序的接口发送恶意 JSON 数据包。
STEP 4
利用
目标应用程序接收并使用 jsonpickle.decode() 函数解析 JSON 数据。解析器检测到 py/repr 标签,并调用 eval() 函数处理其中的内容。
STEP 5
执行
eval() 函数执行攻击者注入的恶意代码,导致服务器端执行任意命令,攻击者从而获得系统控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import jsonpickle import json # Proof of Concept for CVE-2021-47952 # This payload attempts to execute a system command using py/repr # Malicious JSON payload containing py/repr # The command executed is 'whoami' (or any arbitrary command) payload_dict = {"py/repr": "__import__('os').system('whoami')"} malicious_json = json.dumps(payload_dict) print(f"Sending malicious payload: {malicious_json}") # Vulnerable code: Deserializing untrusted data try: # When decode is called, it encounters py/repr and calls eval() result = jsonpickle.decode(malicious_json) print(f"Deserialization result: {result}") except Exception as e: print(f"Error: {e}")

影响范围

python jsonpickle 2.0.0

防御指南

临时缓解措施
在无法立即升级的情况下,应严格限制并清洗所有传入的 JSON 数据来源,确保数据来源可信。可以在解析前通过正则表达式或其他手段检测并拒绝包含 'py/repr' 等特定标记的 JSON 数据,以阻断攻击链。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表