T06 · System Persistence
- Location
SKILL.md:63- Finding
Persistent External-Control Tunnel Installed as a User Service
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 63-83
Vulnerability Type: T06: System Persistence
Risk Level: HighVulnerable Code
bash poke tunnel http://localhost:3210/mcp --name "OpenClaw"bash cat > ~/.config/systemd/user/openclaw-poke-tunnel.service << 'EOF' [Unit] Description=OpenClaw Poke Tunnel After=openclaw-poke-mcp.service Requires=openclaw-poke-mcp.service [Service] Type=simple ExecStart=/usr/local/bin/poke tunnel http://localhost:3210/mcp --name "OpenClaw" Restart=always RestartSec=10 [Install] WantedBy=default.target EOF systemctl --user daemon-reload systemctl --user enable --now openclaw-poke-tunnelTechnical Analysis
The Skill directs the user to create and enable a persistent systemd user service that connects the local MCP endpoint to Poke's external relay. The
Restart=alwaysdirective automatically restores the connection after failures, whileenable --nowstarts it immediately and configures it to return in subsequent user sessions.This tunnel persists beyond the Skill invocation and provides an ongoing external path to the MCP server. The documentation does not require per-connection user approval, provide a bounded lifetime, or include equivalent teardown instructions. Because the MCP server exposes operationally sensitive capabilities elsewhere in the Skill, the persistence materially increases the consequences of compromised Poke credentials, relay infrastructure, or local authentication material.
Attack Path
- The user installs and configures the Poke integration.
- The documented commands create a systemd user service.
systemctl --user enable --nowstarts the service and enables future automatic startup.- The service establishes a tunnel from the local MCP endpoint to Poke's external relay.
Restart=alwaysre-establishes the tunnel after interruption.- If the Poke account, relay, API key, or ...[truncated 697 chars]
- Remediation
View remediation
Remediation Suggestions
- Do not install or enable an automatically starting tunnel by default.
- Use an explicitly initiated, foreground tunnel with a short lifetime for normal operation.
- Require informed user confirmation before enabling any persistent service.
- Provide documented shutdown and removal commands for the tunnel and systemd unit.
- Use short-lived, revocable credentials scoped to a single connection.
- Apply per-tool authorization at the MCP server rather than treating tunnel authentication as authorization for every tool.
- Require interactive confirmation for sensitive operations such as reading files, retrieving logs, or injecting messages into existing sessions.
- Record tunnel connections and sensitive tool calls in a tamper-resistant audit log.
