安全决策报告
getnote
得到大脑笔记管理技能,功能声明与实现一致,无恶意行为,但存在供应链版本锁定缺失和远程更新的中等风险。
为什么得出这个结论
0/4 个维度触发 通过
声明与实际能力
声明资源与推断能力基本一致。
通过
隐藏执行与外联
当前没有明显的高危外联或执行信号。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
发现 1 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
npm 依赖无版本锁定 +10
install.sh 第62行使用 @latest,可能拉取恶意更新
远程包替换本地文件 +10
--update 模式从 GitHub 下载 ZIP 覆盖 SKILL.md 和 references/,无签名验证
最关键的证据
中危 供应链
npm 依赖版本未锁定
install.sh 使用 @getnote/cli@latest 安装依赖,存在依赖混淆或恶意版本注入风险。若 npm registry 或包被攻击,用户下次安装可能获取恶意版本。
scripts/install.sh:62 使用精确版本或版本范围:@getnote/cli@^2.0.0
中危 供应链
远程包无完整性验证即覆盖本地文件
--update 模式从 GitHub releases 下载 ZIP 并直接覆盖 SKILL.md 和 references/,无签名或哈希验证。若 release 被篡改,攻击者可替换任意内容。
scripts/install.sh:112 在替换前验证包签名或 SHA256 哈希
低危 敏感访问
网络请求使用裸 IP 风险
install.sh 从 api.github.com 获取 release 信息,无额外安全验证。
scripts/install.sh:26 可接受,但建议增加 HTTPS 证书验证
声明能力 vs 实际能力
文件系统 通过
声明 WRITE
→ 推断 WRITE
scripts/install.sh:62 npm install -g 网络访问 通过
声明 READ
→ 推断 WRITE
scripts/install.sh:92 curl 下载 GitHub release 命令执行 通过
声明 ADMIN
→ 推断 ADMIN
scripts/install.sh:62 npm install -g 环境变量 通过
声明 NONE
→ 推断 NONE
无访问环境变量收割凭证 可疑产物与外联
没有提取到明显 IOC。
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| @getnote/cli | latest | npm | 否 | 无版本锁定,存在供应链风险 |
文件构成
8 个文件 · 628 行
Markdown 6 个文件 · 467 行Shell 1 个文件 · 141 行Other 1 个文件 · 20 行
需关注文件 · 1
scripts/install.sh npm 依赖版本未锁定 · 远程包无完整性验证即覆盖本地文件 · 网络请求使用裸 IP 风险
其他文件 · kb.md · SKILL.md · note.md · auth.md · search.md · tag.md +1
安全亮点
所有操作通过官方 getnote CLI 完成,无自定义网络请求
不索取 API Key、Cookie 或 Authorization
不访问 ~/.ssh、~/.aws、.env 等敏感路径
不包含 eval、atob、base64 解码等混淆技术
文档完整清晰,行为与声明一致
包含详细的错误处理和恢复流程
群聊场景有隐私保护意识(不展开私密全文)