Skip to content

Releases: D1a0y1bb/CloverSec-CTF-Build-Dockerizer-skill

v2.2.0-r7

13 Jun 12:52
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

修复

  • 按官方 Skill 校验规则移除非标准顶层字段,把 challenge.yaml--project-dir 的输入提示移入 SKILL.md 正文和 agents/openai.yaml 默认提示。
  • 保留 Docker artifact 工作流,继续输出 environmentdocker_artifactsxlsx_fields,用于归档阶段生成 amd64 镜像包、导出 tar 包和表格字段。
  • 删除已不适合随 Git 管理的 Linux-QEMU 示例 initrd.img,并通过 .gitignore 阻止该大文件再次进入源码提交。

验证

  • 本版本发布前执行官方 Skill 校验、发布脚本校验与 release build。

v2.2.0-r6

11 Jun 11:26
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

修复

  • 修复 smoke_test.sh 在 macOS 上生成 solve_probe 临时 YAML 时可能得到字面量 XXXXXX.yaml 文件名的问题,改为使用随机临时目录。
  • derive_config.py 保证 gatesmanual_required 一致;已有 challenge.yaml 明确提供 stack、端口和启动命令时,关闭对应确认 gate。
  • audit_input.py 区分明确配置和自动探测:显式 challenge.stack 优先,自动探测结果作为 detected_stack_hint 复核提示,不再覆盖明确配置。
  • Pwn 输入新增源码 flag 路径提示,识别 flag0flag1flag.txt/home/ctf/flag* 等线索,并要求确认 challenge.flag.sync_paths
  • workflow.py 新增 reviewed-render --reason "...",用于低风险、明确配置或已接受 proposal 的快速审查渲染;mixed/dirty/high_risk 输入仍会被 gate 阻断。
  • 新增 src/CloverSec-CTF-Build-Dockerizer/docs/solve_probe_recipes.md,提供 HTTP、TCP、container_exec、Pwn nc 和动态 flag 路径的业务断言片段。

验证

  • check_fast.sh 通过;validate_examples.sh 通过,39 通过、0 失败、0 跳过。
  • smoke_test.sh --case python-flask-basic 通过,challenge.verification.solve_probe 使用随机临时目录中的 solve_probe.yaml 执行成功。
  • release_build.sh --with-smoke 通过,dist/CloverSec-CTF-Build-Dockerizer-v2.2.0-r6.release-status.json 显示 release_ready=true
  • 定向行为验证通过:显式 stack=python 优先于 AI 探测提示;Pwn flag0/flag1 会提示并转换为 /home/ctf/flag0/home/ctf/flag1reviewed-render 可渲染低风险 Node 示例,并会阻断未接受 proposal 的 Pwn 输入。
  • 真实 LLM A/B 使用 gpt-5.4、4 组输入比较 r5 安装版与 r6 当前工作区:r5 为 2/4,r6 为 4/4。报告保存在 开发文档(不同步)/llm_ab_v220_r6_retry_20260611_191223/REPORT.md

v2.2.0-r5

11 Jun 10:46
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

修复

  • 运行时文档明确 challenge.verification.solve_probe 的直接执行入口:bash scripts/smoke_test.sh --case python-flask-basic。此前 r4 已有正式 example,但真实 LLM A/B 仍会只给出 render.py / validate.sh,没有走到业务入口断言。
  • examples/python-flask-basic/README.md 不再让用户去仓库根 README 查命令,改为写出安装版 Skill 可直接执行的命令。
  • SKILL.md、scripts README 与 validation_guide.md 收紧 flag.sync_paths 说明:默认同步发生在平台调用 /changeflag.sh 时;只有用户明确说明平台不会调用 /changeflag.sh,才把启动时同步写成题目特定兼容逻辑。
  • doc_guard.py 允许运行时文档引用 smoke_test.sh,但继续阻断发布治理和源码维护说明进入 Skill 运行包。

验证

  • check_fast.sh 通过;smoke_test.sh --case python-flask-basic 通过并执行 challenge.verification.solve_proberelease_build.sh --with-smoke 通过,release_ready=true
  • 真实 LLM A/B 使用 gpt-5.4flag_sync_lifecyclesolve_probe_example 两组输入:r4 为 0/2,r5 为 2/2。报告保存在 开发文档(不同步)/llm_ab_v220_r5_explicit_context_retry_20260611_183710/REPORT.md

v2.2.0-r4

11 Jun 09:58
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

修复

  • python-flask-basic 正式加入 challenge.verification.solve_probe 示例,smoke_test.sh --case python-flask-basic 可直接验证从 challenge.yaml 读取业务入口断言的链路。
  • 文档明确 challenge.flag.sync_paths 的生效边界:它由生成的 /changeflag.sh 同步业务路径,不代表任意 start.sh 启动时都会自动写好 flag0/flag1 等路径。
  • SKILL.md、schema、平台契约、栈手册和脚本 README 同步提醒:真实 Pwn/Web 题若不读 /flag,仍需看源码配置业务路径并执行 smoke probe 或实际拿 flag 验证。

验证

  • r4 发布前验证覆盖 check_fast.shvalidate_examples.shsmoke_test.sh --case python-flask-basicrelease_build.sh --with-smoke

v2.2.0-r3

11 Jun 08:39
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

变更

  • Compose/Vulhub-like 导入增强:draft 保留 ports、environment、depends_on、volumes、networks、healthcheck、command/entrypoint 等线索;renderable subset 支持 image tag/digest 别名匹配、host/container 端口带入、environment 带入和 depends_on 写回。
  • check-service 生成器增强:HTTP 支持状态码、正向/反向文本和 header 断言;Redis 支持 key/value 检查;MySQL 支持 query 结果断言;SSH 支持 banner 断言。
  • smoke_test.sh 增加可选 smoke_assert.yaml 业务断言,支持 HTTP、TCP 和容器内命令;已有 smoke_assert.sh 保持兼容。
  • Linux-QEMU 样例维护规则细化:Fragnesia 继续作为外部真实资产样例;Copy Fail 记录为候选负例,缺资产 manifest、boot、flag readback 与 PoC 证据前不升级为真实样例。
  • 新增 scripts/check_fast.sh,日常维护只执行 Python/Bash 语法、文档治理和 git diff --check
  • smoke_test.sh 增加 --case <name>SMOKE_CASES=a,b,可只跑受影响的示例,避免每次都执行全量 Docker smoke。

修复

  • 真实历史题复刻路径增强:Pwn/BOF 输入会优先识别 ELF、C 源码、Makefile、xinetd/socat/tcpserver/chroot 等强证据,减少被遗留 package.json 或前端说明页误判为 Node 的情况。
  • 历史运行时保留更明确:渲染基础镜像优先级调整为 --base-image > CLI --runtime-profile > challenge.base_image > challenge.runtime_profile > infer/default,避免 challenge.yaml 中明确写出的 PHP 7.4、Node 14、JDK 8 等老环境被自动推断覆盖。
  • parse_config_block.py 保留更多已确认字段,包括 runtime_depsbuild_depsextra.*flag.sync_pathsverification.solve_probeplatform.docker_platformsupport_level
  • workflow.py accept --refresh 可在用户确认后重新记录当前 challenge.yaml hash,适配人工修正配置后继续走 gate 的场景。
  • workflow.py --pretty 与子命令 --pretty 兼容,等价于 --format json,避免真实使用中因参数不支持中断。
  • 动态 flag 同步能力增强:changeflag.sh 可把动态 flag 同步到题目业务实际读取路径,避免题目读 /home/ctf/flag 等路径时只更新 /flag
  • validate.sh 明确说明自身只验证平台交付契约,不证明题目已经可解;如果配置 verification.solve_probe,会提示业务入口断言应在 smoke 阶段执行。
  • smoke_test.sh 支持 challenge.verification.solve_probe,可直接从 challenge.yaml 生成业务断言并执行 HTTP/TCP/容器命令类检查。
  • 发布包路径继续校验,安装版 Skill 文档不再引用 src/CloverSec-CTF-Build-Dockerizer/ 这类安装后不存在的源码路径。

验证

  • 真实 LLM A/B:修复前 HEAD 为 3/6,当前 r3 候选为 6/6;Pwn BOF 混合输入、PHP 7.4 保留、业务 flag 路径 + solve_probe 均从失败变为通过。
  • 本地完整验证通过:check_fast.shgolden_snapshot.pyplatform_matrix.py --profile releasevalidate_build_test.pyvalidate_examples.sh、Linux-QEMU Fragnesia preflight、release_build.sh --with-smoke 均通过。
  • Docker smoke:35 通过 / 0 失败 / 4 按策略跳过。
  • 定向反馈验证通过:真实 Pwn ELF + 遗留 package.json 识别为 pwn;PHP Dockerfile 保持 FROM php:7.4-cli;动态 flag 精确写入 flag{abc}verification.solve_probe smoke 通过。

v2.2.0-r2

11 Jun 06:06
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

修复

  • Bundle/Recipe 支持显式 custom 组合:用户明确提供 base image、安装命令、启动命令、端口和服务清单后,可以生成单容器多服务交付目录;信息不完整时仍返回 BUNDLE_UNSUPPORTED_COMBINATION,不自动猜测依赖或版本。
  • Linux-QEMU release/manual 验证补齐完整链路:新增外部 VM 资产清单校验、CI full check、Fragnesia PoC 自动复现脚本,可覆盖 Docker build、QEMU TCG boot、guest flag 写入和 PoC 验证。
  • 修复 Linux-QEMU 动态 flag 写入顺序:在 QEMU guest 启动前通过外层 /start.sh 写入 guest rootfs,避免 guest 已挂载 rootfs 后再改文件导致 flag 不生效。
  • 修复 flag{...} 在 Bash 参数展开中多出 } 的真实样例问题,并通过 Fragnesia 真实资产验证 guest /root/flag 与动态 flag 一致。
  • golden_snapshot.py 适配 Scenario 确认门槛,回归场景显式使用 --accepted --reason,避免测试脚本绕过当前交互规则。
  • 运行时 Skill 文档继续聚焦题目构建:移除安装包内不必要的源码发布治理说明,并由 doc_guard.py 阻止源码维护命令进入运行时文档。

验证

  • 真实 LLM A/B:已安装 v2.2.0 入口为 3/4,当前 r2 候选为 4/4;custom Bundle 用例从“不支持”变为正确进入显式 custom proposal。
  • 完整 Docker smoke:35 通过 / 0 失败 / 4 跳过。
  • Linux-QEMU full check:Docker build、QEMU TCG boot、guest SSH、动态 flag、PoC 均通过。

v2.2.0-r1

11 Jun 03:37
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

修复

  • 修复安装版 Skill 文档路径表述,运行时文档统一使用相对于 SKILL.mddocs/data/scripts/templates/examples/ 路径。
  • doc_guard.pyrelease_build.py 增加发布包运行时路径检查,阻止 src/CloverSec-CTF-Build-Dockerizer/ 这类源码仓库前缀进入安装包文档。
  • 补齐 linux_qemu_manual_check.sh 在 Skill 运行包内的入口,避免文档引用存在但发布包缺脚本。

发布

  • 本版本计划通过 publish_release.sh --wait-release-full-check 发布,等待 GitHub Actions release-full-check job 成功后再公开 GitHub Release。
  • 本版本不改变 challenge.yaml schema、Proposal Gate、render/validate 契约或 Linux-QEMU 渲染行为。

v2.2.0

10 Jun 11:10
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

新增

  • Build_test/ 升级为真实样例池,新增 cases.yaml、每个样例的 case_note.md 和独立说明文档。
  • 新增 scripts/validate_build_test.py,按 cases.yaml 对真实样例执行输入审计与 Docker 契约期望匹配,支持 --format json--case--fail-fast
  • 首批样例覆盖现有历史样例、cPanel/WHM 仿真、Linux-QEMU 缺资产、Web 历史题、Pwn compose/xinetd 输入和 PHP compose 输入。
  • 新增 Linux-QEMU release/manual 验证套件:linux_qemu_manual_validation.mdscripts/linux_qemu_manual_check.sh 和真实 Fragnesia 外部资产记录。
  • 新增 Bundle/Recipe 原型,提供两个固定组合、render_bundle.pyvalidate_bundle.py、schema、设计文档和输入示例。
  • 新增 compose import draft:import_compose.py 输出 scenario.draft.yamlscenario.renderable.yamlimport-report.json,并提供导入示例。
  • 新增 generate_check_stub.py,支持 HTTP/TCP/Redis/MySQL/SSH check-service 可编辑骨架。
  • 新增 validation_guide.md,承接 SKILL.md 中迁出的 validate、check-service、Linux-QEMU 静态校验和发布前检查细节。
  • 新增 orchestrated_workflow.md,承接旧版 SKILL.md 的 CONFIG PROPOSAL、OK 门槛和 5 项确认协议。

变更

  • SKILL.md 改为渐进加载入口,只保留任务定位、首选工作流、门槛规则、输入路由和按需读取索引。
  • doc_guard.py 增加 SKILL.md 行数、关键入口和大段迁出内容检查,防止入口文件再次膨胀。
  • stack_cookbook.md 补充旧版 SKILL.md 的 12 栈最小模板库索引,validation_guide.md 补充模板变量速查。
  • 移除运行包中的迁移映射文档,避免 Agent 把审计记录当作执行手册;长参考文档补充目录以提升按需读取质量。
  • validate.sh 读取 support_level,发布 digest 门禁对 partial 原型样例记录 WARN 而不阻断;Redis 7.2 BaseUnit 组件改用 digest 固定镜像。
  • validate.sh 的 Linux-QEMU debugfs 检测支持 sif 别名,避免真实 changeflag.sh 被误判为没有写入 guest rootfs。
  • validate_examples.sh 识别 bundle.yaml,在临时目录渲染并校验 Bundle 示例,保持 examples 只读。
  • validate_examples.sh 识别 compose 示例,默认校验导入后的可渲染 Scenario 子集。
  • validate.shCHECK_REVIEW_REQUIRED 视为未确认 check-service 标记,继续阻断发布。

验证

  • Golden snapshot 对比基线:P1.8 前 29d470e,P1.8 后 108977d
  • SKILL.md 从 1089 行降到 206 行,入口减少约 81.1%;字节数从 39254 降到 10204,减少约 74.0%。
  • OK 门槛、5 项确认、低风险 Node proposal/render/validate、Linux-QEMU 缺资产审计均保持一致。
  • Bundle partial 严格 digest 和 Scenario Vulhub-like 严格 digest 从失败变为通过。
  • 报告保存在 开发文档(不同步)/golden_snapshot_p18/REPORT.md开发文档(不同步)/golden_snapshot_p18/summary.json;该目录不进入发布包。

v2.1.2

10 Jun 06:30
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

新增

  • 新增 workflow.py 推荐入口,提供 intake / propose / accept / render / validate / status 命令,并在题目目录维护 .ctfbuild/session.json、proposal 与 accepted proposal 状态文件。
  • 新增 audit_input.py 输入审计,输出 risk_levelrecommended_pathsupport_levelverification_levelmanual_requiredfindings[]derive_config.py 的 JSON/YAML 输出同步携带 input_audit
  • render.py 新增 Proposal Gate、--format text|json--manual --reason。混合输入、脏目录、高风险输入或 derive gates 为 true 时,默认要求 accepted proposal。
  • validate.sh 新增 --json-summary <path>validate_scenario.py 新增 --format text|json,失败结果可稳定输出结构化错误码。

变更

  • validate_context.py 在传入 challenge.yaml 后如遇文件缺失、PyYAML 缺失或 YAML 解析失败,会返回非 0,并统一归类为 CONFIG_CONTEXT_PARSE_FAILED
  • 发布检查升级:release_build.py 支持 --with-smoke、SkillHub metadata 检查、当前版本 CHANGELOG 标题检查、agents/ 打包检查、SBOM 来源记录和 release-status.json
  • publish_release.sh 正式发布默认执行 Docker smoke;如需跳过必须传入 --skip-smoke-with-reason "..."。找不到当前版本 release notes 时发布失败。

发布

  • 本版本聚焦工作流门槛、输入审计、结构化错误与发布前检查,不扩展样例池,不引入 Bundle/Recipe 或 Scenario import,也不重写 SKILL.md 主体。

v2.1.1-r1

10 Jun 05:02
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

v2.1.1-r1 - 2026-06-10

本 GitHub release 重新发布 v2.1.1 Skill 包。Skill 包内部版本仍是 v2.1.1;使用 v2.1.1-r1 tag 是因为原 v2.1.1 release 已 immutable,无法替换或追加资产。

对应 commit:a9577b2d631625a07f2259a0098b3c32e4cdb64d

主要修复:

  • 三语 README 增加 v2.1.1 发布修复说明,公开 docs 标题同步到当前版本。
  • CHANGELOG.md 补充 v2.1.1 文档同步与检查规则说明。
  • scripts/doc_guard.py 增加当前版本说明章节检查,防止只改顶部版本号而遗漏正文说明。
  • SKILL.md、schema、template、stack cookbook、validate 提示文案统一为当前版本说明;v2.1.0 仅保留为 linux-qemu 引入版本的历史说明。

资产 SHA256:

  • CloverSec-CTF-Build-Dockerizer-v2.1.1.zip: a7b846383225c247daa9aaa9ee93dc605ca5fa3dd79baeab0a028a80abd0b164
  • CloverSec-CTF-Build-Dockerizer-v2.1.1.sbom.spdx.json: deaee706da00635976dd1d2821648ad161fbe38aec24b43e91c1e32cec6afff6
  • CloverSec-CTF-Build-Dockerizer-v2.1.1.sbom.cdx.json: ed3a8a2650d2ee1aa123e9c455b365ff08f0ab90119cbf29aa0b10db99205944
  • CloverSec-CTF-Build-Dockerizer-v2.1.1.deps.txt: a357d865ef0c65c2ad8da15c53b259c721272c4214fc28ae0c698a2b92377076