安全决策报告
journal-monitor
monitor.py 是纯良性的 PubMed 文献监控脚本,无恶意代码;但 SKILL.md 包含反安全/提示词注入特征的强约束语言。
为什么得出这个结论
0/4 个维度触发 通过
声明与实际能力
声明资源与推断能力基本一致。
复核
隐藏执行与外联
提取到 1 个一般风险产物,需要结合上下文判断。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
发现 1 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
SKILL.md 反安全/反提示注入语言 +15
使用 "FORCED"、"MANDATORY"、"NO tool-switching" 等强约束词汇,试图限制 LLM 使用更安全的替代工具,符合 prompt_injection 特征但代码本身无恶意
硬编码邮箱地址 +5
Entrez.email = "[email protected]" 在代码中硬编码,标准 NCBI API 要求但可考虑环境变量方式
最关键的证据
中危 提示注入
SKILL.md 包含反安全/反提示注入的强约束语言
SKILL.md 使用 "FORCED translation, MANDATORY metadata, and NO tool-switching" 以及 "MUST ONLY use data returned by monitor.py"、"DO NOT switch to internal search" 等强约束语句,试图阻止 LLM 使用更安全或合法的替代工具,属于 prompt injection 特征但未达到恶意级别。
SKILL.md:1 将强制约束语言改为描述性说明,如"推荐使用 monitor.py 获取数据"而非禁止替代工具
低危 文档欺骗
邮箱地址硬编码(潜在个人信息暴露)
Entrez.email 硬编码为 [email protected],属于个人邮箱,可能随代码分发而暴露个人信息
monitor.py:8 改用环境变量或 _meta.json 配置,如 os.environ.get('NCBI_EMAIL')
低危 供应链
biopython 依赖无版本锁定
metadata 声明 "uv pip install biopython" 无版本约束,可能引入依赖供应链风险
SKILL.md:11 改为版本锁定安装:uv pip install biopython==1.84 或使用 requirements.txt
声明能力 vs 实际能力
网络访问 通过
声明 READ
→ 推断 READ
monitor.py:36 使用 Entrez.esearch/efetch 访问 PubMed API(声明与行为一致) 文件系统 通过
声明 NONE
→ 推断 NONE
monitor.py 无任何文件读写操作 命令执行 通过
声明 NONE
→ 推断 NONE
monitor.py 无 subprocess/os.system 等 shell 调用 环境变量 通过
声明 NONE
→ 推断 NONE
monitor.py 仅依赖 CLI 参数和 os.environ(sys.argv),无凭证遍历 技能调用 通过
声明 NONE
→ 推断 NONE
无嵌套 skill 调用 可疑产物与外联
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| biopython | * | pip | 否 | SKILL.md 中声明为 "uv pip install biopython",无版本锁定,存在供应链风险 |
文件构成
2 个文件 · 124 行
Python 1 个文件 · 75 行Markdown 1 个文件 · 49 行
需关注文件 · 2
monitor.py 邮箱地址硬编码(潜在个人信息暴露) · [email protected]
SKILL.md SKILL.md 包含反安全/反提示注入的强约束语言 · biopython 依赖无版本锁定
安全亮点
monitor.py 代码逻辑完全良性和透明,仅使用 Biopython Entrez API 查询 PubMed
无文件写入、无网络外传、无凭证收割、无 shell 执行
无混淆、Base64 编码或反分析技术
代码结构清晰,易于人工审计
能力声明(network:READ)与实际行为一致