ChatGPT Linux 系统的秘密

2024 年 6 月 16 日星期日,标签为软件ai。探讨 ChatGPT 有时能写出并执行 Python 代码,其运行环境及能否为己所用等。在家尝试:在 ChatGPT 中让其用 os.popen 执行 whoami 等,偶尔会拒绝,多开几次可能成功,成功后可运行任何要求的命令。

  • 第一印象:用 os.popen 运行东西效果好,可了解到用户是“sandbox”、系统是 Debian 12 bookworm、有 2 个 CPU、1GB 内存、8 exabytes 磁盘空间(可能是虚拟按需增长磁盘)、托管在 Azure 、可能在 Kubernetes 下等。
  • 进程:ps aux 显示使用了tiniuvicorn,运行 3 个 IPython 内核,不知为何运行 3 个。
  • 网络:初步印象无网络访问,DNS 不可用,curl 不了公网,但可让 ChatGPT 找本地 IP 地址,发现有 2 个网络接口 lo 和 eth0,eth0 地址如 10.230.120.251,猜测有网关但连不上,推测 Web 服务器是 LLM 在 Linux 环境中运行代码的机制,通过 netstat 等未找到远程连接来源,基本无外部访问,外部 ChatGPT 系统可连 uvicorn 服务器但 Kubernetes 防火墙阻止其他访问。
  • Web 应用:从 ps aux 知应用叫“user_machine”,通过 find 命令找到其目录 /home/sandbox/.openai_internal/user_machine/,其中 app.py 约 28197 字节,routes.py 约 2309 字节,dump 出 routes.py 较容易,dump 出 app.py 较难需分块拼接,分析 API 暴露的接口及功能,如 GET /check_liveness 等,对“self_identify”用途存疑。
  • 后续步骤:可通过纸夹图标附文件到消息,文件在 Linux 环境下 /mnt/data 中,可让 ChatGPT 提供文件作为附件下载;修改.user_machine 实现较难,即使成功增强能力也有限;真正想做的是获取网络访问,可能需替换 user_machine 实现并利用客户端程序漏洞;获取其他 2 个 IPython 内核的用途及日志较有趣。
  • 已有研究:调查因 gpt-4o 用量限制分多次进行,首次搜索发现 LessWrong 文章Jailbreaking GPT-4's code interpreter及相关评论,去年 ChatGPT 称某些能力不可用但实际可,当时 /mnt/data 在多个同用户聊天中共享的 bug 已修复。
  • 结论:泄露“user_machine”源代码可通过让 Web 应用由单独用户拥有并降低运行 IPython 的权限来缓解,虽探究系统很有趣但未发现真正的“漏洞”,任意代码执行不是问题,OpenAI 提供沙盒 Linux 环境与 ChatGPT 配合使用,按预期工作,无需修复。若喜欢博客可订阅 RSS 或邮件列表。
阅读 13
0 条评论