Scan Report
25 /100
openclaw-mobile-gateway-installer
Installs and manages OpenClaw mobile gateway as a systemd service. Provides a mobile-friendly HTTP API for managing models, channels, agents, skills, routing, healing policies, and chat sessions.
A legitimate gateway installer that performs standard deployment operations (systemd service management, npm install, Express HTTP server) but fails to declare its shell and filesystem WRITE capabilities in SKILL.md, creating a doc-to-code mismatch. The pre-scan's critical IOC flag on uninstall.sh line 11 is a false positive — the actual command is `sudo rm -rf "${INSTALL_DIR}"` with INSTALL_DIR defaulted to a scoped path, not a root-destroying `rm -rf /`.
Safe to install
Add explicit capability declarations to SKILL.md: declare shell:WRITE for systemctl/journalctl/openclaw CLI invocations, filesystem:WRITE for service/unit file creation, and network:READ for health probing. Consider narrowing the uninstall script's rm -rf scope to individual subdirectories instead of the top-level install directory to prevent accidental data loss.
Findings 7 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Shell execution capability not declared in SKILL.md Doc Mismatch | services.ts:1 |
| Medium | Network access not declared in SKILL.md Doc Mismatch | store.ts:12 |
| Medium | Install script writes to system directories without declaration Priv Escalation | install.sh:40 |
| Medium | Sensitive configuration file access without declaration Sensitive Access | services.ts:19 |
| Low | Installs a systemd service for persistence Persistence | install.sh:62 |
| Low | npm install without lockfile enforcement Supply Chain | install.sh:35 |
| Low | Uninstall script rm -rf scoped but lacks per-file safety Doc Mismatch | uninstall.sh:11 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Shell | NONE | WRITE | ✗ Violation | services.ts:execFileSync systemctl/journalctl; install.sh:systemctl/nm; check.sh… |
| Filesystem | NONE | WRITE | ✗ Violation | install.sh:mkdir/tee to /etc/systemd and /etc/openclaw-mobile-gateway |
| Network | READ | READ | ✓ Aligned | services.ts:fetch() probing OpenClaw targets; read-only probing documented |
| Environment | NONE | READ | ✗ Violation | services.ts:process.env.OPENCLAW_* reads; install.sh env propagation |
| Skill Invoke | NONE | NONE | — | No skill_invoke detected |
| Clipboard | NONE | NONE | — | No clipboard access detected |
| Browser | NONE | NONE | — | No browser access detected |
| Database | NONE | NONE | — | No database access detected |
1 Critical 8 findings
Critical Dangerous Command 危险 Shell 命令
rm -rf / uninstall.sh:11 Medium External URL 外部 URL
https://openclaw.example.com README.md:15 Medium External URL 外部 URL
https://openclaws.example.com SKILL.md:29 Medium External URL 外部 URL
http://127.0.0.1:4800/health SKILL.md:47 Medium External URL 外部 URL
https://alpha.openclaw.local/api backend/src/store.ts:12 Medium External URL 外部 URL
https://beta.openclaw.local/api backend/src/store.ts:20 Medium External URL 外部 URL
https://prod.openclaw.local/api backend/src/store.ts:28 Medium External URL 外部 URL
https://openclaws.gdcp.edu.cn backend/src/store.ts:36 File Tree
14 files · 93.4 KB · 3230 lines TypeScript 7f · 2954L
Shell 3f · 131L
Markdown 2f · 95L
JSON 2f · 50L
├─
▾
backend
│ ├─
▾
src
│ │ ├─
app.ts
TypeScript
│ │ ├─
index.ts
TypeScript
│ │ ├─
schemas.ts
TypeScript
│ │ ├─
services.ts
TypeScript
│ │ ├─
store.ts
TypeScript
│ │ ├─
types.ts
TypeScript
│ │ └─
utils.ts
TypeScript
│ ├─
package.json
JSON
│ └─
tsconfig.json
JSON
├─
check.sh
Shell
├─
install.sh
Shell
├─
README.md
Markdown
├─
SKILL.md
Markdown
└─
uninstall.sh
Shell
Dependencies 4 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
express | ^4.19.2 | npm | No | Caret range; last stable minor version |
cors | ^2.8.5 | npm | No | Well-maintained middleware |
zod | ^3.23.8 | npm | No | Schema validation library; pinned |
tsx | ^4.16.2 | npm | No | devDependency only; unpinned major version |
Security Positives
✓ No credential harvesting or exfiltration detected — API keys from config are loaded for model routing only and remain local
✓ No obfuscation or base64-encoded payloads found in the codebase
✓ No reverse shell, C2 communication, or data theft patterns observed
✓ All shell executions (systemctl, journalctl, openclaw CLI) are for legitimate deployment and service management
✓ Input validation via Zod schemas prevents injection attacks on all HTTP API endpoints
✓ Token generation uses crypto.randomBytes for secure random token values
✓ Dependency versions are reasonably pinned (express ^4.19.2, zod ^3.23.8, cors ^2.8.5)
✓ No curl|bash or wget|sh remote script execution patterns
✓ uninstall.sh does NOT contain 'rm -rf /' — the pre-scan IOC was a false positive; actual command is scoped to ${INSTALL_DIR}
✓ The skill's actual functionality matches its described purpose as a gateway installer