安全决策报告
markdown-ai-rewriter
合法的 Markdown AI 改写工具,存在供应链风险(npx 动态拉取第三方包)和权限声明宽泛问题,无恶意行为证据。
为什么得出这个结论
0/4 个维度触发 通过
声明与实际能力
声明资源与推断能力基本一致。
复核
隐藏执行与外联
提取到 5 个一般风险产物,需要结合上下文判断。
通过
攻击链与高危发现
没有形成明确的恶意路径。
通过
依赖与供应链卫生
依赖结构存在,但暂未看到明显高危告警。
风险分是怎么被拉高的
供应链风险 +20
config.json 中配置 install.type=npx,动态拉取第三方 npm 包执行,存在供应链攻击风险
版本锁定不足 +10
使用 ^1.1.2 版本范围,允许小版本升级,实际执行代码不可控
权限声明宽泛 +5
网络域名列表包含 13 个域名,可能超出实际需要
最关键的证据
中危 供应链
npx 动态拉取第三方包
config.json 中 install.type 设置为 npx,执行时通过 npx --yes 动态从 registry.npmjs.org 拉取 markdown-ai-rewriter 包。这导致实际执行的代码不受 Skill 仓库控制,存在供应链攻击风险。
config.json:38 建议改用本地 npm install 后执行本地脚本,或在 CI 中预下载包并校验 hash
中危 供应链
版本锁定不足
使用 ^1.1.2 版本范围而非精确版本,允许 minor/patch 版本升级。攻击者可在包发布小版本更新时植入恶意代码。
config.json:40 使用精确版本号如 1.1.2
低危 权限提升
网络权限范围较广
声明的网络域名包含 13 个不同域名,部分域名使用通配符如 api.minimax.io,实际可能仅需其中 2-3 个
config.json:55 根据实际使用的 provider 精简域名列表
低危 供应链
npm 包无源码校验
config.json 中 source.audit 仅指向 GitHub 源码地址,未提供可信的完整性校验(如 hash 或 signature)
config.json:50 建议提供包的 SHA-256 hash 或使用 npm provenance
声明能力 vs 实际能力
文件系统 通过
声明 READ
→ 推断 READ
SKILL.md 声明读取 *.md 文件 命令执行 通过
声明 WRITE
→ 推断 WRITE
scripts/run.js:17 使用 spawnSync 执行 npx 命令 网络访问 通过
声明 READ
→ 推断 READ
config.json 声明访问各 AI API 域名 技能调用 通过
声明 NONE
→ 推断 WRITE
config.json 中 commands 定义 rewrite/check-quota 命令 可疑产物与外联
中危 外部 URL
https://www.npmjs.com/package/markdown-ai-rewriter README.md:3
中危 外部 URL
https://api.minimaxi.com/v1 README.md:71
中危 外部 URL
https://your-resource.openai.azure.com README.md:117
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| markdown-ai-rewriter | ^1.1.2 | npm (npx) | 否 | 使用 npx 动态拉取,未本地安装,版本锁定不足 |
文件构成
5 个文件 · 720 行
Markdown 2 个文件 · 521 行JavaScript 2 个文件 · 100 行JSON 1 个文件 · 99 行
需关注文件 · 2
config.json npx 动态拉取第三方包 · 版本锁定不足 · 网络权限范围较广 · npm 包无源码校验
README.md https://www.npmjs.com/package/markdown-ai-rewriter · https://api.minimaxi.com/v1 · https://your-resource.openai.azure.com · [email protected] · [email protected]
其他文件 · SKILL.md · postinstall.js · run.js
安全亮点
作者信息真实(Ping Si <[email protected]>),GitHub 仓库可追溯
MIT 许可证,开源可审计
config.json 主动声明了供应链风险(riskLevel: moderate, riskReason 已说明)
代码结构清晰,无混淆或隐藏功能
scripts/run.js 仅是简单的 npx 包装器,无额外恶意逻辑
postinstall.js 纯展示脚本,无敏感操作
未发现凭证收割、远程执行、数据外泄、敏感文件访问等高危行为