T03 · Remote Payload Retrieval and Execution
- Location
src/bridge.js:48- Finding
Unverified Remote Installer Download and Execution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill’s note features are coherent, but its remote bridge setup runs unverified downloaded installer code, exposes secrets to that installer, and creates an auto-starting tunnel service.
Install only if you trust SlonAide/AideNote and specifically want the phone-to-local-OpenClaw bridge. Treat bridge setup as running external installer code on your computer and enabling a persistent remote tunnel; use a least-privilege API key, avoid custom installer or API URLs unless you control them, and rotate credentials if diagnostic output or logs may have captured key or token fragments.
src/bridge.js:48Unverified Remote Installer Download and Execution
src/bridge.js:56Unverified Installer Inherits All Process Environment Secrets
src/bridge.js:38Remote Bridge Establishes Cross-Session Login Persistence
src/tools.js:27API Credentials Are Embedded in URLs and Partially Exposed in Output
The tool downloads a shell or PowerShell installer from a remote URL and immediately executes it with bash or powershell.exe, giving the remote server full code execution on the user's machine. Because this installer sets up a tunnel/bridge to local services, compromise of the CDN, URL configuration, or installer content could lead to persistent arbitrary code execution and unauthorized remote access.
Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.
The skill advertises note-management features but also instructs users to remotely download, install, and auto-start a bridge/tunnel service that enables remote connectivity to the local machine. That is a materially different and higher-risk behavior than the declared purpose, especially because it changes system state and exposes a local service through a relay.
The skill advertises note-management features but also instructs users to remotely download, install, and auto-start a bridge/tunnel service that enables remote connectivity to the local machine. That is a materially different and higher-risk behavior than the declared purpose, especially because it changes system state and exposes a local service through a relay.
The skill advertises note-management features but also instructs users to remotely download, install, and auto-start a bridge/tunnel service that enables remote connectivity to the local machine. That is a materially different and higher-risk behavior than the declared purpose, especially because it changes system state and exposes a local service through a relay.
The skill advertises note-management features but also instructs users to remotely download, install, and auto-start a bridge/tunnel service that enables remote connectivity to the local machine. That is a materially different and higher-risk behavior than the declared purpose, especially because it changes system state and exposes a local service through a relay.
This file adds tooling to install, start, and inspect a remote bridge service that enables a mobile app to connect to the local OpenClaw instance. That capability is materially broader than the stated skill purpose of recording transcription, note management, and semantic search, and it creates a network-accessible control path into the host environment.
The tool performs installation and execution of a remote bridge installer as soon as the tool is invoked, without an explicit user-facing warning describing that software will be downloaded, executed, and configured to auto-start. This deprives users of informed consent for a high-risk action that changes system state and may expose local services remotely.
The connection-test tool returns portions of the configured API key and bearer token directly in user-visible output. Even when partially redacted, credential fragments materially increase secret exposure risk, aid correlation across logs/screenshots, and are unrelated to the core note-management function. In this skill context, exposing auth material is especially dangerous because the same token is then used to access private note data from the remote service.
The skill description highlights transcription, summarization, semantic search, and remote API-backed processing, but the README does not clearly disclose that user audio, transcripts, and notes may be transmitted to external services for processing. For a recording-notes skill handling potentially sensitive meeting content, missing privacy disclosure can lead users to expose confidential or regulated data without informed consent.
The README instructs users to run npx clawhub install slonaide without pinning a specific package version. This creates a supply-chain risk because npx will fetch and execute the latest published package at install time, so a compromised or malicious upstream release could execute arbitrary code on the user's machine.
The README promotes installation of a remote bridge and states it will auto-start on login, but does not clearly warn that this process may download and execute external installer scripts. This is dangerous because users are being nudged to install persistent local software with remote connectivity, increasing the risk of unnoticed code execution, persistence, and compromise if the installer URL or distribution channel is ever tampered with.
The skill exposes behaviors that imply network access, local file/config reads, and environment access, but it does not declare an explicit tool scope or permission boundary. That increases the risk of overbroad execution and makes it harder for users or the platform to understand and constrain sensitive actions such as reading local config or using secrets.
Referencing npx clawhub install slonaide without a pinned version allows the fetched package or installer behavior to change over time, including supply-chain compromise or unexpected breaking changes. Users may execute whatever version is current at install time, reducing reproducibility and trust.
The bridge setup command is introduced in the quick-start flow without a strong up-front warning that it installs software and registers an auto-start service on macOS/Windows. Users may invoke it as a routine setup step without understanding the persistence and remote-access implications, increasing the chance of unsafe consent.
The bridge description explains installation mechanics but omits a prominent privacy and integrity warning that the feature enables remote connectivity from the AiDeNote App to the user's local OpenClaw instance. In a skill dealing with note data and local services, that omission is significant because it can expose sensitive content or local agent capabilities through a relay/tunnel path.
The documented use of a LaunchAgent plist indicates persistence via auto-start for the tunnel service. Persistence is not automatically malicious, but in this context it supports a remote bridge service and should be treated as security-sensitive because it keeps remote-access functionality available across logins.
> tunnel disconnected: auth rejected: invalid token
> ```
>
> **解决方法:** 编辑 `~/Library/LaunchAgents/cn.aidenote.openclaw-tunnel.plist`,
> 删除 `--token-endpoint` 及其后面的 URL 参数行,然后重启服务:
> ```bash
> launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/cn.aidenote.openclaw-tunnel.plist
The instructions to restart the LaunchAgent reinforce that the skill relies on a persistent background service. For a bridge/tunnel component, persistent background execution expands the exposure window and can maintain remote connectivity longer than users expect.
> **解决方法:** 编辑 `~/Library/LaunchAgents/cn.aidenote.openclaw-tunnel.plist`,
> 删除 `--token-endpoint` 及其后面的 URL 参数行,然后重启服务:
> ```bash
> launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/cn.aidenote.openclaw-tunnel.plist
> launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/cn.aidenote.openclaw-tunnel.plist
> ```
Bootstrapping the LaunchAgent again confirms continued session persistence for the tunnel service. In combination with remote bridge functionality, persistence increases operational risk if the host, relay, or local agent is later misconfigured or compromised.
> 删除 `--token-endpoint` 及其后面的 URL 参数行,然后重启服务:
> ```bash
> launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/cn.aidenote.openclaw-tunnel.plist
> launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/cn.aidenote.openclaw-tunnel.plist
> ```
### 6. 检查 bridge 状态
The manifest presents the plugin as a recording-note assistant, but its configuration exposes remote bridge installation, tunnel binary download, relay host, and local gateway port settings. This capability mismatch increases the risk of deceptive functionality and enables remote code/script installation and tunneling behavior that could be abused for unauthorized access, persistence, or data exfiltration if the referenced URLs or backend are compromised.
This code file contains natural-language strings and comments exclusively in Chinese, including status messages, instructions, and help text. Under the policy, forcing a specific language without user opt-in is a language/locale policy violation unless the locale restriction is explicitly justified.
The script places the API key directly in the URL path when requesting a token. Even over HTTPS, URL-based secrets are more likely to be captured in server logs, proxy logs, browser/history tooling, or monitoring systems than secrets sent in headers or request bodies. In a test utility, this is still risky because users are encouraged to pass live credentials on the command line and the script gives no warning about exposure paths.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
}
try:
response = requests.post(list_url, headers=headers, json=payload, timeout=10)
data = response.json()
if data.get("code") == 200:
The error message is presented only in Chinese, and the rest of the tool's user-facing descriptions and results are also Chinese-only. This imposes a specific language on all users without opt-in or documented regional justification.
The code passes config.apiKey into the child process environment as AIDE_NOTE_API_KEY, handing a secret to a remotely fetched installer and any subprocesses it launches. Without clear disclosure and tighter handling, this increases the chance of credential leakage through process inspection, logs, child-process inheritance, or malicious installer behavior.
Detected: suspicious.dangerous_exec, suspicious.env_credential_access