T09 · Insecure Skill Coding Practices
- Location
SKILL.md:68- Finding
Messaging Accounts Use an Unrestricted Group Access Policy by Default
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 68 and 139
Vulnerability Type: Insecure default configuration
Risk Level: MediumVulnerable configuration template (lines 62–70):
json { "name": "<Display Name>", "enabled": true, "dmPolicy": "allowlist", "allowFrom": ["<user-id>"], "botToken": "<token>", "groupPolicy": "open", "streaming": "block" }Vulnerable Telegram example (lines 133–141):
json { "name": "Work", "enabled": true, "dmPolicy": "allowlist", "allowFrom": ["USER_ID"], "botToken": "123456:ABC-DEF...", "groupPolicy": "open", "streaming": "block" }Technical Analysis
The prescribed configuration template and the concrete Telegram example both assign the account an unrestricted group policy through
"groupPolicy": "open". This weakens the otherwise restrictive direct-message configuration established by"dmPolicy": "allowlist".The workflow does not instruct the agent to ask whether unrestricted group access is required, identify trusted groups, or obtain informed user approval before applying the open policy through
gateway config.patch. Consequently, users following the documented workflow can unintentionally expose the connected agent to messages from untrusted group participants.Attack Path
- A user invokes the Skill to add a messaging account.
- The agent constructs the account configuration from the prescribed template.
- The configuration is applied with
groupPolicyset toopenwithout explicit user approval. - The configured bot is added to, or is already present in, a group containing an untrusted participant.
- The participant sends adversarial or abusive messages to the bot.
- Subject to the messaging platform and gateway's group-message handling, those messages reach the connected agent and can be used for prompt-injection attempts, unauthorized invo ...[truncated 646 chars]
- Remediation
View remediation
Remediation Suggestions
-
Change the default group policy to the most restrictive supported value:
json "groupPolicy": "closed"Alternatively, use
"admin-only"where group operation is required. -
Add a workflow step that explicitly asks the user to choose the group-access policy before configuration is applied.
-
Require clear confirmation before enabling
"open"and explain that any group participant may be able to interact with the agent. -
Where supported, restrict access to an explicit allowlist of trusted group IDs and sender IDs.
-
Preserve restrictive existing policies when merging configuration rather than replacing them with the template default.
-
After applying the configuration, verify the effective access policy and report which groups or users can reach the account without exposing credentials.
-
