vecna-labs/open-range

GitHub: vecna-labs/open-range

OpenRange 是一个以清单为先的企业网络靶场,通过构建不可变快照并运行红蓝绿回合,解决静态任务训练效果弱的问题。

Stars: 3 | Forks: 0

OpenRange

OpenRange: validator-admitted enterprise cyber range

Package: open-range Runtime: red/blue/green License: Apache 2.0
OpenRange 是一个以清单为先的网络靶场,用于在 限定的企业世界中对红蓝方代理进行训练。 它将业务清单编译为世界, 使用私有参考追踪和确定性探针验证该世界, 将其冻结为不可变快照,并运行带有红、蓝、绿用户动态的回合。 此分支将 OpenRange 作为一个可安装的 Python 包和 CLI 公开。 它不是 `main` 中的遗留 OpenEnv 服务器/客户端堆栈。 ### 📞 社区通话 我们每周 **周五中午 12:00(中部时间)** 举行 Open Range 社区通话。 - 🎥 [Google Meet](https://meet.google.com/zuj-skfh-xjk) - 📱 拨入:[(US) +1 443-671-4919](tel:+14436714919) · PIN: `320 286 452#` · [更多号码](https://tel.meet/zuj-skfh-xjk?pin=6302524387334) - 💬 [加入我们的 Discord](https://discord.gg/NuBpuCSN) ## 为何选择 OpenRange 静态网络任务对于评估很有用,但它们是较弱的训练目标。 它们是固定的、狭窄的、容易记住的,并且通常是纯进攻性的。 OpenRange 旨在实现相反的形式:一系列可重放、可在快照之间变异、并可用于运行时和训练数据生成的企业类世界。 | | 静态网络任务 | OpenRange | |--|-------------------|-----------| | **世界** | 一个固定的谜题 | 来自清单的准入企业世界 | | **重置** | 再次相同的挑战 | 从池中加载存储的快照 | | **验证** | 通常是手动或特定基准的 | 使用私有引用的确定性准入 | | **角色** | 通常是纯红色 | 红色、蓝色和绿色共存于同一运行时 | | **训练数据** | 外部转录或日志 | 来自准入快照的本地分支追踪 | ## 你可以做什么 - 从严格清单构建并准入世界 - 在不可变快照上运行红/蓝/绿回合 - 从训练池和评估池中采样快照 - 为训练生成本地分支追踪数据集 - 在运行时使用离线准入进行本地迭代,或在运行时使用 live 验证 Kind - [架构](docs/architecture.md) - [训练数据规范](docs/training-data-spec.md) - [基准进攻覆盖](docs/benchmark-offensive-coverage.md) - [效果接地](docs/effect-grounding.md) - [弱点生命周期](docs/weakness-lifecycle.md) - [NPC 配置文件](docs/npc-profiles.md) ## 快速开始 ### 1. 安装 ``` uv sync uv run openrange --help ``` 或直接安装软件包: ``` pip install . openrange --help ``` ### 2. 运行小型演示 这是在不设置 Kind 的情况下看到软件包端到端工作的最快方式: Kind: ``` uv run openrange-demo ``` 你也可以指向一个已提交的清单: ``` uv run openrange-demo --manifest manifests/tier1_basic.yaml ``` ### 3. 本地准入快照 对于首次本地运行,请使用显式的离线配置文件: ``` uv run openrange admit \ -m manifests/tier1_basic.yaml \ -o /tmp/openrange-build \ --store-dir /tmp/openrange-snapshots \ --validation-profile graph_only ``` 然后将运行时重置到已准入的快照: ``` uv run openrange reset \ --store-dir /tmp/openrange-snapshots \ --mode blue_only_live \ --sample-seed 7 ``` `graph_only` 是最经济的离线路径。`full` 和 `graph_plus_live` 需要 一个基于 Kind 的实时环境。 ### 4. 生成追踪数据 ``` uv run openrange traces \ -m manifests/tier1_basic.yaml \ -o /tmp/openrange-traces \ --roots 3 \ --mutations 1 ``` 这将写入原始决策行、SFT 准备好的行,以及与已准入快照关联的小型数据集报告。 ## Python API ``` from open_range import BuildConfig, BuildPipeline, EpisodeConfig, OpenRange, load_bundled_manifest pipeline = BuildPipeline() candidate = pipeline.build( load_bundled_manifest("tier1_basic.yaml"), "/tmp/openrange-build", BuildConfig(validation_profile="graph_only"), ) snapshot = pipeline.admit(candidate) env = OpenRange() state = env.reset(snapshot.snapshot_id, EpisodeConfig(mode="blue_only_live")) decision = env.next_decision() print(state.snapshot_id) print(decision.actor, decision.obs.sim_time) ``` ## 从这里开始 - [一个回合如何工作](docs/how-an-episode-works.md):运行时实战演练 - [架构](docs/architecture.md):软件包层级与运行时边界 - [V1 范围](docs/v1-paper-scope.md):产品与声明边界 - [训练数据规范](docs/training-data-spec.md):标准追踪/导出契约 - [弱点生命周期](docs/weakness-lifecycle.md):弱点实现、准入与变异 - [基准进攻覆盖](docs/benchmark-offensive-coverage.md):网页漏洞切片与目标接地 - [效果接地](docs/effect-grounding.md):接地效果与缓解语义 ## 范围 当前分支专注于验证器准入的企业网络安全训练切片: - 精确的 Web 漏洞以及配置、密钥、流程和遥测弱点 - 私有参考攻击与防御追踪 - 不可变快照及快照之间的变异 - 红色利用到目标的进攻行为 - 蓝色检测、遏制以及在绿色用户噪声下的连续性 它不会公开旧版公共黄金路径架构或 `main` 中的遗留 OpenEnv HTTP 服务器接口。 ## 可选扩展 训练依赖项是可选的: ``` uv sync --extra training ``` 该软件包还附带一个启动示例,用于比较廉价模拟平面追踪与运行时回合: ``` uv run openrange-bootstrap-demo ``` ## 许可证 针对已准入快照及顺序变异的**环境端评估**: ``` uv run scripts/eval_rollouts.py \ --manifest manifests/tier1_basic.yaml \ --mutations 3 \ --out /tmp/openrange-rollout-eval.json ``` 这将生成一个包含以下内容的 JSON 报告: - 基础快照及顺序准入子世界 - 引导追踪胜者/回合数 - `joint_pool`、`red_only`、`blue_only_live` 和 `blue_only_from_prefix` 模式的运行时回滚结果 - 按模式汇总的整体胜率、奖励、连续性与回合数 ## 追踪生成 针对与已准入快照及变异绑定的本地分支数据集: ``` uv run scripts/generate_traces.py \ --manifest manifests/tier1_basic.yaml \ --roots 3 \ --mutations 1 \ --outdir /tmp/openrange-traces ``` 或通过 CLI: ``` openrange traces -m manifests/tier1_basic.yaml -o /tmp/openrange-traces --roots 3 --mutations 1 ``` 生成器还会写入角色/来源分片,例如: - `sft_red_runtime.jsonl` - `sft_blue_runtime.jsonl` - `sft_red_all.jsonl` - `sft_blue_all.jsonl` ## 实验性模型探针 这是一个可选的有界纯红色探针,用于加载小型 LoRA 适配器,并在每个运行时决策点对其进行评分。 它故意比完整策略评估更窄:它是 基于参考条件的纯红色,因为当前的小型引导数据集还不是完整的红/蓝运行时动作语料库。 ``` uv run scripts/eval_model_rollouts.py \ --adapter /tmp/openrange-sft-tiny-split/adapter \ --manifest manifests/tier1_basic.yaml \ --mutations 3 \ --out /tmp/openrange-model-rollout.json ``` ## 容器镜像 根 [Dockerfile](Dockerfile) 现在为独立软件包构建了一个 CLI 镜像: ``` docker build -t openrange . docker run --rm openrange --help ``` ## 验证 ``` uv run -m pytest tests -q ``` ## 开发检查 ``` uv sync uv run ruff format . uv run ruff check . uv run pytest uv run pre-commit install uv run pre-commit run --all-files ``` Apache 2.0
标签:OpenRange, Python包, TGT, 不可变快照, 企业仿真世界, 企业级网络训练, 冻结快照, 可回放世界, 开源网络靶场, 攻防演练, 文档结构分析, 清单编译, 清单驱动世界, 确定性探测, 私有参考跟踪, 红队蓝队训练, 绿色用户, 网络靶场平台, 自演进网络靶场, 训练数据生成, 请求拦截, 运行时红蓝绿, 逆向工具