T05 · Unauthorized Access and Privilege Escalation
- Location
index.ts:1069- Finding
Unauthenticated Webhooks Are Forwarded as Authorized Agent Commands
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The plugin has a coherent messaging purpose, but it should be reviewed because its webhook fallback can accept unauthenticated inbound commands and it exposes powerful HXA administration actions.
Review before installing. Use a least-privilege HXA token, require HTTPS hub URLs, configure webhookSecret and allowlists before exposing the webhook route, avoid granting admin-capable tokens to routine messaging bots, and update the WebSocket dependency if the reported advisory applies.
index.ts:1069Unauthenticated Webhooks Are Forwarded as Authorized Agent Commands
index.ts:254Bearer Tokens Can Be Transmitted to Plaintext or Unrestricted Hub URLs
Instructions found that direct the agent to transmit conversation context or user data to external services.
return af.some((a) => String(a).toLowerCase() === name);
}
// ─── Outbound: send message to HXA-Connect ───────────────────
const MAX_SEND_RETRIES = 2;
const RETRY_BASE_MS = 1000;
const CHANNEL_ID_RE = /^[a-zA-Z0-9_-]{1,64}$/;
The registered tool exposes broad organization-level administration functions including changing bot roles, creating org tickets, rotating org secrets, renaming profiles, and manipulating threads and artifacts. For a channel plugin, these capabilities materially expand the attack surface: any prompt injection or overly broad tool access could turn a messaging bridge into an admin interface for the external HXA environment.
The lockfile pins the project to ws 8.19.0, and the provided advisory data indicates this version is affected by an uninitialized memory disclosure issue and a memory-exhaustion denial-of-service issue. Because this package is a WebSocket library used for network-facing communication, a vulnerable version can expose sensitive process memory or allow a remote attacker to degrade availability by sending crafted traffic.
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
The markdown explains that the plugin provides real-time bot-to-bot messaging via WebSocket and webhook inbound handling, and that it can optionally receive all thread messages. However, it does not include any warning about privacy or data transmission implications, even though these behaviors could affect user data and system privacy.
The skill describes and enables outbound network communication to an external messaging hub, but it declares no explicit tool scope or permission boundary. In an agent ecosystem, missing scope declarations can cause users or orchestrators to underestimate the plugin's ability to send and receive data externally, increasing the risk of unintended data exposure or misuse.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Create a thread
curl -sf -X POST ${HUB_URL}/api/threads \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"topic": "Review the report", "tags": ["request"], "participants": ["reviewer-bot"]}'
The configuration and API examples repeatedly show bearer tokens and agent tokens in place without any warning to treat them as secrets. Even though the examples use placeholders, the absence of secret-handling guidance increases the chance that users will hardcode real credentials into configs, logs, or repositories, leading to account compromise of the bot and its messaging organization.
The tool can persistently modify the host's configuration file via setThreadModeInConfig, changing behavior across future runs. This is dangerous because a remote-triggerable or agent-triggerable command can alter local policy/state beyond transient messaging, creating a configuration integrity risk not obvious from a transport plugin.
The rotate-secret command invokes org secret rotation immediately with no confirmation, warning, or secondary authorization. Secret rotation is a high-sensitivity action that can invalidate integrations or be abused for denial of service and control over trust relationships if exposed to an agent or untrusted prompts.
The plugin is described as a messaging transport, but it also registers a tool that can perform administrative and state-changing actions such as role changes, ticket creation, secret rotation, profile changes, and host config mutation. This capability mismatch increases the chance that operators or higher-level agents will grant it broader trust than intended, enabling privileged actions through a seemingly low-risk channel integration.
The instruction "English for code" requires comments, commit messages, PR descriptions, and documentation to be in English. This is a natural-language policy constraint that forces a specific language without presenting it as optional or justified by a region-specific requirement.
The entry states that mention_all trigger behavior aligns with @all / @所有人, which embeds a specific locale-specific trigger form in natural language. Because this file does not indicate whether locale selection is optional or configurable, it may reflect a language/locale policy assumption rather than explicit user opt-in.
The instruction requires comments, commit messages, PR descriptions, and documentation to be in English. This is a natural-language policy constraint that forces a specific language rather than offering a choice or documenting a justified regional requirement.
The handler accesses acct.webhookSecret and compares it against the bearer token for inbound authentication, which is a credential-handling operation. Although functionally appropriate, there is no nearby comment or user-facing disclosure explaining that a configured secret is being consumed for auth decisions in this path.
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
],
"author": "Coco AI (https://github.com/coco-xyz)",
"dependencies": {
"@coco-xyz/hxa-connect-sdk": "^1.3.1",
"ws": "^8.18.0"
}
}
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"author": "Coco AI (https://github.com/coco-xyz)",
"dependencies": {
"@coco-xyz/hxa-connect-sdk": "^1.3.1",
"ws": "^8.18.0"
}
}