Skip to content

GHSA-xh72-v6v9-mwhc CVE-2026-44109

OpenClaw: Feishu webhook and card-action validation now fail closed

Critical npm
Severity
0.0 / 10
Critical · CVSS 4.0
Exploit chance (EPSS)
0.72%
Chance of exploitation in the next 30 days. Higher than 53.88% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-1188 Initialization of a Resource with an Insecure Default
CWE-287 Improper Authentication
CWE-294 Authentication Bypass by Capture-replay
Fix
2026.4.15
Upgrade openclaw to this version or later

Description

Summary

Feishu webhook mode accepted missing encryptKey configuration as valid and blank card-action callback tokens as usable lifecycle tokens. Together, those fail-open paths could allow unauthenticated webhook or card-action traffic to reach command dispatch in affected deployments.

Impact

A deployment using Feishu webhook mode without a configured encryptKey, or handling malformed card-action callbacks with blank callback tokens, could fail open instead of rejecting the request. Severity remains critical because affected webhook deployments expose a network-triggered path into OpenClaw command handling without the expected Feishu signature or replay protection.

Affected versions

  • Affected: < 2026.4.15
  • Patched: 2026.4.15

Fix

OpenClaw 2026.4.15 makes Feishu webhook and card-action validation fail closed. Webhook mode now refuses to start without an encryptKey, missing signing configuration returns invalid instead of valid, invalid signatures return 401, and blank card-action callback tokens are rejected before dispatch.

Verified in v2026.4.15:

  • extensions/feishu/src/monitor.transport.ts returns invalid when encryptKey is missing, refuses webhook mode without encryptKey, and rejects invalid signatures before JSON handling.
  • extensions/feishu/src/card-action.ts rejects blank callback tokens in the card-action lifecycle guard.
  • extensions/feishu/src/monitor.webhook-security.test.ts covers missing-encryptKey startup and transport rejection.
  • extensions/feishu/src/monitor.card-action.lifecycle.test.ts covers malformed blank-token card actions being dropped before handler dispatch.

Fix commit included in v2026.4.15 and absent from v2026.4.14:

  • c8003f1b33ed2924be5f62131bd28742c5a41aae via PR #66707

Thanks to @dhyabi2 for reporting this issue.

Affected versions

npm

PackageVulnerableFixed in
openclaw
< 2026.4.15
2026.4.15

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

openclaw npm → 2026.4.15

npm
npm install openclaw@2026.4.15
yarn
yarn add openclaw@2026.4.15
pnpm
pnpm add openclaw@2026.4.15

Severity breakdown

CVSS 4.0 0.0

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Attack vector
Network
Attack complexity
Low
Attack requirements
Present
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
High
Integrity (vulnerable system)
High
Availability (vulnerable system)
High
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
None
Availability (subsequent systems)
None

CVSS 3.1 9.8

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Weakness

CWE-1188: Initialization of a Resource with an Insecure Default

The product initializes or sets a resource with a default that is intended to be changed by the product's installer, administrator, or maintainer, but the default is not secure.

CWE-287: Improper Authentication

When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.

How to prevent it
  • Architecture and Design: Use an authentication framework or library such as the OWASP ESAPI Authentication feature.

CWE-294: Authentication Bypass by Capture-replay

A capture-replay flaw exists when the design of the product makes it possible for a malicious user to sniff network traffic and bypass authentication by replaying it to the server in question to the same effect as the original message (or with minor changes).

How to prevent it
  • Architecture and Design: Utilize some sequence or time stamping functionality along with a checksum which takes this into account in order to ensure that messages can be parsed only once.
  • Architecture and Design: Since any attacker who can listen to traffic can see sequence numbers, it is necessary to sign messages with some kind of cryptography to ensure that sequence numbers are not simply doctored along with content.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-3x84-qq85-fj65
OpenClaw: Browser CDP discovery could accept blocked WebSocket URLs
High Also affects openclaw
GHSA-9c3v-684m-579c
OpenClaw MCP SSE redirects could forward Authorization headers
Medium Also affects openclaw
GHSA-f397-5vjw-v2c2
OpenClaw: Shell inline-command parsing could miss an allowlist check
High Also affects openclaw
GHSA-rx78-29qr-5hq8
OpenClaw: Workspace-derived service PATH could influence trash command selection
High Also affects openclaw
GHSA-ccwh-wwpp-6wg5
OpenClaw: Host environment sanitizer missed two Node.js control variables
High Also affects openclaw
GHSA-985f-72mj-8gf7
OpenClaw: Tool group policy callers could accept unvalidated group IDs
Medium Also affects openclaw
GHSA-9v8j-9c9g-w66c
OpenClaw: Bootstrap token replay could widen pending pairing scopes
Medium Also affects openclaw
GHSA-c226-q6fx-6j6c
OpenClaw: macOS Swift exec allowlist missed combined POSIX inline flags
Medium Also affects openclaw
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor