安全决策报告

meta-analysis

The skill is a legitimate meta-analysis tool with declared network access to Coze cloud endpoints for R computation. Primary concern is XOR+base64 obfuscated API tokens embedded in source code (trivial to reverse, but intentionally published as shared public credentials per 2026-08-17 user authorization). No malicious behavior, no shell execution, no credential harvesting, no data exfiltration beyond declared analysis data sent to Coze.

安装决策优先 来源: ClawHub 扫描时间: 2026/9/1
文件 79
IOC 39
越权项 0
发现 3

为什么得出这个结论

0/4 个维度触发
通过
声明与实际能力

声明资源与推断能力基本一致。

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

复核
依赖与供应链卫生

发现 1 项需要关注的依赖或供应链线索。

风险分是怎么被拉高的

Obfuscated credentials in source code +15

XOR+base64 obfuscated Coze API tokens embedded in coze_token.py (OBFUSCATION_KEY=b'meta-analysis-coze-obf-v1-9f2c') and bug_report.py (_OBFUSCATION_KEY=b'ct-bugreport-coze-obf-v1-3c9e'). The code itself states 'This is OBFUSCATION, NOT real encryption' — trivially reversible by anyone with the source. However, tokens are user-authorized shared credentials (2026-08-17), scoped to specific workflow endpoints, not elevated secrets.

Public token distribution in published skill +5

SKILL.md declares 'public shared credentials published with skill' in coze_token.py docstring. Token distribution model is documented and user-authorized, reducing intent concern.

Declared network access +-5

Network access fully declared in SKILL.md permissions block (network:'required', outbound to coze + Europe PMC + bugreport). No hidden exfiltration.

Filesystem scope confined to working directory +-3

SKILL.md declares filesystem:'writes only to the current working directory (meta_analysis/ and output/)'. No writes outside declared scope.

最关键的证据

中危 代码混淆

Reversible obfuscation of API tokens in source code

adapters/coze_token.py embeds XOR+base64 obfuscated Coze API tokens (meta_analysis_coze, ct_meta2_coze) and adapters/bug_report.py embeds ct_bugreport_coze token with hardcoded keys. The code explicitly states 'This is OBFUSCATION, NOT real encryption' and acknowledges the key is published with the script. While the tokens are user-authorized shared credentials (2026-08-17), the obfuscation pattern is weak by design. Anyone with the skill source can decode tokens in seconds.

adapters/coze_token.py:15
Remove EMBEDDED_SECRETS blobs. Implement env-only token loading (COZE_META_TOKEN env var) as the sole path. Coze-side workspace-level scoping should prevent cross-tenant abuse of shared tokens.
低危 敏感访问

Filesystem writes outside declared output directories not found

Filesystem writes are confined to declared meta_analysis/ and output/ subdirectories of the working directory. No writes to ~/.workbuddy/ or other sensitive paths. The DEFAULT_TOKEN_PATH (~/.workbuddy/skills/meta-analysis/config/coze.dat) exists in code but is only used as an optional local override path (store_token), not auto-created or auto-read on normal execution.

adapters/coze_token.py:65
No action needed — path is optional and not auto-created. Consider documenting that this path is not used by default.
低危 供应链

cairosvg dependency not pinned in requirements.txt

requirements.txt comments cairosvg as 'optional, only when PNG output is requested' and says 'pip install cairosvg'. This is an acceptable opt-in model for an optional feature. No other third-party dependencies are declared.

requirements.txt:1
No action needed. Consider pinning cairosvg version if it becomes a hard dependency in future versions.

声明能力 vs 实际能力

文件系统 通过
声明 WRITE
→
推断 WRITE
SKILL.md permissions.filesystem: 'writes only to the current working directory'
网络访问 通过
声明 READ
→
推断 READ
SKILL.md permissions.network: 'required (all computation via coze cloud R engine)'; literature_probe.py makes GET to Europe PMC; bug_report.py makes POST to ct-bugreport.coze.site
命令执行 通过
声明 NONE
→
推断 NONE
No subprocess/shell execution found in any Python file
环境变量 通过
声明 NONE
→
推断 READ
coze_client.py reads COZE_META_ENDPOINT, COZE_META_TOKEN, COZE_META_TIMEOUT, COZE_META_MIN_INTERVAL, COZE_META_DEDUP_WINDOW; i18n.py reads LANG/LANGUAGE/LC_* env vars — all documented and appropriate
技能调用 通过
声明 NONE
→
推断 NONE
No dynamic skill invocation found
剪贴板 通过
声明 NONE
→
推断 NONE
No clipboard access found
浏览器 通过
声明 NONE
→
推断 NONE
No browser/WebFetch access found
数据库 通过
声明 NONE
→
推断 NONE
No database access found

可疑产物与外联

中危 外部 URL
https://www.ebi.ac.uk/europepmc/webservices/rest/search

AGENTS.md:47

中危 外部 URL
https://keepachangelog.com/en/1.0.0/

CHANGELOG.md:3

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

CHANGELOG.md:3

中危 外部 URL
https://ct-meta.coze.site/run

CHANGELOG.md:80

中危 外部 URL
https://example.invalid/run

CHANGELOG.md:80

中危 外部 URL
https://ct-meta2.coze.site/run

CHANGELOG.md:571

中危 外部 URL
https://ct-bugreport.coze.site/run

CHANGELOG.md:749

中危 外部 URL
https://ct-meta.coze.site/run(2026-08-26

adapters/coze_client.py:15

中危 外部 URL
https://ct-meta2.coze.site/run,token

adapters/coze_client.py:18

中危 外部 URL
https://ct-meta.coze.site/run)执行云端

adapters/coze_client.py:26

中危 外部 URL
https://ct-meta.coze.site/run(如被旧配置覆盖,

adapters/coze_client.py:346

中危 外部 URL
https://ct-meta.coze.site/run(已发布的

adapters/coze_integration_test.py:4

依赖与供应链

包名版本来源漏洞备注
cairosvg * pip (optional) 否 Optional only for PNG output mode; not a hard dependency
coze_token (embedded) obf-v1 bundled 否 XOR+base64 obfuscated; key hardcoded in coze_token.py. Not a traditional dependency — embedded credential.

文件构成

79 个文件 · 15148 行
Markdown 46 个文件 · 7794 行Python 21 个文件 · 6096 行JSON 9 个文件 · 1220 行Other 1 个文件 · 21 行Text 1 个文件 · 17 行
需关注文件 · 5
adapters/coze_token.py Python · 158 行
Reversible obfuscation of API tokens in source code · Filesystem writes outside declared output directories not found
adapters/config.json JSON · 7 行
CHANGELOG.md Markdown · 1284 行
https://keepachangelog.com/en/1.0.0/ · https://semver.org/ · https://ct-meta.coze.site/run · https://example.invalid/run · https://ct-meta2.coze.site/run · https://ct-bugreport.coze.site/run · [email protected]
adapters/rendering.py Python · 1048 行
http://www.w3.org/2000/svg
adapters/coze_client.py Python · 850 行
https://ct-meta.coze.site/run(2026-08-26 · https://ct-meta2.coze.site/run,token · https://ct-meta.coze.site/run)执行云端 · https://ct-meta.coze.site/run(如被旧配置覆盖,
其他文件 · build_request.py · README.md · excel_style.py · README_zh-CN.md · drug_name_map.json · bug_report.py +1

安全亮点

No shell/subprocess/exec execution anywhere in the codebase — pure Python standard library
No base64-encoded commands or eval(atob(...)) patterns
No hidden functionality — all features described in SKILL.md match implementation
Network access is fully declared in permissions block and implemented via standard library urllib only
Payload sanitization (sanitize_payload) strips PII (ID card, phone, email) before outbound POST
Auth gate (ct-base §5) requires user confirmation before first outbound call to new endpoints
Coze-only compute model — no local R engine in the runtime path (moved to adapters/_dev/, git-ignored)
Bug report uses hard whitelist schema — only enumerated fields allowed, no raw data exfiltration
Literature probe (Europe PMC) makes read-only public literature queries, no PII involved
All factual claims in SKILL.md are traceable to reference documentation