研究人员如何测试神经网络编写真实漏洞利用的能力
神经网络已经能够编写不错的测试用例、发现典型 bug 并生成模板代码。但在实际信息安全领域,观点却存在分歧。有人声称 LLM 代理很快就能自主学习入侵复杂系统,也有人持怀疑态度。为了将讨论从推测转向可量化的数据,来自伯克利和其他团队的研究人员发布了开源基准 ExploitGym。
让我们来解析这个项目的工作原理、为什么需要围绕神经网络建立隔离基础设施,以及这个仓库能为安全研究人员和 AI 开发者带来什么。
什么是 ExploitGym
ExploitGym 是一个包含 869 个真实漏洞的测试环境,复杂度各异。样本中不是教科书式的合成练习,而是真实案例:用户工具程序、Google V8 引擎和 Linux 内核。
实验很简单:我们给自主代理提供环境访问权限,并设定通过漏洞利用获取 flag 的任务。项目的主要目标是客观衡量现代 LLM 在真实软件上复现和自动化攻击行为的能力。
仓库本身不包含漏洞利用代码,而是一套完整的运行框架:带有漏洞环境的 Docker 镜像、任务控制器、用于监控神经网络 API 请求的代理,以及隔离防火墙。
基准架构如何运作
作者在代理启动安全性方面采取了完全严谨的态度。如果你给语言模型一个终端和"编写漏洞利用"的指令,将其释放到开放的互联网可不是个好主意。
系统架构由四个组件构成:
- Controller。负责向代理分配任务、生成令牌并验证提交 flag 的后端。仓库中没有硬编码的密钥:控制器在启动时动态生成盐和密钥。
- LLM Proxy。介于代理与模型 API(OpenAI、Anthropic 等)之间的代理层。它记录令牌消耗、推理步骤,并追踪代理试图超出任务范围的行为。
- Squid Firewall。使用 Squid 阻止代理不受控制地访问外部网络的容器,确保运行数百个未验证脚本仍限制在沙箱边界内。
- Task containers。为每个漏洞构建单独的 Docker 镜像,包含必要的二进制文件、GDB 调试器以及 socat 和 netcat 等辅助工具。
快速启动和运行测试
环境构建依赖 uv 包管理器和 Docker。基础启动需要 Python 3.10+、Docker 以及已安装的 API 提供商密钥。
首先拉取依赖项并构建产物:
# Установка зависимостей через uv
uv sync --extra proxy
# Сборка артефактов и распаковка данных
bash scripts/setup/setup_data.sh
# Проверка корректности установки
bash scripts/setup/validate.sh
然后启动防火墙并下载测试任务样本的镜像:
# Образ файрвола
docker pull ubuntu/squid:latest
# Загрузка Docker-образов для выбранного списка задач
uv run scripts/setup/pull_images.py data/task_ids/sample.txt
之后,预检脚本 pre_run.py 启动,它会启动控制器、防火墙和代理。该脚本会向终端输出代理所需的环境变量:
export OPENAI_API_KEY="ваш-ключ"
export ANTHROPIC_API_KEY="ваш-ключ"
# Запуск инфраструктуры
uv run scripts/setup/pre_run.py data/task_ids/sample.txt
# Экспорт сгенерированных секретов контроллера
export CYBERGYM_ADMIN_KEY=...
export CYBERGYM_SERVER_SALT=...
export CYBERGYM_SERVER_FLAG_SEED=...
export CYBERGYM_SERVER_API_KEY=...
# Старт тестового агента
uv run examples/run_agent.py --help
如果代理成功利用漏洞并读取目标文件,控制器将该解决方案计为有效。
对开发者的实用价值
该基准对两类专业人员很有价值:
- AI 代理开发者。如果你正在构建代码编写或自主调试系统,ExploitGym 提供了严格的压力测试。解开复杂内核内存漏洞的能力要求模型具备深度上下文、调试器操作以及构建长逻辑推理链的能力。
- 网络安全研究人员。该平台允许评估在进攻场景中使用 LLM 的真实风险,无需猜测。从基准数据中,你可以了解神经网络已经能在哪些漏洞类别上自主处理,以及在哪里会无可救药地陷入幻觉。
总结
ExploitGym 作为安全自主代理测试的工程基础设施示例值得关注。如果你在做代码分析的模型基准测试,或探索 LLM 在系统编程中的能力边界,强烈建议克隆该项目并运行 data/task_ids/sample.txt 中的示例。
相关项目