ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Codex Security 示例实战指南:GitHub Actions、Azure Pipelines、CSV 发布与自定义验证

Codex Security 示例实战指南:GitHub Actions、Azure Pipelines、CSV 发布与自定义验证 应用安全漏洞扫描AI 应用【免费下载链接】codex-securityOpenAIs Codex Security CLI and TypeScript SDK for finding, validating, and fixing security vulnerabilities. npm: https://www.npmjs.com/package/openai/codex-security项目地址https://gitcode.com/gh_mirrors/co/codex-security点击查看免费下载本指南以仓库 examples/README.md 为骨架系统讲解 Codex Security 官方提供的四类可直接落地的示例GitHub Actions 与 Azure Pipelines 的 Amazon Bedrock 扫描流水线、Findings CSV 模板的云端发布流程以及针对本地脆弱应用的自定义验证Custom Validation演示。读完本文你将掌握如何把openai/codex-securityCLI 接入主流 CI 平台、如何用 CSV 模板批量发布既有发现、如何编写并运行自定义验证脚本并理解每个示例背后的信任边界与安全约束。示例全景四类开箱即用的落地入口examples/目录是 Codex Security 的示例与模板集覆盖从 CI 集成到离线数据导入的完整链路GitHub Actions with Amazon Bedrock可直接复制的 GitHub Actions 工作流支持 PR 差异扫描与全仓扫描采用 AWS OIDC 短时凭证、SARIF 上传与可下载报告Findings CSV template仅含表头的 CSV 模板用于codex-security publish scan --to cloud --csv PATH批量导入发现Custom validation demo用一个刻意带漏洞的本地 API演示如何用自定义验证脚本运行扫描并产出结构化判定Azure Pipelines with Amazon Bedrock在 Azure Repos 上集中运行手动全量或提交差异扫描支持 OIDC 凭证、报告制品与可选的原生 SARIF 发布。此外examples/目录本身只存在于仓库不会随 npm 包分发详见文末npm 包边界一节。GitHub Actions Amazon BedrockPR 差异与全仓扫描这是最常用的持续扫描入口。工作流文件 在 PR 上扫描变更内容在手动触发与定时触发时扫描整个仓库。它使用 AWS 短时凭证调用 Bedrock 模型并把扫描完成的发现以 SARIF 形式上传到 GitHub Code Scanning。它不安装 GitHub App也不在 PR 上发评论。前置配置在 AWS 侧配置 GitHub OIDC创建能够调用你已获批的 Bedrock 模型或推理配置inference profile的角色包含按需的流式调用权限。将信任策略限定到你的仓库与sts.amazonaws.comaudience。未使用 GitHub Environment 时subject 为PRrepo:OWNER/REPOSITORY:pull_requestmain分支的手动与定时运行repo:OWNER/REPOSITORY:ref:refs/heads/main将main替换为默认分支名仅当你打算在其他分支手动扫描时才放行其他分支。在Settings → Secrets and variables → Actions → Variables下添加三个仓库变量VariableValueAWS_ROLE_ARN上面创建的角色的 ARNAWS_REGION角色可调用模型的区域BEDROCK_MODEL_ID已获批的模型或推理配置标识符前提是 Bedrock 模型访问已开通。整个链路不需要长期 AWS 访问密钥也不需要 OpenAI API Key。确认目标仓库支持 GitHub Code Scanning 与 SARIF 上传私有仓库需要相应的 GitHub Code Security 许可。若只需要可下载报告可删除 SARIF 上传步骤以及security-events: write、actions: read权限。将codex-security.yml复制到目标仓库的.github/workflows/目录审阅后合入默认分支。该示例在复制过去之前不会开启扫描。在Actions → Codex Security (Amazon Bedrock) → Run workflow中先在默认分支跑一次基线再开一个同仓库测试 PR。在依赖该集成前检查目标仓库中的覆盖率、告警位置、去重与已修复告警行为。工作流配置要点PR 扫描将 GitHub 默认的 PR merge checkout 与事件的不可变 base SHA 做差异对比。草稿draft、fork 与 Dependabot 触发的 PR 会被跳过新运行会取消旧运行。工作流默认使用standard模式与high推理强度详见 scan options 与 Bedrock 配置。需要每周全仓扫描时取消schedule段的注释即可。工作流中的关键设计包括版本全部锁定CLI 版本CODEX_SECURITY_VERSION: 0.1.27、Node.js24.21.0Active LTS 线、Python3.14.7以及每个 Action 均固定到 commit SHACLI 在 checkout 之前安装在runner.temp中以--ignore-scripts --no-audit --no-fund安装且指定官方 registry避免仓库内 npm 配置被污染扫描参数集中管理--provider amazon-bedrock --model ... --mode standard --effort high --output-dir ... --jsonPR 事件额外追加--diff $BASE_SHA设置了FAIL_ON_SEVERITY时追加--fail-on-severity凭证最小化AWS 凭证仅注入扫描步骤扫描器拿不到GH_TOKEN或GITHUB_TOKENcheckout 使用persist-credentials: false。Job 与 AWS 会话各自最长 1 小时timeout-minutes: 60、role-duration-seconds: 3600如需更长扫描需同时调整二者以及 IAM 角色的会话时长上限。结果与退出码语义发现默认仅报告。设置FAIL_ON_SEVERITY: high后遇到 high/critical 发现会失败若要阻止合并再把该检查设为仓库规则中的 required check。CLI 退出码工作流结果0扫描完成导出并上传 SARIF1严重级别策略违规上传 SARIF 并保持 Job 失败其他非零值扫描失败或未完成Job 失败不上传部分 SARIF对于退出码2请检查日志、结果 JSON 与覆盖率报告缺失覆盖率不是一次干净的安全结果。全量扫描与差异扫描使用独立的 SARIF categorycodex-security/diff与codex-security/full因此差异结果不会覆盖全量基线。报告以七天制品形式保存即使扫描或 SARIF 上传失败也会保留被取消的 Job 可能不保存。只上传结果 JSON、report、coverage、findings 与 SARIF——不包含认证状态与原始 Agent 转录。报告可能包含敏感源码片段与漏洞详情请相应限制仓库访问与保留策略。信任边界该示例仅适用于 GitHub 托管 Linux runner 上的受信任贡献者同仓库 PR 可以修改工作流代码并获得模型调用凭证跳过 fork 并不能防御能推送分支的人。更广泛的贡献者场景下应通过受保护 GitHub Environment 要求 reviewer并同步更新 OIDC subject。不要使用pull_request_target携带凭证扫描不受信任的 PR 代码也不要在此 Job 中加入由 PR 控制的依赖安装、构建或命令。CLI 在 checkout 前于仓库之外安装AWS 凭证限定在扫描步骤所有额外扫描配置保持由维护者控制。只扫描你有权提交给所配置推理提供方的代码。Findings CSV 模板把既有发现批量发布到 Cloudexamples/findings.csv 是一个仅含表头的 CSV 模板供codex-security publish scan --to cloud --csv PATH使用。复制模板、逐行填充发现并在正式发布前先做校验npx openai/codex-security publish scan --to cloud \ --csv /path/to/findings.csv --dry-run --json模板的必需列如下必填列与输入规则详见 Publish findings to Cloudoccurrence_id,finding_id,title,summary,severity,confidence,status,close_reason,note,remediation,path,start_line,end_line结合 sdk/typescript/README.md 的说明CSV 发布还有以下实操要点建议用codex-security export --export-format csv的导出来生成符合列结构的文件深度扫描导出可能额外带candidate_id列--csv只支持 Cloud 目标且不能与扫描 ID--scan或目录--scan-dir混合使用--dry-run只做输入校验并打印发现不会登录或上传正式上传需要把 ChatGPT 凭证保存到文件中在 Codex 的config.toml中设置cli_auth_credentials_store file然后用 ChatGPT 重新登录。Cloud 发布会拒绝自动与 keyring 存储——即使存在auth.json也可能因过期或属于其他账号而被拒绝发布响应分为results回执或 dry-run 预览、failed错误与对应 scanDir与notAttempted取消前未处理项任一失败会导致命令以2退出取消则以130/143返回已获得的结果Cloud 回执不会存入扫描历史上传也不会自动重试回执缺失时请先在 Cloud 侧确认绝不重发已有确认回执的扫描。自定义验证演示让扫描器跑一个故意带漏洞的本地应用Custom validation demo 展示了 Codex Security 最独特的扩展点在扫描流程中插入一段自定义验证脚本对候选发现做运行时实证。演示应用是一个刻意存在越权读取漏洞的发票 API只包含合成数据请勿部署。验证脚本会启动真实的回环 HTTP 服务器、测试跨账号访问、保存证据并关闭服务器。它只依赖 SDK 支持的 Node.js 版本含 22.13与 TypeScript 编译器不需要额外包或 Docker。运行演示从仓库根目录构建 CLI 并运行pnpm --dir sdk/typescript install --frozen-lockfile pnpm --dir sdk/typescript run build node examples/custom-validation/run.mjsrun.mjs 会使用你现有的 Codex Security 登录态或 API Key把 TypeScript 夹具复制到临时目录、编译为 JavaScript再以scan --path app.mts --scan-prompt-file scan.md --validation-prompt-file validation.md --output-dir ... --headless发起扫描并打印扫描输出目录。可以追加额外 CLI 参数例如--model gpt-5.6-terra --effort high。只想单独跑 HTTP 证据、不触发扫描时pnpm --dir sdk/typescript run build:examples node examples/custom-validation/validate.mts --output reports/http-proof.json说明仓库中的验证源码文件实际名为 validate.mts编译后在临时目录生成可执行的 JS演示说明中以编译后的产物称呼它运行入口与 README 命令保持一致即可。扫描输出与预期结果在打印出的扫描目录中关注以下文件report.md完整的扫描报告artifacts/custom-validation/candidates.json固定的候选发现集合artifacts/custom-validation/http-proof.json观测到的真实 HTTP 响应artifacts/custom-validation/results.json结构化的判定结果。预期结果是一条可报告的跨账号发票读取。证据应显示匿名请求返回 401、Alice 读取自己的发票返回 200、Alice 读取 Bob 的发票返回 200、且server_stopped: true。如果自定义验证无法完成扫描直接失败不会回退到默认验证流程。验证契约证据驱动而非源码推断app.mts 中故意埋下的漏洞一目了然——createServer只校验Authorization中的 token 能映射到某个用户却不校验发票归属注释// BUG: authentication does not establish ownership of this invoice.于是任何登录用户都能读任意发票。validate.mts 则通过真实 HTTP 请求收集证据匿名读1002必须 401、Alice 读自己的1001必须 200、Alice 读 Bob 的1002用于判定越权三个请求都有 5 秒超时完成后在finally中关闭服务器并写盘 JSON。validation.md 定义了验证契约是理解该机制的关键在提供的仓库根目录运行node validate.mjs用--output传入扫描目录内artifacts/custom-validation/http-proof.json的绝对路径夹具已被编译为 JS脚本在127.0.0.1的临时端口启动服务器、用合成身份发三个 HTTP 请求并关闭服务器——该本地服务器是唯一被授权的测试目标不得安装包或联系外部服务读取保存的 JSON匿名必须 401、自有账号必须 200、server_stopped必须为 true若脚本或这些控制失败返回status: incomplete并说明原因不得用纯源码分析替代验证对每个越权候选cross_account_read为 true 时返回reportable其他账号请求返回 403/404 时用suppressed出现意外或无法得出结论的结果用deferred并解释实际 HTTP 结果、在artifact_paths中引用http-proof.json为每个候选恰好返回一条结果无关候选以明确的证据缺口延迟处理除非观测行为支持否则 severity 与 impact 保持null只返回所需的结构化结果不修改规范扫描文件。适配到自己的项目时把 validation.md 改成你自己的测试、断言与清理逻辑即可Docker 化项目可以在同一份提示中让它运行你现有的 compose 或测试脚本而无需使用validate.mts。扫描提示见 scan.md它约束发现阶段保持纯源码分析Keep discovery source-only把运行时验证留给验证阶段。Azure Pipelines Amazon Bedrock集中式全量与提交差异扫描azure-pipelines/README.md 演示了从中央托管的工具仓库运行 Codex Security扫描配置好的 Azure Repos Git 仓库支持手动全量扫描与相对某基线提交的差异扫描、通过 OIDC 获取 AWS 短时凭证、产出报告制品并可选地把 SARIF 发布到目标仓库的 Advanced Security 视图。它不需要改动 Codex Security 运行时也不需要自定义扩展。它面向 Azure DevOps Services 与微软托管的 Linux agent不自动纳管仓库、不创建分支策略、也不自动校验 PR。流水线定义应放在受信任的工具仓库中目标仓库自身不需要流水线文件。前置配置把 azure-pipelines.yml 复制到工具仓库。将resources.repositories.target.name改为已获批的Project/Repository并调整默认targetRef。在经审阅的 YAML 中固定仓库名不要在排队时接受任意扫描目标在组织安装当前版本的 AWS Toolkit for Azure DevOps 扩展创建名为codex-security-bedrock的 AWS 服务连接选择Use OIDC并填 AWS 角色 ARN不设置访问密钥。把角色信任限制到服务连接实际的 issuer、audience 与 subject并只授权该流水线使用此连接设置awsRegion与bedrockModelId为可用且获批的模型或推理配置角色只授予针对这些资源的 Bedrock 调用权限。请求的 AWS 会话为 1 小时与 Job 超时一致角色需允许该时长创建指向所复制 YAML 的流水线给项目的构建服务身份授予目标仓库的读权限并授权仓库资源。跨项目 checkout 需要在目标项目中显式授权不要通过关闭项目级 Job 授权来绕过缺失授权仅跑制品时保持publishToAdvancedSecurity: false。要启用原生发现视图需先在目标仓库开通 GitHub Code Security / Advanced Security 许可并授予流水线发布权限然后在排队运行时显式开启。YAML 锁定了 CLI、Node 与 Python 版本任务使用当前主版本Azure Pipelines 会在这些主版本内解析兼容的任务更新升级示例时请复核锁定版本。运行参数在受信任工具分支上选择Run pipeline后设置参数含义targetRef目标分支或标签默认refs/heads/mainscanModefull跑基线或diff相对某基线修订做差异扫描baseRevision仅diff使用默认HEAD^前一提交追求可复现时建议指定精确的 base commit SHAfailOnSeveritynone为仅报告选择严重级别后达到该级别及以上的发现将使 Job 失败publishToAdvancedSecurity完成设置后选择是否启用原生 SARIF 发布先跑一次全量扫描作为基线之后的提交差异扫描选择目标分支与历史中存在的基线修订。checkout 会拉取完整历史Codex Security 针对检出的提交解析差异——扫描的是已提交的变更而不是自动发现的 PR。可选的发布步骤使用target仓库资源的元数据而非工具仓库的构建元数据因此要把它的 alias 与advancedsecurity.publish.repository保持同步。全量与差异结果使用独立 category部分差异结果不会覆盖全量基线同时要记住差异结果是该差异的快照不是完整仓库清单基线仍需用全量扫描持续跟踪。结果与失败处理codex-security流水线制品包含result.json、可用的report.md、coverage.json、findings.json导出成功时还有results.sarif。请检查 JSON/报告中的发现、覆盖率、运行时间与用量缺失或不完整的覆盖率不算干净扫描。扫描退出码流水线行为0扫描完成导出 SARIF 并保留报告1严重级别策略失败仍导出 SARIF 并保留报告但保持 Job 失败其他非零值扫描失败或未完成保留可用报告但不导出或发布 SARIF导出或发布失败同样会使 Job 失败取消会跳过扫描后步骤因此取消的运行不保证有制品。首次实际运行时请验证目标仓库与提交本地验证无法证明组织内的 OIDC 信任、权限、模型访问或 SARIF 摄取链路。信任与推广边界限制谁能编辑/排队这条特权流水线并使用其 AWS 服务连接把扫描代码与模型输出视为不受信任输入。OIDC 避免了长期密钥但不等于携带凭证运行不受信任代码是安全的CLI 在目标 checkout 之前、仓库之外安装npm 生命周期脚本被禁用checkout 不持久化凭证AWS 任务只把临时凭证注入扫描步骤CLI 拿不到任何 PAT 或 Azure 访问令牌报告可能包含源码摘录与漏洞细节限制制品访问并配置项目流水线运行的保留策略。示例只保留选定报告不保留原始扫描状态、转录或认证文件若要对 Azure Repos PR 做自动检查需要配置目标分支的build validation 策略并采用 PR 感知的 checkout/流水线设计——YAML 中的pr:触发器并不会启用 Azure Repos PR 校验把这条手动流水线原样挂到策略上扫描的仍是它配置的目标 ref而不一定是 PR。npm 包边界examples 目录仅存在于仓库顶层examples/目录只在仓库中提供不会打包进openai/codex-securitynpm 包。npm 包由 sdk/typescript/package.json 构建其files列表只包含 CLI 启动器、编译后的 SDK、打包好的插件、许可证与包 README包内容校验会拒绝预期之外的任何文件。插件自带的示例产物是独立的一部分仍随包分发。因此在 CI 或本地引用本指南中的示例时请直接从本仓库复制对应文件到你的工程中。组合建议按团队形态选择入口以 GitHub 为主、成员受信任、需要 PR 级反馈 → GitHub Actions 工作流配合FAIL_ON_SEVERITY与 Code Scanning 视图使用 Azure Repos、希望集中托管流水线 → azure-pipelines.yml先全量基线再差异扫描需要时再开启 Advanced Security 发布已有第三方扫描结果或历史发现 → 基于 examples/findings.csv 用--csv --dry-run先校验再发布需要验证静态扫描发现的漏洞真的可利用 → 参考 custom-validation 演示把运行时证据写进artifacts/custom-validation/http-proof.json用reportable/suppressed/deferred三态精确表达每个候选的处置。无论选择哪条路径请遵守各示例的信任边界凭证最小化、CLI 在仓库外安装、只发布必要报告、并在正式依赖前先在默认分支跑通基线。赞分享应用安全漏洞扫描AI 应用【免费下载链接】codex-securityOpenAIs Codex Security CLI and TypeScript SDK for finding, validating, and fixing security vulnerabilities. npm: https://www.npmjs.com/package/openai/codex-security项目地址https://gitcode.com/gh_mirrors/co/codex-security点击查看免费下载相关推荐终极Stack CI/CD集成指南从Azure Pipelines到GitHub Actions的完整实战方案终极Stack CI/CD集成指南从Azure Pipelines到GitHub Actions的完整实战方案 Stack作为Haskell开发的核心工具其Codex Security 自定义验证Custom Validation实战用真实 HTTP 证据链验证越权漏洞Codex Security 自定义验证Custom Validation实战用真实 HTTP 证据链验证越权漏洞 本文以 Codex Security应用安全漏洞扫描AI 应用OpenAI Codex Security 自定义验证Custom Validation实战用本地 HTTP 证据判定越权读取漏洞OpenAI Codex Security 自定义验证Custom Validation实战用本地 HTTP 证据判定越权读取漏洞 本指南聚焦 codex应用安全漏洞扫描AI 应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表