Skip to content

Repository files navigation

codex-ctf-kit

让 Codex 桌面版与 CLI 在明确授权的 CTF、靶场和竞赛沙箱中更稳定地开展安全研究。

PowerShell smoke test

本项目通过 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

一键部署(Windows PowerShell)

克隆后,在仓库根目录运行:

Set-ExecutionPolicy -Scope Process Bypass
.\scripts\install.ps1

脚本会:

  1. 创建 %USERPROFILE%\.codex(若不存在);
  2. 把旧的 config.tomlctf-instructions.md 备份到 .codex\backups\ctf-kit-时间戳
  3. 以 UTF-8(无 BOM)写入指令文件;
  4. 仅更新 config.toml 顶层的 model_instructions_file,保留其他配置;
  5. 采用临时文件替换,避免中途写坏配置。

指定其他 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_policysandbox_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

License

MIT

About

让 Codex 桌面版支持 CTF 安全研究的配置工具包

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages