Low Risk — Risk Score 18/100
Last scan:2 days ago Rescan
18 /100
gitlab-auto-review
Automated AI code review for GitLab Merge Requests via polling
GitLab MR 自动代码审查工具,功能正常,无恶意行为,但存在文件系统权限声明缺失的文档瑕疵。
Skill Namegitlab-auto-review
Duration39.4s
Enginepi
Safe to install
建议在 SKILL.md 的 metadata.requires 中补充 files 声明(读取 mr-reviewed.json、JSON payload 文件),并明确 write 文件权限用途。

Findings 3 items

Severity Finding Location
Low
文件系统读取权限未在 SKILL.md 中声明
post-comment 命令支持 --file 参数读取本地 JSON 文件进行评论提交,这是合法的文件读取操作,但 metadata.requires 中未声明 files 字段。
const fs = require('fs'); const payload = fs.readFileSync(args[1], 'utf8');
→ 在 metadata.requires 中添加 files: [{path: "*.json", purpose: "读取评论 JSON payload"}]
scripts/gitlab-api.js:109
Low
文件系统写入权限未声明
mr-reviewed.json 用于跟踪已审查的 MR 状态,cron-setup.md 提到需要该文件可写,但 SKILL.md 中未声明写入权限。
path: {baseDir}/mr-reviewed.json
→ 在 metadata.requires 中声明 files: [{path: "mr-reviewed.json", purpose: "持久化已审查 MR 记录"}]
references/cron-setup.md:8
Info
get-file 功能范围超出审查规则需求
get-file 命令理论上可获取任意分支的任意文件内容,而不仅仅是 .gitlab-review-prompt.md。这不是安全漏洞(功能设计如此),但如果凭证被泄露,理论上可枚举 GitLab 仓库文件。
getFile(projectId, branch, filePath)
→ 这符合 GitLab API 的正常用法,无需修改。风险由凭证保护。
scripts/gitlab-api.js:77
ResourceDeclaredInferredStatusEvidence
Network WRITE WRITE ✓ Aligned scripts/gitlab-api.js:30 - fetch() 调用声明的 GITLAB_URL
Environment READ READ ✓ Aligned scripts/gitlab-api.js:17-18 - 读取 GITLAB_URL 和 GITLAB_TOKEN
Filesystem NONE READ+WRITE ✓ Aligned scripts/gitlab-api.js:109 - fs.readFileSync; references/cron-setup.md:8 - mr-rev…

File Tree

4 files · 12.2 KB · 357 lines
Markdown 3f · 184L JavaScript 1f · 173L
├─ 📁 references
│ ├─ 📝 cron-setup.md Markdown 41L · 1.9 KB
│ └─ 📝 review-guidelines.md Markdown 64L · 2.1 KB
├─ 📁 scripts
│ └─ 📜 gitlab-api.js JavaScript 173L · 5.2 KB
└─ 📝 SKILL.md Markdown 79L · 2.9 KB

Dependencies 1 items

PackageVersionSourceKnown VulnsNotes
Node.js (fetch, fs, path, process) 内置模块 runtime No 仅使用 Node.js 内置模块,无外部依赖

Security Positives

✓ 代码结构清晰,所有 API 调用均指向声明的 GITLAB_URL,无隐蔽外部通信
✓ 无凭证收割行为,仅读取声明的环境变量 GITLAB_TOKEN
✓ 无 base64 编码管道、eval、裸 IP 请求等高危模式
✓ 无远程脚本下载或 shell 管道执行
✓ 依赖最小化(仅使用 Node.js 内置 fetch 和 fs 模块)