Loading...
Skip to main content

CVE-2026-32231 — Vulnerability in zeptoclaw — CVE Details

HIGH

ZeptoClaw: Generic webhook channel trusts caller-supplied identity fields; allowlist is checked against untrusted payload data

Published March 12, 2026Updated March 13, 2026Source: osv

Summary

### Summary The generic webhook channel trusts caller-supplied identity fields (`sender`, `chat_id`) from the request body and applies authorization checks to those untrusted values. Because authentication is optional and defaults to disabled (`auth_token: None`), an attacker who can reach `POST /webhook` can spoof an allowlisted sender and choose arbitrary `chat_id` values, enabling high-risk message spoofing and potential IDOR-style session/chat routing abuse. ### Details Relevant code paths: - `src/channels/webhook.rs:121` sets runtime default `auth_token: None`. - `src/config/types.rs:910` also defaults webhook config `auth_token` to `None`. - `src/channels/webhook.rs:224` (`validate_auth`) explicitly allows requests when no token is configured. - `src/channels/webhook.rs:128` defines `WebhookPayload` with identity fields fully controlled by caller input: - `sender: String` - `chat_id: String` - `src/channels/webhook.rs:421` performs allowlist authorization using `payload.sender`. - `src/channels/webhook.rs:433` and `src/channels/webhook.rs:434` create `InboundMessage` using untrusted `payload.sender` and `payload.chat_id`. Why this is vulnerable: - The system treats user-provided JSON identity as authoritative identity. - Allowlist enforcement does not verify sender authenticity beyond that payload value. - `chat_id` is also attacker-controlled, so routing/session association can be steered to arbitrary chats/conversations. - If the webhook is exposed without strong upstream authn/authz controls, spoofing is straightforward. ### PoC 1. Configure the webhook channel in a vulnerable posture (common default behavior): - `enabled = true` - `bind_address = "0.0.0.0"` (or any reachable interface) - `port = 9876` - `path = "/webhook"` - `auth_token = null` (or omitted) - `allow_from = ["trusted-user-1"]` - `deny_by_default = true` 2. Start ZeptoClaw. 3. Send a forged request with attacker-chosen `sender` and `chat_id`, without any `Authorization` header: ```bash curl -i -X POST "http://127.0.0.1:9876/webhook" \ -H "Content-Type: application/json" \ --data '{ "message":"FORGED: run privileged workflow", "sender":"trusted-user-1", "chat_id":"victim-chat-42" }' ``` 4. Observe: - Response is `HTTP/1.1 200 OK`. - Message is accepted as if it originated from `trusted-user-1`. - Message is routed under attacker-chosen `chat_id` (`victim-chat-42`). ### Impact - Vulnerability type: - Authentication/authorization bypass (identity spoofing) - IDOR-style routing/control issue via attacker-chosen `chat_id` - Affected deployments: - Any deployment exposing the generic webhook endpoint without strict upstream authentication and identity binding. - Security consequences: - Forged inbound messages from spoofed trusted users. - Bypass of allowlist intent by injecting allowlisted sender IDs in payload. - Cross-chat/session contamination or hijacking by choosing arbitrary `chat_id`. - Potential unauthorized downstream agent/tool actions triggered by malicious input.

Advisory Timeline

  • First published March 12, 2026 (214 days ago).
  • Last revised March 13, 2026 — 1 day after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Cargo
Update zeptoclaw to 0.7.6 or later
cargo update -p zeptoclaw --precise 0.7.6

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: crates.io (1).

PackageEcosystemAffectedFixed In
zeptoclaw
crates.io
All versions0.7.6

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 8.2 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
High
Availability
None

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

Frequently Asked Questions

What is CVE-2026-32231?
ZeptoClaw: Generic webhook channel trusts caller-supplied identity fields; allowlist is checked against untrusted payload data This vulnerability has been assigned a severity rating of HIGH (CVSS score: 8.2/10).
How do I check if my project is affected by CVE-2026-32231?
CVE-2026-32231 affects zeptoclaw. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-32231 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
8.2

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-46q5-g3j9-wx5c

Related CVEs

  • GHSA-5wp8-q9mx-8jx8
    CRITICAL

    zeptoclaw has Shell allowlist-blocklist bypass via command/argument injection and file name wildcards

  • CVE-2026-32232
    HIGH

    ZeptoClaw: Path boundary checks bypass via symlink, TOCTOU, and hardlink

  • CVE-2026-93657
    HIGH

    hickory-resolver: Resolver::lookup() and Resolver::lookup_ip() APIs obscure DNSSEC validation failures

  • CVE-2026-18140
    HIGH

    aws-smithy-json: Uncontrolled recursion in the aws-smithy-json unknown-key skip path allows unauthenticated remote denial of service in smithy-rs generated servers

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies