
## 本地渗透测试,本地验证
该仪表板专为解决通常容易混乱的环节而构建:确定哪些是真实的,哪些已有证据,以及哪些仍需进一步深入检查。
```
nyx-agent scan ./apps/web --target-url http://127.0.0.1:3000
nyx-agent serve
```
目标保持在本地。API 默认绑定到 loopback。运行历史、traces、证据和分流(triage)状态都保存在 Nyx Agent 产品存储中。

## 运行的具体流程
| 阶段 | 具体操作 |
|---|---|
| **Scope** | 加载项目 repos、目标 URL、启动配置、先前的发现以及 runtime 设置。 |
| **静态扫描** | 对源代码树运行 `nyx` 并规范化扫描器输出。 |
| **探索** | 从应用和代码库中构建路由、表单、认证和 API 上下文。 |
| **候选筛选** | 将扫描器的发现和 runtime 信号转化为值得检查的具体问题。 |
| **验证** | 向开发应用发送针对性的实时检查,并收集请求、响应和 trace 证据。 |
| **攻击阶段** | 可选的破坏性本地阶段,针对开发应用运行专项专家模块、跨域链式追踪器和最终攻击分流(triage)。 |
| **链式推理** | 让链式 agent 检查图谱证据,并且当配置了可选的提供商授权的 CLI runtime 时,可读取/搜索 repo 代码,从而将底层线索关联为更具影响力的攻击路径。 |
| **分流** | 存储已验证的漏洞,并附带可信度、状态、证据和运行归因。 |

## 实时渗透测试的运作方式
```
flowchart TD
Start["Start pentest"] --> Scope["Load repos, config, target URL"]
Scope --> Launch["Launch or attach to dev app"]
Launch --> Static["Run nyx static scan"]
Static --> Explore["Explore routes, forms, auth, APIs"]
Explore --> Candidates["Create candidate vulnerabilities"]
Candidates --> Verify["Verify against the live target"]
Verify --> Evidence["Store proof, trace data, confidence"]
Evidence --> AttackGate{"Unsafe attack agent enabled?"}
AttackGate -- "No" --> Chain["Source-aware chain reasoning"]
AttackGate -- "Yes" --> Specialists["Run seven focused attack specialists"]
Specialists --> Hunter["Hunt critical cross-domain chains"]
Hunter --> AttackTriage["Deduplicate, classify dev-only noise, and refine proof"]
AttackTriage --> Promote["Record new candidates, attempts, and verified vulns"]
Promote --> Chain
Chain --> ChainDecision{"Terminal live proof?"}
ChainDecision -- "Yes" --> VerifiedChain["Promote verified chain vulnerability"]
ChainDecision -- "No" --> NeedsChainVerify["Keep as NeedsChainVerification"]
VerifiedChain --> Triage["Show verified vulnerabilities and proof"]
NeedsChainVerify --> Triage
Scope -. "code and launch context" .-> Specialists
Candidates -. "known weak spots" .-> Specialists
Verify -. "proof and failures" .-> Specialists
Scope -. "workspace roots" .-> Chain
Evidence -. "verification attempts and vulns" .-> Chain
Promote -. "unsafe-agent findings" .-> Chain
```
高风险的攻击阶段会在较晚时候运行,因为它不应在白纸一张的情况下浪费时间进行猜测。当它启动时,Nyx Agent 已经掌握了代码上下文、目标上下文、先前的候选问题、现有漏洞以及实时验证信号。它以串行方式运行,以便每一轮可以继承新记录的发现:
| 轮次 | 重点 |
|---|---|
| 业务逻辑 | 工作流和状态机滥用、角色转换、邀请、配额、生命周期边缘情况以及操作顺序 bug。 |
| 支付与计费 | 结账、订阅、发票、优惠券、试用、webhooks、退款、权限控制和支付状态信任。 |
| 用户数据与隐私 | IDOR、跨租户数据访问、导出、导入、文件、日志、分析 payload 以及已删除用户的残留信息。 |
| 认证与会话 | 登录、重置流程、OAuth、魔法链接、MFA、cookies、CSRF、会话生命周期、账号绑定和权限提升。 |
| API 与输入处理 | 批量赋值、验证缺失、隐藏字段、文件上传、解析器混淆、类似 SSRF 的抓取、注入和反序列化。 |
| 基础设施与开发/生产环境差异 | 密钥、env 配置、调试路由、开发邮件程序、种子凭证、日志、本地服务、管理工具、CORS 以及部署假设。 |
| 滥用与自动化 | 速率限制、暴力破解、枚举、抓取、邀请/电子邮件/短信滥用、队列泛洪、资源耗尽和免费套餐滥用。 |
| 关键链式追踪 | 将较小的原语组合成账号接管、跨租户入侵、支付绕过、持久化管理员访问或机密泄露的跨域攻击路径。 |
| 攻击分流 | 去重,对仅存在于开发环境中的噪音进行分类,确认重大级别提升,并仅记录有实时证据支持的问题。 |
每一轮都被明确告知其运行在开发环境中。开发邮件程序、模拟支付提供商、仅限 localhost 的 callback、种子凭证、调试路由和合成测试数据本身并不属于生产环境发现。只有当源代码、配置、路由或实时行为表明存在与生产环境相关的信任边界或真实的本地密钥风险时,它们才会被视为有效发现。
链式推理在此之后运行。它会查看规范化的攻击图谱:静态信号、候选问题、路由、角色、对象、authz 观察、验证尝试、已验证漏洞以及高风险 agent 的结果。当所选 runtime 支持 agent 循环时,链式 worker 还会接收 repo 工作区根目录,并能在返回链式 JSON 之前读取/搜索源代码。以实时证据作为终点的链路会被提升为已验证的链式漏洞;没有最终证据的链路则保持为 `NeedsChainVerification` 状态。
## CLI 优先,在需要时使用仪表板
对于一次性运行、CI 冒烟测试和本地脚本,请使用 CLI:
```
nyx-agent doctor
nyx-agent scan ./apps/web
nyx-agent scan ./apps/web --target-url http://127.0.0.1:3000
nyx-agent scan ./apps/web --exploit
nyx-agent scan ./apps/web --unsafe-attack-agent
nyx-agent serve
nyx-agent pr-comment --run-id
```
当你需要监视实时运行情况、检查证据、更新分流状态,或将项目配置集中管理时,请使用仪表板。


## 本地应用设置
启动配置文件会告诉 Nyx Agent 如何启动目标以及在哪里探测它:
```
[project]
name = "checkout-service"
root = "/Users/you/dev/checkout-service"
[project.launch]
command = "npm run dev"
cwd = "/Users/you/dev/checkout-service"
target_url = "http://127.0.0.1:3000"
health_url = "http://127.0.0.1:3000/health"
startup_timeout_secs = 45
```
进行实时测试时,请使用 `127.0.0.1`、`localhost` 或其他你控制下的开发主机。对于破坏性测试运行,请使用种子账号和一次性数据库。
## 安装
从 crates.io 安装发布的 CLI 和 daemon:
```
cargo install nyx-agent
nyx-agent doctor
nyx-agent serve
```
crates.io 包含预构建的仪表板资源,因此用户无需
安装 Node 或 pnpm 即可安装 Nyx Agent。你仍需要将单独的 `nyx`
静态扫描器放在 `PATH` 中,或通过 `[nyx].binary_path` 进行配置。
如果基于仓库检出版本进行开发:
```
cargo build --workspace
cargo run --bin nyx-agent -- doctor
pnpm --dir frontend install
pnpm --dir frontend run dev
```
在处理仓库时一些有用的检查命令:
```
cargo fmt --all
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
npm --prefix frontend run check
```
## 文档
- [配置](docs/config.md)
- [CLI](docs/cli.md)
- [API](docs/api.md)
- [产品存储](docs/product-store.md)
- [SQLx 设置](docs/dev/sqlx.md)
## 许可证
Nyx Agent 是基于 AGPLv3-or-later 的开源项目。详见 [LICENSE.md](LICENSE.md)。
贡献者需接受 [Nyx Agent 贡献者许可
协议](CLA.md),以便该项目能保持开源,同时为有需要的组织提供
商业许可。上游的 `nyx` 扫描器是一个
独立的 GPL-3.0-or-later 项目。