velric-agentCAUTION
Agent 自主渗透测试工具: SPA/MPA 接口枚举、运行时流量捕获、权限树还原、参数矩阵合并。
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Agent 自主渗透测试工具包 —— 让 Agent 独立完成 Web 应用的攻击面测绘。覆盖 SPA/MPA 的后端接口枚举、无头浏览器运行时流量录制、前端权限树重建与多样本参数矩阵聚合,提供 CLI 与 MCP server 双形态,可被任何 MCP 客户端直接驱动。仅用于已授权的安全测试。
功能
静态分析
harvest_static— SPA bundle 全量收割:抓取入口页 → 解析 webpack/Vite chunk manifest → 迭代下载全部 lazy chunk(不只 HTML 里引用的)→ 提取 API 路径、前端路由、其他路径。产出api_static.txt/routes.txt/paths_other.txt/chunkmap.txt/js/。extract_routes— 对已下载的js/目录重新执行接口/路由提取(改了正则策略后重跑用)。spider_mpa— MPA 爬虫:同源受限 BFS,抽取 `表单(真实端点+参数名)、内联 ajax URL、可达页面清单。产出forms.txt/links.txt/api_inline.txt`。
运行时捕获
capture_runtime— 无头 Chromium 驱动 SPA,document-start 注入 hook(fetch/XHR/WS 全录制),过三道客户端门禁(渲染门/拦截器门/内容门),遍历路由记录真实 METHOD + URL + body + 响应样本。产出runtime_api.json/api_merged.txt。
结构还原
build_perm_tree— 从收割的 JS 里解析userRouteAuth权限模块,解析 webpack 别名(x=o.KEY),按 code 前缀推断层级,生成全量放行的菜单/权限 stub。产出permissions_all_stub.json/role_permissions_stub.json/permissions_tree.json等。
参数合并
merge_params— 合并多份运行时录制样本,按端点聚合字段(body/query 区分),标注置信度(≥2 样本一致=high,单样本=medium)。单一样本永远不会被当成必填/可选的结论。
网络探测
dns_resolve— A/AAAA/CNAME 解析(≤50 hosts)。http_probe— 单 URL 探测:状态码/标题/Server/尺寸/sha256,支持自定义 header、cookie、代理。
安装
要求 Node ≥ 22;capture_runtime 需要系统 Chromium(--chromium 或 VELRIC_CHROMIUM 指定)。
npm install -g velric-agent # 或免安装运行 npx -y velric-agent
CLI 用法
velric-agent dns-resolve example.com velric-agent http-probe https://target/ velric-agent harvest https://target/ /tmp/recon velric-agent extract-routes /tmp/recon/js /tmp/recon velric-agent spider https://target/ /tmp/recon --cookie "session=..." velric-agent runtime https://target/ /tmp/recon --chromium /usr/bin/chromium --wait 6000 --per-route 4000 velric-agent perm-tree /tmp/recon/js /tmp/recon velric-agent merge-params /tmp/recon/param_samples.json /tmp/recon ve
534a4beac6d6OBSERVED · 2026-10-13Install
Commands as the repository documents them. They are shown, not run.
npm install -g velric-agent
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned | |
| cursor | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: velric-recon
description: Authorized web-app reconnaissance with velric-agent. Use when the task needs API surface discovery (endpoints, routes, params) on an authorized SPA or MPA target — static bundle harvest, headless runtime capture, or permission-tree rebuilding. Tools are stateless: each call takes explicit arguments and writes artifacts under a caller-supplied output_root.
metadata:
version: "1"
---
# velric-agent recon
Stateless recon toolset for **authorized** targets. One CLI and one MCP server,
same core. Every tool call is independent: arguments in, work done, artifacts
under the caller's `output_root`, nothing remembered.
## Route the target first
Pick the entry tool from what the user supplied:
- **SPA** (empty shell + JS chunks): `harvest_static` first — it downloads the
full chunk corpus and emits `api_static.txt` / `routes.txt`.
- **MPA** (server-rendered forms, no endpoint bundle): `spider_mpa` — forms
with parameters are the real endpoints.
- **Live runtime surface** (methods/bodies a static pass cannot see):
`capture_runtime` after static; needs a Chromium executable.
- **Enterprise admin with code-gated menus**: `build_perm_tree` over the
harvested `js/` corpus to rebuild permissive menu stubs.
- **Single host sanity check**: `dns_resolve`, then `http_probe`.
- **Parameter field sets**: record samples (the runtime capture detail or any
source), then `merge_params` — never conclude required/optional from one
sample.
## Workflow
1. Classify: SPA or MPA? (`http_probe` the entry; look at content type and
whether the HTML is a shell with `<script src>` chunks.)
2. Static first — it is the safety net when runtime is blocked:
`harvest_static` (SPA) or `spider_mpa` (MPA).
3. Runtime to recover methods/bodies: `capture_runtime` with the entry URL;
pass `routes` from the static `routes.txt` for deeper coverage.
- Larger production SPAs (Grafana, dashboards, admin consoles) boot their
first API burst **seconds** after the document loads: raise the wait
(`capture_runtime` `waitMs` / CLI `--wait 6000-8000`, `perRouteMs` /
`--per-route 4000-6000`) or the capture reports few/zero calls.
- Custom API prefixes (Algolia `/1/indexes/`, SaaS `/v2/`, `/internal/`
variants) are not matched by the default pattern: pass an explicit
`apiPattern` (MCP) / `--api-pattern '<re>'` (CLI) to record them.
4. If module pages stay blank behind permission gates: `build_perm_tree`, feed
its stubs back into `capture_runtime` via `stubs`, re-run.
5. Merge parameters: collect `param_samples.json` entries, `merge_params`.
6. Report honestly: counts, uncovered modules, and which pass produced what.
## Boundaries
- Recon only: enumerate paths, methods, params, routes. No exploitation.
- Defeat of the three client gates (render/interceptor/content) uses client-side
stubs and mock responses only; outbound requests are recorded as-is.
- Empty data / blank tables under stubs are expected — do not pivot to real
credential attempts.
- Every conclusion names its source pass (static / runtime / merged) and its
coverage limits.
## Read only the relevant reference
- Gate theory, stub tiers, and per-target tuning:
[references/three-gates.md](references/three-gates.md)
- Artifact inventory and merge semantics:
[references/artifacts.md](references/artifacts.md)Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (6 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (3)
connect: { rejectUnauthorized: false },expect(() => new Function(script)).not.toThrow();
undici, @modelcontextprotocol/client, @types/node, @types/write-file-atomic, typescript, vitest
Gates applied: no_behavioural_pass.
534a4beac6d6full audit observations/trust-audit/skill/ikooky__velric-agent.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-13 | 534a4beac6d6 | CAUTION | B | 89 | first audit |
Questions
What does the velric-agent skill do?
Agent 自主渗透测试工具: SPA/MPA 接口枚举、运行时流量捕获、权限树还原、参数矩阵合并。
Is velric-agent safe to install?
With care. The audit graded it B (89/100) and found 3 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can velric-agent access on my machine?
The audit observed that it reaches the network. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does velric-agent work with?
Its documentation mentions claude-code and cursor. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (534a4beac6d6), read on 2026-10-13. The repository is watched, and a new audit runs when it changes — this is the first audit.