Skill Trust Decision

ct-registry

合法的临床试验注册检索工具,无恶意行为。代码行为与文档完全一致,XOR+base64 混淆的 Bearer token 已在 SKILL.md 中充分披露为公共共享凭据(ct-base §5),非隐藏凭证。唯一瑕疵为依赖无版本锁定,以及 config.json 预置了 auto_approve_endpoints。

Install decision first Source: ClawHub Scanned: Aug 23, 2026
Files 52
Artifacts 31
Violations 0
Findings 4

Why this conclusion was reached

0/4 dimensions flagged
Pass
Declared vs actual capability

Declared resources and inferred behavior are broadly aligned.

Review
Hidden execution and egress

31 lower-risk artifacts were extracted and still need context.

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Pass
Dependencies and supply chain hygiene

Dependencies are present but no obvious high-risk issue stands out.

What drove the risk score up

内嵌混淆 Bearer token +10

config/keys.py 内嵌 XOR+base64 混淆的统一端点 token,SKILL.md §5 与 Coze key 节已充分披露为「公开共享凭据」并说明为公共工作负载身份(非个人密钥),ct-base §5 允许随包发布,意图合法

依赖无版本锁定 +10

requirements.txt 中 requests>=2.28、xlsxwriter>=3.0 无上限版本锁定,存在依赖供应链风险(ct-base supply_chain 指标)

Most important evidence

Low Supply Chain

依赖包无版本上限锁定

requirements.txt 中 requests、xlsxwriter、matplotlib 仅声明最低版本,无上限锁定,理论上可接收有 Breaking Change 的次版本更新

requirements.txt:1
固定为 requests>=2.28,<3.0 等格式;或使用 pip-compile 生成 pip-tools 锁文件
Info Doc Mismatch

config.json 预置 auto_approve_endpoints

config/config.json 预置了两个第三方端点(ct-search.coze.site/run 和 ct-bugreport.coze.site/run)到 auto_approve_endpoints,规避了出站授权确认门。这两个端点在 SKILL.md §5 和 bug_report.py 中已充分披露用途,意图为避免每次调用重复弹确认框。

config/config.json:1
确认此预置行为符合组织安全策略;在高安全隔离环境中可清空该数组,由用户按需逐个确认
Info Obfuscation

内嵌混淆 token(已披露)

config/keys.py 使用 XOR+base64 混淆 Bearer token 并内嵌于 .py 文件,SKILL.md 明确说明此为公开共享凭据(ct-base §5 允许),混淆仅为防目录扫描/grep 命中明文,非安全加密。bug_report.py 同样内嵌了 bug-report 端点的混淆 token。

config/keys.py:26
确认 token 为公共凭据而非个人密钥;如需更高安全级别,通过 env CT_REGISTRY_COZE_TOKEN 覆盖内嵌值
Info Sensitive Access

usage.json 和 usage.json.lock 写入用户目录

usage_guard.py 将配额计数器写入 ~/.workbuddy/skills/ct-registry/config/usage.json(含 demand_id 列表),为技能自身配额管理,非凭证泄露

scripts/usage_guard.py:26
无需处理,为正常配额跟踪文件

Declared capability vs actual capability

Network Pass
Declared READ
→
Inferred READ
SKILL.md permissions.network: optional; only public query terms egress
Filesystem Pass
Declared WRITE
→
Inferred WRITE
SKILL.md filesystem: writes report/Excel files to current working directory
Shell Pass
Declared NONE
→
Inferred READ
scripts/ct_registry.py: subprocess.run() 用于执行 normalize.py/export_xlsx.py 等本地脚本,行为合理但超出 filesystem-only 声明

Suspicious artifacts and egress

Medium External URL
https://ct-bugreport.coze.site/run

CHANGELOG.md:7

Medium External URL
https://clinicaltrials.gov/api/oas/v2

CTGOV_V2_PARAM_AUDIT.md:202

Medium External URL
https://clinicaltrials.gov/data-api/about-api/search-areas

CTGOV_V2_PARAM_AUDIT.md:203

Medium External URL
https://clinicaltrials.gov/find-studies/constructing-complex-search-queries

CTGOV_V2_PARAM_AUDIT.md:204

Medium External URL
https://ct-search.coze.site/run

README.md:57

Medium External URL
https://trialsearch.who.int/

adapters/download_docs.py:86

Medium External URL
https://www.chinadrugtrials.org.cn/

adapters/download_docs.py:87

Medium External URL
https://clinicaltrials.gov/

adapters/download_docs.py:88

Medium External URL
https://pubchem.ncbi.nlm.nih.gov/rest/pug

adapters/enrich_pubchem.py:11

Medium External URL
https://euclinicaltrials.eu/ctis-public-api/retrieve/

adapters/fetch_eu_ctr_docs.py:34

Medium External URL
https://api.dxy.cn/open/medical/cde.clinical.trials.basic.info

adapters/search_cde.py:14

Medium External URL
https://www.chinadrugtrials.org.cn/clinicaltrials.prosearch.dhtml

adapters/search_cde.py:89

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
requests >=2.28 pip No 无版本上限锁定
xlsxwriter >=3.0 pip No 无版本上限锁定
matplotlib >=3.6 pip No 可选,仅用于 PNG 图表;无版本上限锁定

File composition

52 files · 15702 lines
Python 29 files · 9475 linesJSON 7 files · 3309 linesMarkdown 14 files · 2906 linesText 1 files · 12 lines
Files of concern · 4
config/config.json JSON · 6 lines
config.json 预置 auto_approve_endpoints
scripts/normalize.py Python · 674 lines
https://clinicaltrials.gov/study/ · https://www.chictr.org.cn/showProj.html?proj= · https://drks.de/drks_web/navigate.php?navigation_id=trials&trial_id= · https://www.clinicaltrialsregister.eu/ctr-search/trial/ · https://jrct.niph.go.jp/latest-detail/ · https://www.anzctr.org.au/ · https://cris.nih.go.kr/cris/search/detail.do?seq= · https://www.isrctn.com/ · https://trialsearch.who.int/Trial2.aspx?TrialID= · https://www.drks.de/drks_web/navigate.do?navigationId=detail&
CHANGELOG.md Markdown · 143 lines
https://ct-bugreport.coze.site/run
README_zh-CN.md Markdown · 321 lines
Other files · ct_registry.py · search_ictrp.py · export_xlsx.py · i18n_messages.json · kw_localize.py · kw_lexicon.json +2

Security positives

safe preview 默认为 preview-only,--run 才执行网络请求
所有第三方端点(ct-search.coze.site, ct-bugreport.coze.site)在 SKILL.md 中完整披露,无阴影网络行为
出站 payload 脱敏(PII 剥离)内置于 extsvc_client.py §5.50,身份证/手机/邮箱均被替换
AUTH-BLOCK 机制确保首次出站前用户确认(config.json 已预置已知安全端点)
usage_guard 每日 100 次配额限制防滥用,且 demand_id 去重避免重复计数
keyword breadth guard 防止宽泛关键词导致端点资源耗尽
无 eval/exec/动态代码执行,无 Base64 管道执行,无 curl/wget 远程脚本下载
代码行为与文档完全一致,无阴影功能(shadow behavior)
仅使用 requests 标准 HTTP 库,无 Playwright/浏览器自动化(符合 owner rule)
bug_report.py 硬白名单信封确保敏感数据不外传