CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-9VVH-2768-C8VP
5.4

GHSA-9VVH-2768-C8VP: Improper Access Control in OpenClaw Discord Reaction Ingress

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 13, 2026·5 min read·3 visits

No Known Exploit

Executive Summary (TL;DR)

A flaw in OpenClaw's Discord integration allows unauthorized users to bypass channel allowlist restrictions by reacting to messages, triggering AI workflows without proper authorization.

OpenClaw versions prior to v2026.3.11 contain an improper access control vulnerability within the Discord integration module. The reaction ingress handler fails to validate user and role allowlists, permitting unauthorized users to trigger restricted bot workflows via message reactions.

Vulnerability Overview

OpenClaw provides AI assistant infrastructure, frequently deployed as an integrated application within Discord guilds. The bot monitors channels for specific events, including standard text messages and message reactions, to trigger automated workflows or AI agent interactions. Administrators utilize allowlists to restrict bot interactions to specific authorized users or roles.

In versions prior to v2026.3.11, the Discord reaction ingestion logic fails to enforce these allowlist checks. While standard text messages undergo rigorous preflight validation before processing, the reaction event pipeline skips critical member-level authorization checks. This creates a functional discrepancy where unauthorized users are blocked from texting the bot but permitted to interact with it via reactions.

This vulnerability, classified under CWE-284 (Improper Access Control) and CWE-863 (Incorrect Authorization), allows any Discord user with basic channel read and reaction permissions to interact with the bot. The CVSS score of 5.4 reflects the requirement for existing low-level channel privileges and the bounded impact on system confidentiality and integrity.

Root Cause Analysis

The vulnerability originates in the handleDiscordReactionEvent function located within src/discord/monitor/listeners.ts. When a user applies an emoji reaction to a monitored message, the Discord API dispatches a reaction event that OpenClaw routes to this handler for processing.

The implementation of handleDiscordReactionEvent lacked an invocation of the centralized authorization service, resolveDiscordMemberAccessState. Instead, the function utilized a "fast path" validation routine that evaluated global configuration modes (such as determining if the bot was in all or allowlist mode) but omitted the actual cryptographic verification of the reacting user's identity or roles against those configured lists.

Because the reaction logic assumed authorization had already occurred at the channel level, or was unnecessary for reaction events, the bot processed the ingress payload as if it originated from a fully authorized user. The system implicitly trusted the event source without validating the actor's constraints defined in the channel configuration.

Code Analysis

The patch, implemented in commit 487a3ba8ceeffa0a5a5ba12d6d00d9d347b3d0d4, addresses the missing authorization check by integrating resolveDiscordMemberAccessState directly into the reaction ingress pipeline.

Before the patch, the code relied on an incomplete authorization function that did not evaluate specific member roles or IDs against the allowlist. The execution proceeded directly to processing the reaction payload without verifying the actor.

// Vulnerable Implementation (src/discord/monitor/listeners.ts)
const ingressAccess = await authorizeDiscordReactionIngress(reactionIngressBase);
// Execution continues without member-level validation

The remediated code explicitly fetches the user's roles and ID, passing them to the centralized access resolver. If the member fails the validation check, the execution returns early with a denial reason, preventing the unauthorized workflow trigger.

// Patched Implementation (src/discord/monitor/listeners.ts)
const { hasAccessRestrictions, memberAllowed } = resolveDiscordMemberAccessState({
  channelConfig: params.channelConfig,
  guildInfo: params.guildInfo,
  memberRoleIds: params.memberRoleIds,
  sender: {
    id: params.user.id,
    name: params.user.username,
    tag: formatDiscordUserTag(params.user),
  },
  allowNameMatching: params.allowNameMatching,
});
 
if (hasAccessRestrictions && !memberAllowed) {
  return { allowed: false, reason: "guild-member-denied" };
}

Exploitation

Exploitation requires the attacker to possess a standard Discord account with read access to the target guild channel. Furthermore, the attacker must possess the "Add Reactions" permission within that specific channel to append new emojis to existing messages.

The attacker identifies a channel where the OpenClaw bot is actively monitoring messages but restricts interactions via an allowlist. The attacker then locates a message processed or generated by the bot and applies a reaction. This is typically a specific emoji configured by the bot operator to trigger a mapped workflow or automated response.

Because the handleDiscordReactionEvent function fails to validate the attacker's Discord ID or roles against the configured allowlist, OpenClaw accepts the reaction payload. The bot subsequently executes the mapped workflow or AI agent trigger, operating under the incorrect assumption that an authorized user initiated the action.

Impact Assessment

The primary impact is a bypass of intended access controls, allowing unauthorized users to consume bot resources, trigger AI generation processes, or invoke configured notification workflows. This leads to a loss of integrity regarding who can command the system and a minor loss of confidentiality if the triggered workflows return sensitive operational data to the channel.

The attack does not yield remote code execution, nor does it provide direct access to the underlying server hosting the OpenClaw instance. The impact remains constrained strictly to the functionalities exposed by the bot's reaction handlers within the specific Discord guild context.

The CVSS v3.1 vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N accurately reflects the network attack vector, the requirement for low privileges (channel interaction access), and the limited confidentiality and integrity impacts associated with unauthorized workflow execution.

Remediation

Administrators must upgrade their OpenClaw deployments to version v2026.3.11 or later. This release incorporates the necessary authorization checks within the reaction handling pipeline, ensuring all interactions respect the configured allowlists.

If immediate patching is unfeasible, administrators can apply configuration-level workarounds. Modifying the Discord channel configuration to disable reaction notifications entirely mitigates the attack surface by shutting off the vulnerable code path.

Specifically, administrators should set reactionNotifications: { mode: "off" } or restrict reactions exclusively to the bot itself via mode: "own". These changes prevent the vulnerability from being triggered and must be applied to all channels where the bot operates under an allowlist configuration.

Official Patches

OpenClawOfficial fix commit
OpenClawRelease v2026.3.11 notes

Fix Analysis (1)

Technical Appendix

CVSS Score
5.4/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N

Affected Systems

OpenClaw Discord Integration Module

Affected Versions Detail

Product
Affected Versions
Fixed Version
openclaw/openclaw
OpenClaw
< v2026.3.11v2026.3.11
AttributeDetail
CWE IDCWE-284, CWE-863
Attack VectorNetwork
CVSS Score5.4
Exploit StatusNone
ImpactAccess Control Bypass
Required PrivilegesLow (Channel Read/React access)

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-284
Improper Access Control

The software does not properly restrict access to resources or functionality based on the identity of the user or the role they hold.

Vulnerability Timeline

Fix commit pushed to repository
2026-03-12
Version v2026.3.11 released
2026-03-13
GitHub Advisory GHSA-9VVH-2768-C8VP published
2026-03-13

References & Sources

  • [1]GitHub Advisory GHSA-9VVH-2768-C8VP
  • [2]AliYun Vulnerability Detail AVD-2026-1859838

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.