Back to skill

Security audit

Discord Dynasty

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed Discord task-management skill, with the main caution that it relies on a separately installed Discord integration that may receive meaningful bot permissions.

Before installing, review and preferably pin the @steipete/discord dependency, then configure the Discord bot with least-privilege access. Expect the skill to create forum threads, edit thread tags, and, when explicitly asked, create channel/category structures in a Discord server.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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 (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:77
Finding
Unpinned External Discord Skill Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md:77-80`; `reference.md:137-142` **Vulnerability Type**: Unpinned third-party dependency installation **Risk Level**: Medium ### Vulnerable Code Snippets `SKILL.md:77-80`: ```shell clawhub install steipete/discord openclaw add @steipete/discord ``` `reference.md:137-142`: ```shell clawhub install steipete/discord openclaw add @steipete/discord ``` ### Technical Analysis The documentation instructs users to install an external Discord Skill by a mutable package name without specifying an immutable version, commit hash, checksum, or cryptographic signature. Consequently, the content installed in the future may differ from the content reviewed when this project was audited. The project describes the dependency as an official or community Discord Skill, but it does not provide a locally verifiable trust mechanism. If the publishing account, package registry, package namespace, or a later release is compromised, the installation commands could retrieve attacker-controlled content. This is a supply-chain weakness rather than evidence that the currently referenced dependency is malicious. Exploitation depends on compromise or unauthorized replacement of the external package. ### Attack Path 1. An attacker compromises the external Skill publisher, registry entry, distribution infrastructure, or similarly trusted package source. 2. The attacker publishes a malicious release under the same mutable package identifier. 3. A user follows the documented installation command without selecting a known-safe immutable version. 4. The package manager retrieves and installs the attacker-controlled release. 5. The dependency executes within the OpenClaw environment and receives access to the capabilities granted to the Discord integration. 6. If Discord credentials and channel-management actions are enabled, the malicious dependency may use those privileges to access or m ...[truncated 790 chars]
Remediation
## Remediation Suggestions 1. Pin the external Skill to an audited immutable version or commit rather than installing the latest package by name. 2. Publish and verify a cryptographic checksum or signature for the approved dependency artifact. 3. Document the canonical registry and publisher identity so users can reject similarly named or untrusted packages. 4. Review the dependency's source and requested capabilities before installation and after every proposed upgrade. 5. Use a lockfile or equivalent integrity metadata where supported by OpenClaw or ClawHub. 6. Apply least privilege to the Discord bot. Enable only the actions required for forum, thread, and channel management. 7. Keep sensitive Discord administration permissions disabled unless the channel-creation feature is actively needed. 8. Test dependency upgrades in an isolated environment before production deployment. 9. Document a trusted version and explicit upgrade procedure in both `SKILL.md` and `reference.md`.
Vulnerability Patterns
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The manifest description and activation section define invocation through Chinese phrases only, and the document consistently instructs Chinese response patterns such as specific confirmation wording. This imposes a language expectation without any opt-in or alternative locale handling, which matches the language/locale policy violation category.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
The tagline and description are written entirely in Chinese, while the manifest does not state that the skill is intended only for Chinese-speaking users or offer any language/locale choice. This can violate the language/locale policy because it implicitly enforces a specific language without opt-in or documented regional justification.

Session Persistence

Medium
Category
Rogue Agent
Content
| 建任务中心论坛频道     | `channelCreate`           | `type: 15`(GUILD_FORUM),`name`、`topic`、`available_tags`(若工具支持)。需开启 `discord.actions.channels: true`。 |
| 读当前帖/频道信息       | `channelInfo`              | `channelId`=thread ID,可拿到 `applied_tags`;后端用此选模型。 |

**说明**:当前公开的 discord skill 文档中,`threadCreate` 示例为 `channelId` + `name` + `messageId`(从一条消息建 thread)。Discord 论坛帖的创建是「在论坛频道下 POST thread,带 name、message、applied_tags,无 messageId」。若 OpenClaw 网关已支持论坛帖创建(见 [docs.openclaw.ai Discord Forum channels](https://docs.openclaw.ai/channels/discord) 中的 `openclaw message thread create --target channel:<forumId>`),则 agent 调用 threadCreate 时对论坛频道不传 messageId 即可;是否支持 `applied_tags` 以实际工具 schema 为准。若不支持,可在网关或插件层扩展「创建论坛帖时传 applied_tags」及「channelEdit 写 thread 的 applied_tags」。

### 8.3 推荐组合用法
Confidence
60% confidence
Finding
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.

Session Persistence

Medium
Category
Rogue Agent
Content
| 建任务中心论坛频道     | `channelCreate`           | `type: 15`(GUILD_FORUM),`name`、`topic`、`available_tags`(若工具支持)。需开启 `discord.actions.channels: true`。 |
| 读当前帖/频道信息       | `channelInfo`              | `channelId`=thread ID,可拿到 `applied_tags`;后端用此选模型。 |

**说明**:当前公开的 discord skill 文档中,`threadCreate` 示例为 `channelId` + `name` + `messageId`(从一条消息建 thread)。Discord 论坛帖的创建是「在论坛频道下 POST thread,带 name、message、applied_tags,无 messageId」。若 OpenClaw 网关已支持论坛帖创建(见 [docs.openclaw.ai Discord Forum channels](https://docs.openclaw.ai/channels/discord) 中的 `openclaw message thread create --target channel:<forumId>`),则 agent 调用 threadCreate 时对论坛频道不传 messageId 即可;是否支持 `applied_tags` 以实际工具 schema 为准。若不支持,可在网关或插件层扩展「创建论坛帖时传 applied_tags」及「channelEdit 写 thread 的 applied_tags」。

### 8.3 推荐组合用法
Confidence
60% confidence
Finding
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.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The JSON description, category names, channel names, tags, and comment text are entirely in Chinese, with no indication that users can choose another language or locale. This creates a natural-language policy concern because the skill appears to require a specific language presentation by default rather than offering localization or opt-in.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
This JSON manifest uses Chinese exclusively in the top-level description, category names, channel names, topics, and explanatory comment text. For a generally reusable Discord template, that imposes a specific language/locale on users without opt-in or documented region-specific scope, which matches the language/locale policy concern.

Natural-Language Policy Violations

Low
Confidence
85% confidence
Finding
该参考文档从标题到全部操作说明均以中文固定呈现,没有说明是否支持其他语言或允许用户按偏好选择语言。按规则,若技能强制特定语言且无用户 opt-in,属于自然语言层面的语言/locale policy 风险。

Static analysis

No suspicious patterns detected.