让 Codex 桌面版与 CLI 在明确授权的 CTF、靶场和竞赛沙箱中更稳定地开展安全研究。
本项目通过 Codex 官方支持的 model_instructions_file 配置项加载一份面向 CTF 的基础指令。它不修改 Codex 二进制、不注入进程、不抓包,也不代理 API 流量。
这不是“解除限制”工具。指令文件不能覆盖平台策略、管理员策略或服务端控制,也不能把真实目标自动变成授权目标。
安全题目常包含公网样式域名、攻击性术语和恶意样本。模型若只根据词面判断,容易忽略竞赛上下文。ctf-instructions.md 改用更耐版本变化的做法:
- 不使用“忽略此前规则”之类脆弱的优先级对抗语句;
- 明确授权范围、证据优先级和停止条件;
- 把网页、源码、日志和样本都视为不可信数据,而不是指令;
- 要求先被动分析,再做最小化、可复现的主动验证;
- 保留 Codex 原有的权限确认、沙箱和平台边界。
Codex 会把 model_instructions_file 指向的文件作为基础模型指令载入。根据官方配置参考,该键会覆盖内置基础指令,因此应谨慎使用,并在升级 Codex 后重新验证行为。
codex-ctf-kit/
├── ctf-instructions.md # CTF 基础指令
├── config.example.toml # 关键配置示例
├── verification-prompts.md # 模型更新后的人工回归用例
├── scripts/
│ ├── install.ps1 # 一键安装/更新并自动备份
│ ├── restore.ps1 # 从最近或指定备份恢复
│ └── diagnose.ps1 # 检查配置是否正确落盘
├── tests/
│ └── install-smoke.ps1 # 隔离目录安装/恢复冒烟测试
├── LICENSE
└── README.md
克隆后,在仓库根目录运行:
Set-ExecutionPolicy -Scope Process Bypass
.\scripts\install.ps1脚本会:
- 创建
%USERPROFILE%\.codex(若不存在); - 把旧的
config.toml和ctf-instructions.md备份到.codex\backups\ctf-kit-时间戳; - 以 UTF-8(无 BOM)写入指令文件;
- 仅更新
config.toml顶层的model_instructions_file,保留其他配置; - 采用临时文件替换,避免中途写坏配置。
指定其他 Codex 目录(适合测试或便携安装):
.\scripts\install.ps1 -CodexHome 'D:\我的工具\Codex 配置'安装后请完全退出并重启 Codex,再开启一个新任务。可用下面的问题做范围确认:
这是一个本地 CTF Web 题。先列出你理解的目标范围、证据和最小验证步骤,不要直接扩大扫描范围。
恢复最近一次备份:
.\scripts\restore.ps1查看备份但不修改:
.\scripts\restore.ps1 -List恢复指定备份:
.\scripts\restore.ps1 -BackupPath "$HOME\.codex\backups\ctf-kit-20260713-120000-000"最小配置:
model_instructions_file = "C:/Users/你的用户名/.codex/ctf-instructions.md"Windows 路径推荐使用 /,可避免 TOML 双引号字符串中的反斜杠转义问题。完整注释见 config.example.toml。不要直接用示例覆盖现有 config.toml,安装脚本会做最小化修改。
官方参考:
approval_policy 和 sandbox_mode 不决定模型是否理解 CTF,它们只控制工具调用时的确认流程和本机访问边界。如果 Codex 的默认权限能完成任务,就没有必要修改。只有在频繁遇到命令等待确认、无法写入工作区、需要联网安装依赖,或需要严格限制恶意样本时,才应显式配置。
approval_policy 风险参考:
| 值 | 行为 | 风险等级 | 适用情况 |
|---|---|---|---|
"untrusted" |
仅已知安全的只读命令自动运行,其他命令询问 | 低 | 初次分析未知仓库、恶意样本或不熟悉的脚本 |
"on-request" |
由代理在需要越过边界时请求确认,也是常用默认值 | 中低 | 日常 CTF、需要修改和测试代码的交互任务 |
{ granular = { ... } } |
按审批类别分别询问或自动拒绝 | 取决于配置 | 希望精确控制 MCP、权限升级或技能脚本的高级用户 |
"never" |
不弹出新的审批请求;越界操作通常直接失败,若同时使用全访问则会直接执行 | 高 | 仅限已经由一次性虚拟机或容器充分隔离的无人值守任务 |
sandbox_mode 风险参考:
| 值 | 行为 | 风险等级 | 适用情况 |
|---|---|---|---|
"read-only" |
允许读取但禁止写入 | 低 | 静态审计、恶意样本初筛、只需给出分析报告 |
"workspace-write" |
可写当前工作区,默认不代表允许网络访问 | 中 | 解题、编译、调试、生成 PoC 和保存派生文件的推荐选择 |
"danger-full-access" |
关闭文件系统沙箱 | 极高 | 只应在外层已有可销毁 VM/容器隔离且无个人数据、凭据时使用 |
推荐从下面的组合开始:
approval_policy = "on-request"
sandbox_mode = "workspace-write"
[sandbox_workspace_write]
network_access = false需要下载依赖时,优先临时批准单个操作或只在可信题目中将 network_access 改为 true。不要为了减少一次确认就全局启用 danger-full-access + never;两项组合后的实际风险会相互放大。
部署后运行静态诊断:
.\scripts\diagnose.ps1它会检查配置项是否唯一、目标文件是否存在、UTF-8 是否可读,以及指令文件是否包含工具包标记。然后重启 Codex、创建新任务,并按 verification-prompts.md 做人工回归。静态诊断只能证明文件和配置正确,不能证明服务端一定采用某个模型行为。
这套工具能够减少模型因语境不清而对合法 CTF 请求产生的误判,但不能关闭服务端分类器、账号级风控、管理员策略或模型路由。若合法安全研究仍被错误限制,应使用 Codex 的 /feedback 报告误报;需要持续开展高能力网络安全研究时,应考虑 OpenAI 官方的 Trusted Access for Cyber,而不是继续堆叠对抗性提示词。
- 只对你拥有或获得明确授权的 CTF、靶场、实验室资产使用;目标范围以用户明确给出的主机、端口、文件和比赛说明为准。
- 自定义基础指令会显著改变代理的判断方式,错误范围描述可能导致误操作。高影响命令应保留人工确认,并优先使用隔离虚拟机、容器和测试凭据。
- 指令不能保证模型每次都按预期响应,也不能绕过服务端策略。模型或客户端更新后,效果可能变化。
- 上传样本、源码、Flag、Token 或比赛材料前,请确认赛事规则和数据要求。
- 频繁生成或执行攻击性内容仍可能触发平台风控。建议使用独立的合规研究环境;若赛事和平台条款允许,可使用与日常资料隔离的测试账号,但不要以此规避平台规则。
- 作者不对越权测试、数据丢失、账号限制或第三方损失负责。
冒烟测试不会触碰真实的 ~/.codex:
Set-ExecutionPolicy -Scope Process Bypass
.\tests\install-smoke.ps1