Scan Report
45 /100
calendar_memo
本地日程记事本 - 添加、查看、完成和删除待办事项和日程安排
Skill executes undeclared shell commands via child_process.exec and runs persistent background timers without proper documentation disclosure.
Use with caution
Add explicit documentation about shell execution, background processes, and required network permissions. Consider using a safer IPC mechanism instead of exec() for inter-process communication.
Attack Chain 4 steps
◎
Entry Skill loaded via SKILL.md documentation describing only local scheduling features
SKILL.md:1⬡
Escalation onStart() triggers startReminderChecker() which creates persistent setInterval
SOUL.md:44⬡
Escalation Every 60 seconds, checkReminders() builds command string with user-controlled title
reminder.js:35◉
Impact exec() executes 'openclaw message send' through system shell with potentially unsanitized input
reminder.js:18Findings 4 items
| Severity | Finding | Location |
|---|---|---|
| High | Undeclared shell command execution Priv Escalation | reminder.js:18 |
| Medium | Shell command injection risk in notification function RCE | reminder.js:14 |
| Medium | Hidden background daemon without disclosure Persistence | reminder.js:55 |
| Low | Minor doc-to-code mismatch on filesystem permissions Doc Mismatch | SOUL.md:13 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | READ | WRITE | ✓ Aligned | reminder.js:3 - fs module available; SOUL.md:13 - fs.writeFileSync writes MEMORY… |
| Shell | NONE | WRITE | ✗ Violation | reminder.js:4 - const { exec } = require('child_process'); reminder.js:18 - exec… |
| Network | NONE | WRITE | ✗ Violation | reminder.js:18 - exec runs 'openclaw message send --channel feishu' which sends … |
| Environment | NONE | NONE | — | No direct environment variable access found |
File Tree
4 files · 11.3 KB · 363 lines Markdown 3f · 279L
JavaScript 1f · 84L
├─
MEMORY.md
Markdown
├─
reminder.js
JavaScript
├─
SKILL.md
Markdown
└─
SOUL.md
Markdown
Security Positives
✓ No credential harvesting or sensitive data exfiltration detected
✓ No base64 encoding, eval(), or obfuscation techniques found
✓ No network requests to unknown external IPs
✓ Data stays local in MEMORY.md without transmission
✓ User input is processed through structured parsing rather than eval()