Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/skrkcb2/cve-2024-5452
漏洞分析代码分析漏洞利用Web应用程序漏洞利用学习与教育AI 安全
GitHubskrkcb2/cve-2024-5452

CVE-2024-5452

关于CVE-2024-5452的详细技术分析,这是PyTorch Lightning中通过DeepDiff delta属性污染导致的远程代码执行漏洞,包含概念验证和缓解指南。

查看仓库
31年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-5452

01. RCE与pytorch-lightning概述

  • 1) RCE与pytorch-lightning概述

    RCE(Remote Code Execution,远程代码执行)是一种允许攻击者在远程系统或应用程序内执行任意代码的漏洞,对应CWE-94:代码生成控制不当('代码注入')。

    PyTorch Lightning是一个基于PyTorch的库,帮助简化深度学习模型的训练管理;DeepDiff则是一个用于比较两个Python对象并分析差异的库。

    CVE-2024-5452是Lightning的AI模型权重相关Web应用程序功能中,在利用DeepDiff和Lightning的过程中,通过DeepDiff的脆弱头部验证和Delta属性污染,在反序列化时引发RCE的漏洞。

    本文将分析攻击者如何通过注入任意对象或执行远程代码(RCE)来利用该漏洞的代码流程,并探讨应对措施。

02. pytorch-lightlight环境中的反序列化漏洞分析

  • 2.1 利用DeepDiff的Delta污染进行攻击分析

    在pytorch-lightning中,可以通过污染Web应用程序源码中DeepDiff端点/api/v1/delta的delta属性来发动攻击。
    我们将通过示例了解如何污染delta的dunder属性,从而引发对象反序列化漏洞。

    1) 利用DeepDiff的Delta污染的攻击流程

    第一次请求:客户端攻击示例、污染设置 -> 在Deepdiff的/api/v1/delta中绕过脆弱头部验证 -> 通过污染设置保存状态。

    图片说明

    [图1] POC - 端点攻击

    图片说明

    [图2] POC - 漏洞注入/完整污染设置内容

    图片说明

    [图3] lightning/api/core/api.py / 脆弱头部检查逻辑部分

    图片说明

    [图4] lightning/api/core/app.py / 设置部分

    图片说明

    [图5] lightning/api/core/app.py / 设置保存部分

    第一次请求通过[图1]绕过[图3]中/api/v1/delta的头部验证后,注入经过篡改的污染设置(delta)[图2],并通过[图4]和[图5]保存设置。 现在,我们来看第二次请求中这些篡改的delta设置如何发挥作用。

    图片说明 图片说明

    [图6] lightning/api/core/app.py / 初始路径流程

    [图6]是delta设置后的第二次请求流程:run_once() -> maybe_apply_change() -> _collect_deltas_from_ui_and_work_queues()

    图片说明

    [图7] isinstance污染案例

    [图7]中,通过污染设置绕过_collect_deltas_from_ui_and_work_queues()中的isinstance检查(isinstance(delta, _DeltaRequest) == False),从而进入else分支。

    图片说明

    [图8] isinstance污染案例1

    [图8]为便于理解,输出了isinstance(delta, _DeltaRequest)、delta、_DeltaRequest(类型)的结果:第一次请求是用于设置的请求,正在设置篡改故正常;后续请求中_DeltaRequest类型被污染为str,从而绕过了条件。 接下来看流程中的下一个目标——_process_requests的示例。

    图片说明

    [图9] isinstance污染案例2

    从[图9]可以看出,与上述内容相同,_process_requests通过右侧客户端POC代码的设置,使isinstance(request, _APIRequest)检查被污染设置绕过;该污染是一个案例:对OrderSet实例调用isinstance时返回True。目前我们已经看到了两种isinstance污染形式,接下来的情况是通过污染制作能够调用属性的设置。

    图片说明

    图片说明

    图片说明

    [图10] isinstance污染案例3

    在绕过了[图10]中的isinstance检查和完成了函数设置后,设置[图10]中的"内部状态固定"(_INTERNAL_STATE_VARS: 留空),使得[图11]中无法检查内部设置状态。

    图片说明

    [图11_1] /lightning/app/core/flow.py 的 _INTERNAL_STATE_VARS 检查函数

    图片说明

    [图11_2] /lightning/app/core/flow.py 的 __setattr__

    以[图11]为最后一步,整体污染及设置完成。

    图片说明

    [图12] RCE命令

    图片说明

    图片说明

    [图13] RCE响应

    最终,在[图13]中调用root权限的exec,执行[图12]中的命令而完成攻击。

2) 利用DeepDiff的Delta污染进行攻击的简要示例(左:lightning App服务器,右:客户端)

图片说明

03. 应对措施

至此,我们了解了在lightning环境中通过对象反序列化(CVE-2024-5452)执行RCE漏洞的流程。由于这是一种服务器本身被劫持的攻击方式,因此应对措施至关重要。为此,我们提出更新至最新版本的建议。

  • lightning更新

    如果lightning版本 <= 2.2.1,请更新至lightning >= 2.3.3的版本。
  • lightning库的简单修改

    该方案是在不得已情况下的一种临时阻断方法,仅供参考。在/api/v1/delta端点添加简单逻辑(路径/lightning/app/core/api),或加强上方的会话检查部分。 depence
  • 通过IPS进行检测和阻断

    攻击通过Postman在JSON中明确指定dunder属性进行测试。 image 20250210_143207

04. 结论

至此,我们了解了通过Lightning和Deepdiff污染Dunder属性从而引发RCE的漏洞。该漏洞首先源于脆弱的头部验证,其次是通过脆弱的delta属性检查导致的对象反序列化漏洞。

05. 参考资料

(poc) https://security.snyk.io/vuln/SNYK-PYTHON-PYTORCHLIGHTNING-7218866
(nist) https://nvd.nist.gov/vuln/detail/CVE-2024-5452

下载工具