T08 · Insecure Dependencies
- Location
resources/install.md:36- Finding
Unpinned Third-Party Plugin and Dependency Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent ACP messaging plugin guide, but it asks users to install mutable remote code, expose a generated credential in chat, and grant broad identity privileges.
Install only if you trust the remote ACP plugin repositories and are comfortable with a network-facing agent identity. Before use, pin and review the plugin version, avoid printing or sharing seedPassword, replace allowFrom ["*"] with trusted AIDs, review any agent.md content before sync, and avoid granting operator admin scopes unless you understand why they are required.
resources/install.md:36Unpinned Third-Party Plugin and Dependency Installation
resources/install.md:249Generated ACP Seed Password Is Disclosed in the Completion Report
resources/multi-identity.md:229ACP Identity Provisioning Assigns Broad Administrative Operator Scopes
Referenced artifact was not completely inspected
- **[多身份模式](./resources/multi-identity.md)** — 多 Agent 多 AID 架构,agents.list 定义、identity 绑定、人格隔离、workspace 配置、身份创建/删除全流程。
The skill description is written as an instruction to operate in Chinese and does not indicate that the language is optional or user-selectable. This creates a locale/language policy concern because the skill appears to require a specific language without documented opt-in or justification.
The documentation states that agent.md is automatically uploaded on ACP connection and then publicly accessible via a URL, but it does not clearly warn users that its contents become public. This creates a real privacy and information disclosure risk because users may include sensitive operational details, identities, capabilities, or personal data in agent.md under the assumption that it is local metadata.
In workspace mode, the plugin auto-generates agent.md by extracting content from multiple local workspace files and then uploads it, but the documentation does not clearly warn that local files are being transformed into publicly retrievable content. This is more dangerous in context because files like IDENTITY.md, SOUL.md, AGENTS.md, TOOLS.md, HEARTBEAT.md, and skill summaries can contain sensitive internal descriptions, capabilities, operational context, or personal metadata that users would not expect to be published.
The documentation provides a copy-pastable configuration that sets allowFrom: ["*"], which effectively permits messages from any AID, while also showing a seedPassword field without any security warning. In a security-sensitive messaging/channel plugin, this can normalize unsafe defaults and lead users to deploy agents with overly broad access and sensitive credential material in plaintext configuration.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
| `PREFLIGHT_FAIL` + `is used by another user` | AID 被占用 | 更换 `agentName` |
| `PREFLIGHT_FAIL` + `signIn` | AID 已存在但密码不匹配 | 使用正确 `seedPassword` 或更换 `agentName` |
| `PREFLIGHT_FAIL` + `TIMEOUT` | 网络不可达 | 检查网络/代理 |
| `/acp` skill 不可用 | 插件未启用或 skill 未加载 | 检查 `plugins.entries.acp.enabled` 与 `skill/acp/SKILL.md` |
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
| `PREFLIGHT_FAIL` + `is used by another user` | AID 被占用 | 更换 `agentName` |
| `PREFLIGHT_FAIL` + `signIn` | AID 已存在但密码不匹配 | 使用正确 `seedPassword` 或更换 `agentName` |
| `PREFLIGHT_FAIL` + `TIMEOUT` | 网络不可达 | 检查网络/代理 |
| `/acp` skill 不可用 | 插件未启用或 skill 未加载 | 检查 `plugins.entries.acp.enabled` 与 `skill/acp/SKILL.md` |
The document states that receiving a message from a new AID automatically creates a contact record and initializes a trust-related credit score, and elsewhere it also documents automatic appending of AI-generated summaries into the contact's notes. These are implicit state and data modifications triggered by inbound activity rather than explicit user action, which can create privacy, data integrity, and consent issues—especially if users do not expect unsolicited entities to be persisted or annotated automatically.
The documentation explicitly states that pulled group messages are persisted locally in a JSONL file under the user's home directory, but it does not warn that this stores conversation history on disk where it may be retained indefinitely, backed up, or exposed to other local users/processes depending on host security and file permissions. In a messaging/group-chat skill, silent local persistence increases privacy and confidentiality risk, especially for sensitive agent-to-agent conversations.
The skill documents a dissolve_group operation without indicating that it is destructive or potentially irreversible, which can lead users or calling agents to delete a group unintentionally. In collaborative group chat contexts, dissolving a group can disrupt communications, remove access to shared state, and cause operational or data-loss consequences if users assume it is reversible.
The skill instructs the agent to back up and then modify ~/.openclaw/openclaw.json and create local files, but it does not clearly warn the user up front that their persistent configuration and filesystem will be changed. This creates a consent and integrity risk: users may unknowingly authorize destructive or hard-to-audit local changes, especially when the same workflow can also restore from backup on validation failure.
The install instructions explicitly include the generated seedPassword in the final completion report, causing a sensitive credential to be displayed back to the user and potentially captured in chat history, logs, screenshots, or telemetry. In the context of an ACP identity bootstrap flow, exposing this secret weakens account security and can enable impersonation or unauthorized reuse if the transcript is accessible to others.
该 markdown 文件全文仅以中文提供说明,未说明这是特定区域专用文档,也未向用户提供语言或本地化选择。根据规则,若技能在自然语言层面强制特定语言且没有用户选择或明确合理的区域限定,应视为政策风险。
The documentation shows seedPassword values embedded directly in configuration examples and discusses their use for protecting private keys, but it does not clearly warn that these are sensitive secrets that must not be reused, logged, committed, or shared. In a real deployment, users often copy examples verbatim or store configs insecurely, which can expose key-encryption material and weaken identity protection.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 方式 A:使用 agents.list[].workspace 配置的自定义路径
WORKSPACE_DIR=~/.openclaw/workspace-funny-bot
mkdir -p "$WORKSPACE_DIR"
# 方式 B:省略 workspace 配置,核心代码自动分配
# 非默认 Agent 的默认路径为 ~/.openclaw/workspace-{agentId}
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 方式 A:使用 agents.list[].workspace 配置的自定义路径
WORKSPACE_DIR=~/.openclaw/workspace-funny-bot
mkdir -p "$WORKSPACE_DIR"
# 方式 B:省略 workspace 配置,核心代码自动分配
# 非默认 Agent 的默认路径为 ~/.openclaw/workspace-{agentId}
The deletion procedure instructs users to remove agent configuration and workspace directories but lacks a strong warning that these actions may permanently destroy persona, memory, and operational data. Because the instructions are administrative and destructive, omission of backup/recovery guidance creates a real risk of irreversible data loss.
The file documents certificate registration and agent.md upload to remote ACP infrastructure without a clear warning that metadata and identity material are being transmitted to external services. This can lead operators to expose sensitive profile or behavioral information unintentionally, especially because agent.md is derived from workspace identity/persona files.
The entire skill document is written in Chinese and provides no indication that alternative languages are supported or that the locale restriction is intentional for a region-specific use case. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.
L003 写明“当用户询问 ACP 排名、活跃度分数、Agent 简介、Agent 搜索或 ACP 数据时使用”,其中“Agent 简介”“Agent 搜索”“ACP 数据”范围较宽,缺少明确边界、限定场景或排除条件。对于 markdown 文件,这类宽泛自然语言触发条件容易与普通对话需求重叠,增加非预期调用风险。
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# GET
curl -s "https://rank.agentunion.cn/search/text?q=助手&tags=assistant,chat&page=1&page_size=10"
# POST
curl -s -X POST "https://rank.agentunion.cn/search/text" \
-H "Content-Type: application/json" \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# GET
curl -s "https://rank.agentunion.cn/search/vector?q=我需要写代码的助手&limit=10"
# POST
curl -s -X POST "https://rank.agentunion.cn/search/vector" \
-H "Content-Type: application/json" \
No suspicious patterns detected.