安全决策报告

cite-holmes

cite-holmes 引用验证工具存在多处文档-行为不符:声明纯标准库但 MCP 服务依赖第三方库;声明无 OS 集成但实际调用本地 ollama 和外部裁判端点;声明仅限学术数据库但存在未声明的网络交互。阴影功能占比较高但无恶意证据。

安装决策优先 来源: ClawHub 扫描时间: 15 天前
文件 29
IOC 27
越权项 1
发现 6
最直接的威胁证据

为什么得出这个结论

1/4 个维度触发
阻止
声明与实际能力

发现 1 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 27 个一般风险产物,需要结合上下文判断。

通过
攻击链与高危发现

没有形成明确的恶意路径。

通过
依赖与供应链卫生

依赖结构存在,但暂未看到明显高危告警。

风险分是怎么被拉高的

文档-行为不符(未声明的网络交互) +15

SKILL.md 未声明本地 ollama 调用、外部 judge 端点和 NLI 服务

依赖声明不符 +10

SKILL.md 声称 pure stdlib,但 MCP server 依赖 fastmcp 第三方库

磁盘缓存未声明 +5

~/.cache/cite-holmes/ 持久化缓存在文档中未提及

无恶意行为证据 +-5

所有网络交互均为学术验证相关,无凭证收割或数据外泄

最关键的证据

中危 文档欺骗

未声明的本地 ollama 调用

代码中存在 _embed_ollama 函数(scripts/verify_refs.py,约 line 2020),调用 http://127.0.0.1:11434/api/embed 用于本地嵌入向量计算,但 SKILL.md 未声明任何本地服务交互。

scripts/verify_refs.py:2028
在 SKILL.md Security 章节补充:'支持可选本地 ollama 服务 (bge-m3 模型) 用于语义段落检索'
中危 文档欺骗

未声明的外部 judge 端点调用

judge_claim_via_endpoint 函数支持调用外部 LLM 裁判服务(--judge-url 参数),可连接 OpenAI 兼容端点或 ollama 原生端点,但文档完全未提及此功能。

scripts/verify_refs.py:2120
在 SKILL.md 补充外部裁判端点说明,明确数据流经用户自控端点而非第三方
中危 文档欺骗

未声明的外部 NLI 服务调用

nli_vote 函数调用外部 NLI 服务 (--nli-url),用于第三票聚合,但 SKILL.md 未声明此网络交互。

scripts/verify_refs.py:2075
补充 NLI 服务调用说明
低危 供应链

第三方依赖未在 SKILL.md 声明

SKILL.md 声称 'pure standard library',但 mcp/server.py 实际依赖 fastmcp>=2.0 (见 mcp/pyproject.toml)。MCP server 功能为可选组件。

mcp/pyproject.toml:14
如使用 MCP server,在 SKILL.md 补充:'可选 MCP server 需要 fastmcp>=2.0'
低危 敏感访问

磁盘缓存路径未声明

v1.12 引入的持久化 SQLite 缓存存储在 ~/.cache/cite-holmes/,文档中 Security 章节未提及此持久化行为。

scripts/verify_refs.py:1998
在 Security 章节补充:'可选磁盘缓存 (~/.cache/cite-holmes/),可使用 --no-cache 禁用'
提示 文档欺骗

fast-judge 预筛未声明

v3.5.0 的 fast-judge 预筛功能(--fast-judge-url)未在 SKILL.md 声明。

scripts/verify_refs.py:1968
补充 fast-judge 功能说明

声明能力 vs 实际能力

文件系统 阻止
声明 NONE
→
推断 READ
scripts/verify_refs.py:2970+ open()写入用户指定的输出文件;mcp/sync_engine.sh:6 使用 cp 命令
网络访问 通过
声明 READ
→
推断 READ
scripts/verify_refs.py:1952+ 调用本地 ollama (http://127.0.0.1:11434);judge_claim_via_endpoint 调用外部 judge_url
命令执行 通过
声明 NONE
→
推断 NONE
mcp/sync_engine.sh 使用 bash,但仅用于发布链同步,非运行时行为

可疑产物与外联

中危 外部 URL
https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills

examples/demo_refs.json:2

中危 外部 URL
https://www.nature.com/articles/d41586-026-00969-z

examples/demo_refs.json:4

中危 外部 URL
https://skills.sh

examples/demo_refs.json:5

中危 外部 URL
https://www.firecrawl.dev/blog/best-claude-code-skills

examples/demo_refs.json:6

中危 外部 URL
https://www.anthropic.com/engineering/agent-skills-adoption-survey-2026

examples/demo_refs.json:8

中危 外部 URL
https://doi.org/10.1038/nature12373

examples/end-to-end/exports/report.csv:2

中危 外部 URL
https://doi.org/10.1038/nature12373.

examples/end-to-end/exports/report_GB-T7714.txt:1

中危 外部 URL
https://skillhub.cn/skills/indiv-sorsor/cite-holmes

examples/end-to-end/report.md:45

中危 外部 URL
https://pubmed.ncbi.nlm.nih.gov/34971386/

examples/medical_refs.json:27

中危 外部 URL
https://zhuanlan.zhihu.com/p/000000000

examples/medical_refs.json:61

中危 外部 URL
https://doi.org/

mcp/verify_refs.py:473

中危 外部 URL
https://skillhub.cn/skills/cite-holmes

mcp/verify_refs.py:480

依赖与供应链

包名版本来源漏洞备注
fastmcp >=2.0 mcp/pyproject.toml 否 仅 MCP server 需要,CLI 独立运行无需此依赖
sqlite3 stdlib Python 标准库 否 v1.12 磁盘缓存使用

文件构成

29 个文件 · 8940 行
Python 4 个文件 · 7138 行Markdown 16 个文件 · 1529 行JSON 5 个文件 · 229 行TOML 1 个文件 · 22 行Shell 1 个文件 · 19 行CSV 1 个文件 · 2 行
需关注文件 · 3
mcp/verify_refs.py Python · 3381 行
https://doi.org/ · https://skillhub.cn/skills/cite-holmes · https://api.crossref.org/works/ · https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi · https://arxiv.org/abs/ · http://www.w3.org/2005/Atom · http://arxiv.org/schemas/atom · https://export.arxiv.org/api/query?id_list= · https://archive.org/wayback/available?url= · https://api.openalex.org/works?search= · https://api.semanticscholar.org/graph/v1/paper/DOI: · https://api.semanticscholar.org/graph/v1/paper/search · https://pubmed.ncbi.nlm.nih.gov/ · https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi · https://ar5iv.labs.arxiv.org/html/ · http://127.0.0.1:11434/api/embed
scripts/verify_refs.py Python · 3381 行
未声明的本地 ollama 调用 · 未声明的外部 judge 端点调用 · 未声明的外部 NLI 服务调用 · 磁盘缓存路径未声明 · fast-judge 预筛未声明
README.md Markdown · 283 行
其他文件 · SKILL.md · server.py · verification-details.md · faq.md · competitive-landscape.md · report.json +3

安全亮点

SSRF 防护完整(ssrf_blocked 函数阻止内网/环回地址访问)
CSV 公式注入防护(csv_safe 函数)
BibTeX 字段加固(bib_safe 防止 @entry 逃逸)
速率限制完善(NCBI 3rps、arXiv 3s/req、S2 1.5s/req 全局锁)
无凭证收割行为,API key 仅附加到用户自身请求
网络降级模式设计合理(全局降级检测、诚实快速失败)
无 subprocess 运行时调用(sync_engine.sh 仅用于发布链)