安全决策报告
digital-twin-patient-builder
合法医疗建模工具,代码无恶意行为,但存在文档-行为不一致(声明网络访问但实际未使用)
为什么得出这个结论
1/4 个维度触发 阻止
声明与实际能力
发现 1 项声明之外的能力或越权行为。
通过
隐藏执行与外联
当前没有明显的高危外联或执行信号。
通过
攻击链与高危发现
没有形成明确的恶意路径。
通过
依赖与供应链卫生
依赖结构存在,但暂未看到明显高危告警。
风险分是怎么被拉高的
文档-行为不一致 +15
SKILL.md声明'External API calls'和'Network Access: High',但scripts/main.py中无任何网络请求代码
声明权限过宽 +5
Security Checklist声称9项未勾选,实际代码不涉及敏感操作
最关键的证据
低危 文档欺骗
文档声明网络访问但实际未使用
SKILL.md的Risk Assessment声明'Network Access: High',Technical Architecture提及'External API calls',但scripts/main.py中完全没有网络请求代码(无requests/urllib/httpx/curl等)。这是轻微的文档欺骗,不影响安全性。
SKILL.md:36 修正SKILL.md,移除关于网络访问的声明,或补充实际使用的API端点
低危 文档欺骗
Security Checklist声称多项未实现但实际不适用
SKILL.md的Security Checklist包含12项安全措施,全部未勾选,但这些措施(如API timeout、HTTPS检查)对于本地计算工具并不适用。
SKILL.md:96 根据实际功能调整安全清单,移除不适用的网络相关项目
提示 供应链
依赖声明不完整
SKILL.md声明需要scipy和pandas,但requirements.txt只列出dataclasses(标准库)、enum(标准库)、numpy。代码中确实只使用了numpy。
SKILL.md:67 移除requirements.txt中不使用的scipy和pandas声明
声明能力 vs 实际能力
文件系统 通过
声明 WRITE
→ 推断 READ+WRITE
scripts/main.py:360-363 读取JSON文件,scripts/main.py:379-380 写入结果 网络访问 阻止
声明 READ (声明外部API调用)
→ 推断 NONE
scripts/main.py全文无requests/urllib/http.client/curl等网络相关导入或调用 命令执行 通过
声明 NONE
→ 推断 NONE
无subprocess/popen/os.system调用 环境变量 通过
声明 NONE
→ 推断 NONE
无os.environ访问 技能调用 通过
声明 NONE
→ 推断 NONE
无动态技能调用 剪贴板 通过
声明 NONE
→ 推断 NONE
无剪贴板访问 浏览器 通过
声明 NONE
→ 推断 NONE
无浏览器自动化代码 数据库 通过
声明 NONE
→ 推断 NONE
无数据库连接代码 可疑产物与外联
没有提取到明显 IOC。
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| numpy | 未指定 | requirements.txt | 否 | 核心依赖,用于数值计算 |
| scipy | 未使用 | SKILL.md声明 | 否 | 文档声明但代码中未导入 |
| pandas | 未使用 | SKILL.md声明 | 否 | 文档声明但代码中未导入 |
文件构成
3 个文件 · 695 行
Python 1 个文件 · 485 行Markdown 1 个文件 · 207 行Text 1 个文件 · 3 行
需关注文件 · 1
SKILL.md 文档声明网络访问但实际未使用 · Security Checklist声称多项未实现但实际不适用 · 依赖声明不完整
其他文件 · main.py · requirements.txt
安全亮点
纯本地计算,无网络通信风险
无subprocess/shell执行,无代码注入风险
无环境变量遍历,无凭证收割风险
无访问敏感路径(~/.ssh、~/.aws、.env)
代码结构清晰,药代动力学模型实现规范
依赖简单,仅使用numpy进行数值计算
输入验证通过argparse规范化