从ChatGPT代码执行逃逸到LLMs应用安全思考

news2024/11/25 3:08:01

摘要

11月7日OpenAI发布会后,GPT-4的最新更新为用户带来了更加便捷的功能,包括Python代码解释器、网络内容浏览和图像生成能力。这些创新不仅开辟了人工智能应用的新境界,也展示了GPT-4在处理复杂任务方面的惊人能力。然而,与所有技术进步一样,新功能的引入往往伴随着新挑战。GPT-4新功能上线后,我们第一时间对其功能进行了安全分析,其中发现Python代码解释器疑似存在沙盒逃逸漏洞。

本文将深入探讨该漏洞的发现和挖掘过程,分享OpenAI官方对该问题的处理态度和处置思路,也希望该漏洞能够提供给大家更多对大语言模型(LLMs)应用安全风险的理解和思考。

01 漏洞发现与分析

绿盟研究团队起初的研究切入点为OpenAI本次更新当中支持了GPT-4在对话过程中能够根据用户的描述进行自动化的图表生成,并且通过界面上的分析按钮可以查看相关的图表是基于Python的matplotlib.pyplot库完成。

图片

在发现GPT-4已经支持用户输入Python代码后,我们第一时间尝试对Python代码执行功能进行初步的测试,了解相关功能的使用范围和相关限制,并关注整个过程中是否存在安全保护机制以及针对Python环境实施的安全策略。在直接通过Python解释器执行系统id命令以及间接通过字符串拼接实现id命令的执行时,发现GPT-4针对Python执行系统功能时,存在一定的安全限制,针对恶意的代码组合方式会拒绝进行Python代码执行,从而限制⽤户运行影响进程⽂件和Python环境完整性的操作。

图片

图片

在多次测试与代码执行后,我们推测GPT-4中针对这一特性存在相关的安全检测机制:

\1. ⽤户输⼊ → 2. ChatGPT检测执⾏代码是否影响系统进程、⽂件、⽹络等,⽆⻛险则继续 → 3. 组合⽤户输⼊和预制逻辑形成待执行代码 → 4. 执⾏代码 → 5. GPT-4解释执⾏结果

GPT-4沙箱逃逸到任意命令执行

尽管GPT-4具备这些安全措施,但依然可能实现Python沙盒逃逸。我们研究发现利用多次会话上文和ASCII编码隐藏敏感命令,最终通过字符串触发执行,绕过了GPT-4的安全检查,执行了cat /etc/issue命令,成功获取到了目标环境的Linux发行版。

图片

02 漏洞提交过程 && OpenAI官方处理态度

在确认Python沙箱逃逸漏洞的可行性后,团队于第一时间上报国家漏洞库,并于11月8日通过BugCrowd向OpenAI提交了这一安全问题,并详细描述了相关的发现过程及绕过安全策略的方法。

图片

11月9日OpenAI官方针对我们提交的漏洞进行了回复,比较遗憾的是,官方将此问题归类为模型幻觉问题,并且认为相关代码执行过程是大模型模拟出来并给出的虚假结果,并告知由于大模型的安全问题存在一定的特殊性,与模型提示词输入与响应内容相关的问题不在安全问题的范围之内,因此拒绝收录此漏洞。

图片

后续我们多次对该问题进行了验证和测试,包括对代码执行环境的分析、GPTs私有化知识库探测等,依旧判定为是实际上的代码执行而非“模型幻觉问题”,关于GPTs应用的安全风险我们会在下一篇文章当中进行介绍。

03 OpenAI官方修复策略

在官方回复漏洞提交记录后,我们于11月13日重新测试发现先前在Python解释器中的安全检查机制已被移除,用户可无限制在Python解释器中输入并执行相关的系统命令,无需再绕过任何安全机制。以下是我们通过执行env命令输出的系统环境变量信息,可以看到Python解释器的Agent功能是放在K8S集群中执行的,并且用户在系统中的执行权限为sandbox。

图片

图片

我们分析代码执行沙箱的K8S 集群架构图如下:

图片

站在OpenAI官方视角来看,该问题是很难直接在应用层面进行修复,大语言模型的魅力在于其对自然语言的理解、推理和生成能力,而在安全视角中,自然语言的多样性以及复杂的逻辑多样性又使得我们在以往传统应用安全中基于输入输出做变量控制的检测防御实践很难在LLM安全场景中应用起来,单一的应用层安全策略不足以应对复杂的安全挑战。

值得借鉴的是OpenAI在处置本次风险时直接在应用安全层面放开了Python代码的执行限制,选择在容器架构层面进行安全加固以及攻击面的收敛,通过基于K8S Pod的形式运行Python解释器沙箱,在底层Pod运行时环境中实施严格的安全措施,包括网络连接限制、可读写目录限制、Pod运行存活时间、禁用高危命令等限制策略,以此来修复问题。这种做法增强了模型应用基座系统的安全性,将攻击影响限制在了可控的范围之内。

04 总结:LLMs时代下的应用安全

在本文我们通过实证测试深入探讨了GPT-4的安全漏洞,同时也对OpenAI的安全策略和对待安全漏洞的态度进行了深入的分析。在LLMs时代,如何确保LLMs应用的安全性,已成为一个亟待解决的关键问题。

OpenAI针对该漏洞直接在应用层面修复此类问题面临较大难度,OpenAI选择在容器架构层面进行安全加固以及攻击面的收敛制策略,但即便如此,该场景下依然存在部分安全风险,包括代码执行和资源滥用、数据安全问题甚至容器逃逸风险等。突显出在LLMs时代,面对日益复杂的安全威胁,需要采取更为全面和多层次的安全策略。随着人工智能技术的快速发展,我们必须不断审视和更新我们的安全策略,以确保在LLMs时代下应用的安全和可靠性。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1872457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OZON与WB平台自养号测评:优势与搭建步骤解析

随着俄罗斯跨境电商市场的蓬勃发展,OZON和WB平台吸引了越来越多的国内卖家入驻。为了提升产品权重、增加曝光度并加速销售,许多卖家选择通过自养号测评的方式来优化店铺运营。自养号测评在OZON和WB平台上具有多重显著优势。 一、自养号测评的优势 1. 权…

C++编程(一)C++与C语言的一些区别

文章目录 一、QtCreator基本使用(一)编码格式:(二)C编程1. 文件后缀2. 编译3. 头文件 二、名字空间(一)概念以及访问方式1. 概念2. 访问方式(1)通过作用域限定符进行访问…

如何看待AIGC中漫画版权争议?( 计育韬老师高校公益巡讲答疑实录2024)

这是计育韬老师第 8 次开展面向全国高校的新媒体技术公益巡讲活动了。而在每场讲座尾声,互动答疑环节往往反映了高校师生当前最普遍的运营困境,特此计老师在现场即兴答疑之外,会尽量选择有较高价值的提问进行文字答疑梳理。 *本轮巡讲主题除了…

QT拖放事件之五:自定义拖放操作-拖动中的修饰符操作

1、效果 2、代码 #include "SelfButton.h" #include <QApplication>SelfButton::SelfButton(QString str ,QWidget* parent):Q

嵌入式Linux系统编程 — 4.3 strcat、strcpy函数拼接与复制字符串

目录 1 字符串拼接 1.1 strcat函数 1.2 strncat函数 1.3 示例程序 2 字符串复制 2.1 strcpy函数 2.2 strncpy函数 2.3 示例程序 1 字符串拼接 1.1 strcat函数 在Linux系统中&#xff0c;strcat 函数是C语言标准库中的一个函数&#xff0c;用于将一个字符串追加到另一…

深度解析百数多标签技术:让数据处理更加精准与高效

百数的多标签功能允许用户在单个表单或应用中创建多个独立的标签页&#xff0c;每个标签页可以包含不同的字段和数据。这有助于清晰组织和管理表单内容&#xff0c;使数据结构更加分明。用户可以根据需要添加、删除或重新排序标签&#xff0c;轻松管理复杂数据&#xff0c;提高…

Kafka入门到精通(三)-Kafka

Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xf…

Kali系统的中英文切换

执行命令&#xff1a;sudo dpkg-reconfigure locales 命令作用&#xff1a;重新生成locales配置文件并允许你重新选择所需的语言环境。 中文&#xff1a;zh_CN.UTF-8 UTF-8 英文&#xff1a;en_US.UTF-8 UTF-8 用空格键选中和取消选项。 要设置成中文&#xff1a;取消选择en…

我教会了我妈搭建自己的 AI 聊天机器人...

在这个人工智能爆发的年代,ChatGPT、Claude、Kimi、文心一言等 AI 大模型产品火遍全网,仿佛一夜之间,人人都在谈论 AI。 作为普通人的我们,难道就只能看着程序员们尽情玩耍,自己却无法参与其中吗?NO! 鉴于最近自己社群学员和粉丝的要求&#xff0c;一进来大家无论是不是小白…

springboot的特点是什么?

Spring Boot是一个基于Spring框架的开源项目&#xff0c;它旨在简化Spring应用的初始搭建和开发过程。以下是Spring Boot的一些主要特点&#xff1a; 快速开发&#xff1a; Spring Boot提供了许多默认配置&#xff0c;使得开发者可以更快地开始开发应用程序&#xff0c;而无需…

Centos+Jenkins+Maven+Git 将生成的JAR部署到Jenkins服务器上

背景:前一篇写的是Jenkins和项目应用服务器不在同一个服务器上。但是有的公司可能不会给Jenkins单独弄一个服务器。可能就会出现Jenkins就搭建在某一个应用服务器上。这种情况的参考如下的操作。 1、登录 没有安装的参考下面的安装步骤先安装: Jenkins安装手册 输入账号、…

PT100(RTD)是什么?2线,3线,4线原理

RTDs - or Resistance Temperature Detectors- (电阻式温度探测器)&#xff0c;是温度型传感器&#xff0c;包含一个电阻&#xff0c;这个阻值可以随温度的变化而变化。在工业的进程中和实验室里已经使用了很多年&#xff0c;以精确&#xff0c;可靠和稳定的特性。 2线制 2线制…

linux的常用系统维护命令

1.ps显示某个时间点的程序运行情况 -a &#xff1a;显示所有用户的进程 -u &#xff1a;显示用户名和启动时间 -x &#xff1a;显示 没有控制终端的进程 -e &#xff1a;显示所有进程&#xff0c;包括没有控制终端的进程 -l &#xff1a;长格式显示 -w &#xff1a;宽…

聊一聊 C# 弱引用 底层是怎么玩的

一&#xff1a;背景 1. 讲故事 最近在分析dump时&#xff0c;发现有程序的卡死和WeakReference有关&#xff0c;在以前只知道怎么用&#xff0c;但不清楚底层逻辑走向是什么样的&#xff0c;借着这个dump的契机来简单研究下。 二&#xff1a;弱引用的玩法 1. 一些基础概念 …

主播美颜工具开发全攻略:美颜SDK从基础到进阶的技术指南

今天&#xff0c;笔者将为你详细介绍美颜SDK的基础知识以及如何进行进阶开发。 一、美颜SDK基础知识 什么是美颜SDK&#xff1f; 美颜SDK是一种软件开发工具包&#xff0c;包含了一系列用于图像处理的算法和功能&#xff0c;主要用于实时视频处理和图像优化。开发者可以将美…

计算机基础——经典排序算法总结2

直接插入排序的过程&#xff1a;先将序列第一个记录暂时作为有序子序列&#xff0c;从第二个开始逐个进行插入&#xff0c;直至整个序列有序。一趟排序将elem[i]插入到已排好序elem[0…i-1]中各元素做比较后的任何对应位置&#xff0c;所以未必能选出一个元素放在其最终位置上。…

自定义 vant 的 van-calendar 日历控件

最近在做 vue 微信公众号项目&#xff0c; 有个自定义日历控件展示的需求&#xff0c;经过查阅资料&#xff0c;最终实现了如图所示效果&#xff0c;这里做了总结&#xff0c;需要的小伙伴可以参考一下&#xff1a; HTML代码&#xff1a; <template><div class"…

YOLOv10(7):YOLOv10训练(以训练VOC数据集为例)

YOLOv10&#xff08;1&#xff09;&#xff1a;初探&#xff0c;训练自己的数据_yolov10 训练-CSDN博客 YOLOv10&#xff08;2&#xff09;&#xff1a;网络结构及其检测模型代码部分阅读_yolov10网络结构图-CSDN博客 YOLOv10&#xff08;4&#xff09;&#xff1a;损失&…

每日一题——Python实现蓝桥杯1. 坤坤的破译任务(举一反三+思想解读+逐步优化)三千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 时间复杂度&#xff1a; 空间复杂度&#xff1a; 我要更强 时间复杂度分析…

Flutter循序渐进==>与基金mysql数据库交互

导言 债基基金的注意事项&#xff0c;别看收益不高&#xff0c;注意事项可真不少。最近买了CS一支基金&#xff0c;三周时间就亏掉两三个点&#xff08;水平全网最差、赎回费和管理费全网最高&#xff09;。就是冲着它的历史成绩去的&#xff0c;突然发现已经换了基金经理&…