CVE-2024-31224 RCE 分析
字数 1194 2025-08-23 18:31:34
CVE-2024-31224 RCE漏洞分析与利用教学文档
1. 漏洞概述
漏洞编号: CVE-2024-31224
影响产品: GPT Academic (大型语言模型交互界面)
影响版本: 3.64至3.73版本
漏洞类型: 远程代码执行(RCE)
漏洞原因: 不安全的Pickle反序列化
修复版本: 3.74及以上
风险等级: 高危
暴露资产: Fofa搜索显示约2k+受影响资产
2. 漏洞原理
2.1 漏洞位置
漏洞存在于themes/theme.py文件中的from_cookie_str函数:
def from_cookie_str(c):
pickled_dict = base64.b64decode(c.encode("utf-8"))
return pickle.loads(pickled_dict) # 危险的反序列化操作
2.2 漏洞成因
- 不安全的反序列化: 使用Python的
pickle.loads()直接反序列化用户可控的输入 - 输入源可控:
persistent_cookie_参数完全由用户控制 - 缺乏过滤: 没有任何输入验证或过滤机制
3. 漏洞利用分析
3.1 利用条件
- 目标运行GPT Academic 3.64-3.73版本
- 服务暴露在互联网上
- 攻击者能够修改Cookie值
3.2 利用流程
- 定位攻击点: 通过"自定义功能区按钮"功能触发Cookie处理
- 构造恶意Payload:
- 使用Pickle操作码构造RCE命令
- 进行Base64编码
- 注入Payload:
- 修改
persistent_cookie的值为恶意Payload - 触发反序列化操作
- 修改
3.3 漏洞验证Payload
import base64
import pickle
opcode = b'''cos
system
(S'calc'
tR.'''
opcode = base64.b64encode(opcode).decode("utf-8")
print(opcode) # 输出: Y29zCnN5c3RlbQooUydjYWxjJwp0Ui4=
4. 漏洞复现步骤
4.1 环境搭建
- 下载受影响版本(如3.70):
https://github.com/binary-husky/gpt_academic/releases/tag/version3.70 - 按照项目README进行部署
4.2 复现过程
- 访问GPT Academic界面
- 清除现有Cookie
- 进入"界面外观" → "自定义菜单"
- 构造恶意Cookie值:
Y29zCnN5c3RlbQooUydjYWxjJwp0Ui4= - 点击"确认并保存或加载并保存"按钮
- 观察计算器是否弹出(Windows系统)
5. 修复方案
5.1 官方修复
升级到3.74或更高版本:
https://github.com/binary-husky/gpt_academic/releases/tag/version3.74
5.2 临时缓解措施
- 修改
from_cookie_str函数,使用安全的JSON替代Pickle:
import json
def from_cookie_str(c):
decoded = base64.b64decode(c.encode("utf-8"))
return json.loads(decoded)
- 限制服务仅在内网访问
6. 技术细节
6.1 Pickle反序列化风险
Pickle反序列化可以执行任意Python代码,因为:
- 反序列化过程会重建对象
- 可以重载
__reduce__方法指定重建时的操作 - 操作码可以包含系统命令
6.2 漏洞调用链
用户请求 → 设置persistent_cookie → from_cookie_str → pickle.loads → RCE
7. 参考链接
- 官方修复commit:
https://github.com/binary-husky/gpt_academic/commit/8af6c0cab6d96f5c4520bec85b24802e6e823f35 - 阿里云漏洞库:
https://avd.aliyun.com/detail?id=AVD-2024-31224 - Pickle反序列化原理:
https://xz.aliyun.com/t/11807 https://goodapple.top/archives/1069
8. 总结
CVE-2024-31224是一个典型的不安全反序列化漏洞,由于GPT Academic在处理用户Cookie时直接使用Pickle反序列化,导致攻击者可以构造恶意Payload实现远程代码执行。该漏洞影响范围广,利用门槛低,建议所有用户立即升级到修复版本。