低风险 — 风险评分 20/100
上次扫描:4 小时前 重新扫描
20 /100
run402-test
Test skill for Run402 — provision AI-native Postgres databases with REST API, auth, and row-level security using x402 micropayments on Base
功能正常的数据库配置工具,但存在文档-行为差异(未声明本地配置读取)
技能名称run402-test
分析耗时27.6s
引擎pi
ClawHub Run402 Test v2.0.1 by majortal
📥 262
ClawHub 判定 可疑 llm_suspiciouspotential_exfiltration
可以安装
建议补充 SKILL.md,声明该技能会读取 ~/.config/run402/projects.json 获取凭证

安全发现 3 项

严重性 安全发现 位置
低危
未声明的本地配置读取 文档欺骗
代码读取 ~/.config/run402/projects.json 获取 service_key,但 SKILL.md 仅描述 REST API 调用流程,未提及本地配置依赖
const projects = JSON.parse(readFileSync(join(CONFIG_DIR, 'projects.json'), 'utf-8'));
→ 在 SKILL.md 补充说明:需提前通过 CLI 或其他方式配置项目,或描述本地配置文件格式
sql2.mjs:8
低危
访问用户配置目录 敏感访问
使用 homedir() 访问用户主目录下的 .config/run402 路径,读取包含 service_key 的配置文件
const CONFIG_DIR = join(homedir(), '.config', 'run402');
→ 属于正常数据库工具行为,但应在文档中声明
sql2.mjs:6
提示
SQL 参数直接拼接 代码执行
process.argv.slice(3).join(' ') 直接作为 SQL body 发送,无参数化查询,但属于 PostgreSQL REST API 的正常用法
body: process.argv.slice(3).join(' ')
→ 这是远程 API 的预期用法,调用方需自行确保 SQL 安全性
sql2.mjs:14
资源类型声明权限推断权限状态证据
文件系统 READ READ ✓ 一致 sql2.mjs:8 读取 ~/.config/run402/projects.json,但 SKILL.md 未声明此行为
网络访问 READ READ ✓ 一致 sql2.mjs:13-15 向 api.run402.com 发送 SQL 请求,与文档一致
环境变量 NONE NONE 无环境变量遍历
命令执行 NONE NONE 无 shell 命令执行
4 项发现
🔗
中危 外部 URL 外部 URL
https://api.run402.com/v1/projects
SKILL.md:13
🔗
中危 外部 URL 外部 URL
https://api.run402.com/admin/v1/projects/$PROJECT_ID/sql
SKILL.md:24
🔗
中危 外部 URL 外部 URL
https://api.run402.com/rest/v1/todos?done=eq.false
SKILL.md:33
🔗
中危 外部 URL 外部 URL
https://api.run402.com
sql2.mjs:5

目录结构

2 文件 · 1.8 KB · 58 行
Markdown 1f · 43L JavaScript 1f · 15L
├─ 📝 SKILL.md Markdown 43L · 1.1 KB
└─ 📜 sql2.mjs JavaScript 15L · 680 B

安全亮点

✓ 代码逻辑清晰简单,无混淆
✓ 无凭证外泄行为(service_key 仅用于远程 API 认证)
✓ 网络请求指向明确的服务端点 api.run402.com
✓ 无反向 shell、恶意依赖或后门代码