Back to skill

Security audit

Multi Agent Group Chat

Security checks for vulnerabilities and agentic risk

Overview

This plugin openly exists to auto-post sub-agent replies into group chats, but its routing and logging are too broad for shared chat environments without stronger user controls.

Review this before installing in any group that may handle private work. It should only be enabled where all participants understand that sub-agent replies will be posted back into the chat, and where the OpenClaw host can be trusted to provide correct session metadata. Prefer a version with per-chat opt-in, destination allowlists, stronger parent-session validation, and no response-content logging.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
index.ts:67
Finding

Untrusted Session Metadata Controls Cross-Channel Message Forwarding

Content
View full analysis
0); } ``` The resulting routing metadata is subsequently used to send the reply: ```ts // 1. 检查是否是内部任务 if (!isInternalTask(ctx)) { api.logger?.debug?.("[multi-agent-chat] 非内部任务,跳过"); return; } // 2. 获取来源群信息 const { channel, chatId, accountId } = extractSourceInfo(ctx); if (!chatId) { api.logger?.debug?.("[multi-agent-chat] 无法获取来源群 ID,跳过"); return; } // 3. 获取回复内容 const reply = getFinalReply(event); if (!reply) { api.logger?.debug?.("[multi-agent-chat] 无有效回复,跳过"); return; } // 4. 确定使用的 channel 和 accountId const finalChannel = channel || "telegram"; const finalAccountId = accountId || ctx?.agentId || "default"; // 5. 发送到群里 api.logger?.info?.( `[multi-agent-chat] ${finalAccountId} → ${finalChannel}:${chatId}: ${reply.slice(0, 50)}...` ); // 尝试使用 gateway.rpc if (api.gateway?.rpc) { await api.gateway.rpc("message.send", { channel: finalChannel, accountId: finalAccountId, target: chatId, message: reply }); } // 备选:使用 runtime.message else if (api.runtime?.message?.send) { await api.runtime.message.send({ channel: finalChannel, accountId: finalAccountId, target: chatId, message: reply }); } // 备选:使用 api.message else if (api.message?.send) { await api.message.send({ channel: finalChannel, accountId: finalAccountId, target: chatI ...[truncated 2614 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
index.ts:137
Finding

Sensitive Agent Response Content Exposed in Informational Logs

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Ssd 3

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The plugin automatically forwards a sub-agent's final reply to a group chat based solely on session metadata and loose 'internal task' heuristics. This creates a clear data exfiltration path: sensitive information produced during a sub-agent task can be reposted into an external group without content filtering, authorization checks, or explicit user confirmation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly forwards sub-agent outputs back into the originating group chat, but the user-facing description does not prominently warn that task contents and replies may be exposed to all group members. This creates a real confidentiality risk because users may assume inter-agent coordination is internal while sensitive prompts, data, or generated content are automatically disclosed to a broader audience.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The plugin description explicitly states that a child agent will automatically send its reply back to the source group chat without requiring group ID configuration. That implies broad automatic cross-context message propagation with weak trigger constraints, which can cause unintended disclosure, spam, or unsafe autonomous actions in shared chat environments.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file’s human-facing description, comments, and runtime log messages are written exclusively in Chinese, including the plugin banner and status/error messages. This imposes a specific language on users/operators without offering a language choice or documenting that the skill is intentionally region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

The user-facing description is written only in Chinese and does not indicate any language choice or opt-in for other locales. This may violate language or locale policy when a skill is presented in a fixed language without offering users a choice or documenting a justified locale restriction.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.