T06 · System Persistence
- Location
references/launchd-plist.md:17- Finding
Persistent Launch Agent Runs the Broker Across User Sessions
- Content
View full analysis
/references/launchd-plist.md ~/Library/LaunchAgents/ai.openclaw.agent-bridge.plist # Edit the plist to set correct paths, then: launchctl load ~/Library/LaunchAgents/ai.openclaw.agent-bridge.plist ``` From `references/launchd-plist.md:17-21`: ```xml RunAtLoad KeepAlive ``` ### Technical Analysis The documented installation creates and loads a macOS per-user launch agent. `RunAtLoad` starts the broker automatically when the launch agent is loaded or the user logs in, while `KeepAlive` causes launchd to restart it after termination. This behavior survives the original Skill invocation and is not required for the broker's fundamental functionality. The server can instead be started on demand when inter-agent communication is needed. Continuous persistence therefore exceeds the minimum operational requirement. The launch agent executes Python and server files from a user-writable directory under `~/.openclaw/agent-bridge-mcp`. Any subsequent unauthorized modification of those files or their virtual environment would be executed automatically by launchd. ### Attack Path 1. The user follows the Skill instructions and copies the plist into `~/Library/LaunchAgents`. 2. The user edits the paths and invokes `launchctl load`. 3. launchd starts the broker and retains its registration across sessions. 4. The service is restarted automatically because `KeepAlive` is enabled. 5. If the broker script, interpreter, or virtual environment is subsequently replaced or modified, the altered code executes automatically under the user's account. ### Impact Assessment The service obtains persistent code execution with the privileges of the affected macOS user. It does not obtain ro ...[truncated 234 chars]- Remediation
View remediation
