---
id: "CVE-2026-56837"
kind: "vulnerability"
aliases: ["CVE-2026-56837"]
title: "PraisonAI LinearBot: unsigned webhook lets strangers drive the agent"
severity: "high"
cvss: 8.6
epss: 0.00248
exploited: false
status: "open"
category: "ai-tooling"
products: []
ecosystems: []
tags: ["ai-tooling", "linear", "mcp", "praisonai", "python"]
not_affected_if: ["linear-webhook-secret-set", "linearbot-not-used", "versions-outside-4.6.56-4.6.59"]
published_at: "2026-10-23T12:18:15+00:00"
first_seen_at: "2026-10-23T21:57:33+00:00"
updated_at: "2026-10-25T12:38:51+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-56837", "first_seen_at": "2026-10-23T21:57:33+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-56837", "first_seen_at": "2026-10-25T12:38:51+00:00"}]
---

# PraisonAI LinearBot: unsigned webhook lets strangers drive the agent

PraisonAI's LinearBot listens on all interfaces and skips Linear signature checks when LINEAR_WEBHOOK_SECRET is unset. An unauthenticated caller can send forged AgentSession events that run the bot's agent and post its replies to Linear using the configured bot token.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

Check the PraisonAI version: versions from 4.6.56 up to but not including 4.6.59 are affected.
Check whether LINEAR_WEBHOOK_SECRET is set in the environment where LinearBot runs; if it is unset, the webhook is unauthenticated.

## Fix

Upgrade PraisonAI to 4.6.59 or later.
Set LINEAR_WEBHOOK_SECRET and rotate the Linear bot token if the webhook was reachable while unset.

## Timeline

- 2026-10-23T21:57:33+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-56837
- 2026-10-25T12:38:51+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-56837

## From the sources

PraisonAI is a multi-agent teams system. From version 4.6.56 to before version 4.6.59, PraisonAI's LinearBot starts a public webhook listener on 0.0.0.0 and treats LINEAR_WEBHOOK_SECRET as optional. When the secret is absent, startup only logs a warning and _handle_webhook() skips Linear-Signature verification entirely. An unauthenticated network caller who can reach the webhook endpoint can submit a forged Linear-Event: AgentSession request. The forged request is parsed, scheduled for background processing, dispatched to _handle_agent_session(), and passed into BotSessionManager.chat(). The bot then attempts to post the agent response back to Linear under the configured bot token. The PoV is offline and deterministic. It does not contact Linear. It calls the webhook handler directly, monkey-patches the outbound Linear comment path, and proves both sides of the boundary. This issue has been patched in version 4.6.59.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
