扫描报告
45 /100
token-watchdog
OpenClaw session cost monitor — alerts via Telegram when agent spend exceeds budget
Undeclared shell execution via execSync found in code not mentioned in SKILL.md documentation. The skill claims to 'read .jsonl files directly' but actually executes openclaw CLI commands for alerts and agent control.
谨慎使用
Request maintainer to document execSync usage for shell commands. Verify openclaw CLI tool integrity. Consider using HTTP API instead of CLI for Telegram messaging.
安全发现 5 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | Undeclared Shell Execution via execSync | token-watchdog.mjs:44 |
| 高危 | Agent Control Function Not Declared | token-watchdog.mjs:56 |
| 中危 | Remote Script Download Without Integrity Check | SKILL.md:29 |
| 中危 | Undeclared File Write Operations | token-watchdog.mjs:83 |
| 低危 | Hardcoded Telegram Target ID | token-watchdog.mjs:17 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | READ | READ,WRITE | ✓ 一致 | token-watchdog.mjs:writeFileSync to ~/.openclaw/workspace/memory/ |
| 命令执行 | NONE | WRITE | ✗ 越权 | token-watchdog.mjs:44 execSync for openclaw CLI commands |
| 网络访问 | READ | READ | ✓ 一致 | Reads session files, sends via openclaw CLI |
2 项发现
中危 外部 URL 外部 URL
https://ddaekeu3-cyber.github.io/synapse-ai/tools/token-watchdog/token-watchdog.mjs SKILL.md:29 中危 外部 URL 外部 URL
https://ddaekeu3-cyber.github.io/synapse-ai/ SKILL.md:82 目录结构
3 文件 · 14.6 KB · 420 行 JavaScript 1f · 328L
Markdown 1f · 82L
JSON 1f · 10L
├─
package.json
JSON
├─
SKILL.md
Markdown
└─
token-watchdog.mjs
⚠
JavaScript
依赖分析 2 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
Node.js built-ins | N/A | builtin | 否 | Uses only child_process and fs modules |
openclaw CLI | unknown | external | 否 | CLI tool invoked via execSync - security depends on openclaw tool integrity |
安全亮点
✓ Core functionality (session cost monitoring) appears legitimate and useful
✓ shellEscape() function provides basic protection against command injection
✓ Uses fs sync operations instead of eval() or dynamic code execution
✓ Session file reading is byte-offset based (incremental reads) - efficient approach
✓ State persistence prevents duplicate alerts on restarts