@aimarket/warden 0.22.1 → 0.22.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -1
- package/README-es.md +9 -9
- package/README-fr.md +9 -9
- package/README-ru.md +9 -9
- package/README-zh.md +9 -9
- package/README.md +37 -31
- package/dist/histor.d.ts +6 -0
- package/dist/histor.d.ts.map +1 -1
- package/dist/histor.js +14 -0
- package/dist/histor.js.map +1 -1
- package/dist/jcs.d.ts +4 -3
- package/dist/jcs.d.ts.map +1 -1
- package/dist/jcs.js +4 -3
- package/dist/jcs.js.map +1 -1
- package/dist/mcp-server.js +19 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools.d.ts.map +1 -1
- package/dist/mcp-tools.js +3 -0
- package/dist/mcp-tools.js.map +1 -1
- package/dist/mtl.d.ts +7 -6
- package/dist/mtl.d.ts.map +1 -1
- package/dist/mtl.js +31 -24
- package/dist/mtl.js.map +1 -1
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +2 -2
- package/dist/scan.js.map +1 -1
- package/docs/flow-guard-model-comparison-2026-10-25.es.md +9 -9
- package/docs/flow-guard-model-comparison-2026-10-25.fr.md +9 -9
- package/docs/flow-guard-model-comparison-2026-10-25.md +9 -9
- package/docs/flow-guard-model-comparison-2026-10-25.ru.md +9 -9
- package/docs/flow-guard-model-comparison-2026-10-25.zh.md +9 -9
- package/docs/flow-guard-reference-egress.es.md +25 -0
- package/docs/flow-guard-reference-egress.fr.md +25 -0
- package/docs/flow-guard-reference-egress.md +26 -0
- package/docs/flow-guard-reference-egress.ru.md +26 -0
- package/docs/flow-guard-reference-egress.zh.md +25 -0
- package/docs/flow-guard.es.md +9 -5
- package/docs/flow-guard.fr.md +9 -5
- package/docs/flow-guard.md +10 -6
- package/docs/flow-guard.ru.md +10 -6
- package/docs/flow-guard.zh.md +9 -5
- package/docs/scan-limits.es.md +2 -2
- package/docs/scan-limits.fr.md +2 -2
- package/docs/scan-limits.md +2 -2
- package/docs/scan-limits.ru.md +2 -2
- package/docs/scan-limits.zh.md +2 -2
- package/docs/scan.es.md +5 -5
- package/docs/scan.fr.md +5 -5
- package/docs/scan.md +5 -5
- package/docs/scan.ru.md +5 -5
- package/docs/scan.zh.md +5 -5
- package/docs/security-hardening-language-boundary.md +5 -5
- package/package.json +1 -1
package/docs/scan.zh.md
CHANGED
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
`warden-mcp scan` 读取你已有的 MCP 配置,连接其中启动的每个服务器,并在模型看到工具定义之前对其进行审查。它与 [`wrap`](../README-zh.md) 和[库](integration.zh.md)使用同一条关卡链,只是对你的配置运行一次,而不是挡在单个服务器前面。
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npx -y @aimarket/warden@0.
|
|
10
|
+
npx -y @aimarket/warden@0.22.3 scan
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
```text
|
|
14
|
-
WARDEN scan 0.
|
|
14
|
+
WARDEN scan 0.22.3 · ruleset 16 sha256-86y6iNc4R+LM… · block at high
|
|
15
15
|
read .mcp.json (claude-code, 3 servers)
|
|
16
16
|
|
|
17
17
|
✓ allow notes claude-code 1 tool · score 0.90
|
|
18
|
-
✗ BLOCK evil-notes claude-code 1 tool · score 0.00 · TOOL_DEF_EXFIL(
|
|
18
|
+
✗ BLOCK evil-notes claude-code 1 tool · score 0.00 · TOOL_DEF_EXFIL(save_note) TOOL_DEF_SECRET_REQUEST(save_note) THREAT_SSH_KEY_READ(save_note) THREAT_SEED_PHRASE(save_note)
|
|
19
19
|
! error broken claude-code could not start: spawn /nonexistent/bin/server ENOENT
|
|
20
20
|
|
|
21
21
|
3 servers: 1 allowed, 1 blocked, 1 not checked, 0 skipped.
|
|
@@ -88,7 +88,7 @@ jobs:
|
|
|
88
88
|
runs-on: ubuntu-latest
|
|
89
89
|
steps:
|
|
90
90
|
- uses: actions/checkout@v4
|
|
91
|
-
- uses: alexar76/warden@v0.
|
|
91
|
+
- uses: alexar76/warden@v0.21.0
|
|
92
92
|
with:
|
|
93
93
|
upload-sarif: 'true'
|
|
94
94
|
```
|
|
@@ -133,7 +133,7 @@ repos:
|
|
|
133
133
|
|
|
134
134
|
[HISTOR](https://histor.modelmarket.dev) 是一个公开日志,每天记录官方 MCP 注册表中所有远程服务器的工具定义。`--histor` 对每个远程服务器问它一个问题:你刚收到的工具集,是否就是 HISTOR 观察到的那一个?
|
|
135
135
|
|
|
136
|
-
发送的内容:端点(只有协议、主机和路径,不含 query、用户名或密码),以及工具集的 [MTL/1](https://github.com/alexar76/awr)
|
|
136
|
+
发送的内容:端点(只有协议、主机和路径,不含 query、用户名或密码),以及工具集的 [MTL/1](https://github.com/alexar76/awr) 摘要。不发送任何工具描述,也不发送您的请求头。User-Agent 为 `warden-scan/<版本>`,在 CI 中运行时后接 `(ci)`(`(ci; github-actions)`、`(ci; gitlab)`),以便 HISTOR 统计随每次构建重复的检查;它从不包含仓库或运行器的名称。私有主机或地址上的端点,以及看起来带有密钥的路径,根本不会发送;报告会说明原因。
|
|
137
137
|
|
|
138
138
|
从公共 npm 或 PyPI 注册表启动的 stdio 服务器(`npx`、`bunx`、`npm exec`、`pnpm dlx`、`uvx`、`uv tool run`、`pipx run`)以其软件包命名——`npm:<名称>` 或 `pypi:<名称>`,不带版本——并附上同样的摘要。HISTOR 会在 gVisor 沙箱中(诱饵凭据、无对外路由;每个工具用金丝雀参数调用一次,不作用于任何真实对象)安装这类软件包的每个已发布版本,并记录其工具及其行为,因此这里的 `previously-observed` 表示你运行的是较旧的版本,`different` 表示 HISTOR 尚未覆盖到的版本、工具取决于你的机器上有而沙箱里没有的东西的软件包(把工作交给本地已安装程序的启动器、真实的密钥或设置),或者与已发布版本不一致的软件包。该发现会给出双方各自的工具数量。本地路径、git 或 tarball 地址、私有注册表(`--registry`、`--index-url`)以及直接用 `node`/`python` 启动的服务器,永远不会被发送。 对于软件包,HISTOR 还会以提示性发现告诉你:它的名称是否在模仿热门软件包(`HISTOR_PACKAGE_LOOKALIKE`:相差一个字符、在另一个 scope 下同名或仅分隔符不同,且热门软件包的下载量至少高 100 倍),以及所观察的版本是否带有发布令牌被盗的迹象:`HISTOR_PACKAGE_PROVENANCE_LOST`(上一个版本有经证明的 CI 构建,这个版本没有)、`HISTOR_PACKAGE_INSTALL_SCRIPTS`(新增安装脚本)、`HISTOR_PACKAGE_PUBLISHER_CHANGED`、`HISTOR_PACKAGE_NEW_DEPENDENCIES`。 以及软件包在沙箱中的行为:`HISTOR_PACKAGE_READS_SECRETS`(在安装、启动或工具被调用时打开了诱饵凭据——SSH 密钥、云或注册表令牌、钱包),`HISTOR_PACKAGE_PERSISTENCE`(写入了会在会话之后留存的位置,例如 `.bashrc` 或 `authorized_keys`),`HISTOR_PACKAGE_STARTUP_NETWORK`(在调用任何工具之前就访问了网络),`HISTOR_PACKAGE_STARTS_PROGRAMS`,`HISTOR_PACKAGE_INSTALL_BEHAVIOUR`(其安装脚本做了什么)。从工作目录加载 `.env`、在工具调用期间访问其自身 API,都不算发现。软件包为何没有启动——依据它打印的内容:`HISTOR_PACKAGE_SDK_INCOMPATIBLE`(medium——为 MCP SDK 1.x 编写,因此用 `mcp` 2.x 全新安装会在导入时失败;如果 HISTOR 也用 `mcp<2` 运行过它,则给出当时列出的工具数量)、`HISTOR_PACKAGE_NEEDS_CONFIG`(info——它要求的密钥或设置,或其工具是在占位值下读取的)以及 `HISTOR_PACKAGE_KEY_SENT_TO`(low——它把 HISTOR 设置的占位密钥发送到了哪里;请确认那是该服务自己的 API)。所有沙箱发现都来自相同的条件:gVisor 下的 Linux、无互联网、诱饵机密([测试条件](https://histor.modelmarket.dev/#conditions))。 使用 `--histor` 时,报告还会给出一个 HISTOR 订阅源链接,包含 HISTOR 已知的被扫描服务器的变更(`--json` 中的 `historWatch`):可在任意订阅阅读器中订阅。
|
|
139
139
|
|
|
@@ -232,7 +232,7 @@ operator approval demonstrate safety in every language or on future model versio
|
|
|
232
232
|
The inputs are related synthetic templates, including the pilot used for protocol
|
|
233
233
|
tuning. This is a reproducible stress evaluation, not a held-out generalization claim.
|
|
234
234
|
|
|
235
|
-
The companion [machine-readable report](
|
|
235
|
+
The companion [machine-readable report](https://github.com/alexar76/momus/blob/main/docs/coverage-v11.json) contains
|
|
236
236
|
build/corpus/prompt identities, per-language counts, missed IDs, false-block IDs,
|
|
237
237
|
provider pilots and validation results. Exact inputs and individual decisions are
|
|
238
238
|
in `momus/data/warden-v11-comparison/` and
|
|
@@ -272,9 +272,9 @@ The 986 unlabelled public snapshots keep the same three blocks. Their block coun
|
|
|
272
272
|
is not a false-positive estimate. Ordinary wrap is not part of the live semantic
|
|
273
273
|
measurement.
|
|
274
274
|
|
|
275
|
-
[Full report](
|
|
276
|
-
[implementation audit of the nine-part plan](
|
|
277
|
-
and [safe local reproductions](
|
|
275
|
+
[Full report](https://github.com/alexar76/momus/blob/main/docs/coverage-v12.json),
|
|
276
|
+
[implementation audit of the nine-part plan](https://github.com/alexar76/momus/blob/main/docs/mcp-quality-review.md),
|
|
277
|
+
and [safe local reproductions](https://github.com/alexar76/momus/blob/main/docs/mcp-quality-reproductions.json).
|
|
278
278
|
Final decisions are in `momus/data/warden-semantic-full-v12-bound/`; frozen
|
|
279
279
|
comparison inputs and offline decisions are in `momus/data/warden-v12-comparison/`.
|
|
280
280
|
The report binds corpus, prompt and build hashes and records previous-error
|
|
@@ -299,7 +299,7 @@ network access, per-call authorization outside the model, and process isolation.
|
|
|
299
299
|
|
|
300
300
|
## Revision 0.13.0 — ordinary imperatives and honest coverage
|
|
301
301
|
|
|
302
|
-
The generic classifier criterion now requires a concrete authority violation. An imperative describing an operation on user-provided input remains ordinary documentation after decoding. There is no Spanish allowlist. On the same frozen 8,606 fixtures, DeepSeek (`deepseek-flash`, effort `none`) blocked all 8,244 attacks and allowed all 362 controls, including `control.es.0.description.base64`; no inspection was incomplete. [Full report](
|
|
302
|
+
The generic classifier criterion now requires a concrete authority violation. An imperative describing an operation on user-provided input remains ordinary documentation after decoding. There is no Spanish allowlist. On the same frozen 8,606 fixtures, DeepSeek (`deepseek-flash`, effort `none`) blocked all 8,244 attacks and allowed all 362 controls, including `control.es.0.description.base64`; no inspection was incomplete. [Full report](https://github.com/alexar76/momus/blob/main/docs/coverage-v13.json) includes prompt/build/corpus hashes and token counts. Offline recognition remains 2,808/8,244 with 31/362 false blocks; the semantic result must not be attributed to offline mode.
|
|
303
303
|
|
|
304
304
|
`wrap` reports oversized results as incomplete rather than scanning head/tail and clearing the unseen middle. This result layer remains static; no claim of universal multilingual result recognition is made. `block` withholds the result after the tool ran. `warn` annotates it.
|
|
305
305
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aimarket/warden",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.3",
|
|
4
4
|
"description": "WARDEN — MCP security firewall. Stdio wrap proxy, inspection tools and library. Vets definitions before model exposure. Zero runtime dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|