Skip to main content

PraisonAI LinearBot EUVDEUVD-2026-108878

| CVE-2026-56837 HIGH
Improper Authentication (CWE-287)
2026-10-23 GitHub_M GHSA-fc26-m9pf-v56q PYSEC-2026-3510
8.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach public webhook on 0.0.0.0
  2. Delivery
    Send forged unsigned AgentSession event
  3. Exploit
    Skipped signature check accepts request
  4. Execution
    Agent processes attacker-supplied input
  5. Impact
    Bot posts comment under bot token, consumes quota

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK

2 techniques across 2 tactics: Defense Evasion, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The decisive prerequisite is that LinearBot is started without LINEAR_WEBHOOK_SECRET configured (the secret is treated as optional and defaults to an empty string), causing _handle_webhook() to skip Linear-Signature HMAC verification entirely - this is the fail-open condition. The operator must additionally have launched LinearBot with a valid Linear bot token, and the webhook listener must be network-reachable since it binds 0.0.0.0 on the configured webhook port. Exploitation targets the AgentSession event path specifically. Limiting factors that reduce real-world risk: if LINEAR_WEBHOOK_SECRET IS set, missing and invalid signatures are rejected with 401 before any agent dispatch, so correctly configured deployments are not exploitable; the listener must be reachable by the attacker (network segmentation or loopback-only exposure blocks it); and the concrete impact depends on which agent and tools are configured - the advisory explicitly does not claim arbitrary code execution by default, only unauthenticated remote agent invocation.

Impact

The raw signals point in two directions. The CVSS vector (AV:N/AC:L/PR:N/UI:N) describes an unauthenticated, low-complexity, remote, no-interaction flaw - on paper a top-priority issue, scored 8.6. However, exploitation is strictly gated by an operator misconfiguration: it only applies when LinearBot is started with a Linear token but with LINEAR_WEBHOOK_SECRET absent, which makes the handler fail open. This is a conditional exposure, not a default-config remote hole, so the PR:N in the vector reflects that no attacker credentials are needed once the misconfiguration exists - it does not mean every deployment is exposed. The vuln.today Decision label is 'this_week' (not act_now/emergency), which is consistent with a serious but non-emergency item. No EPSS score and no CISA KEV entry are present in the input, and no SSVC exploitation/automatable/technical-impact breakdown is provided beyond the decision label - so widespread or automated exploitation is neither confirmed nor refuted. A deterministic offline PoV is described in the GHSA advisory, demonstrating the boundary crossing, but it is not provided here as confirmed, publicly posted working exploit code. Net assessment: a real priority for any operator who runs LinearBot without the signing secret, but the population at risk is bounded by that specific misconfiguration and by the niche footprint of the product; teams running LinearBot with the secret set are unaffected. Note also that the CVSS I:H is arguably generous - impact is unauthorized agent invocation and comment creation under the bot token plus quota consumption, which some assessors would rate lower; verify against your agent/tool configuration.

Exploit ScenarioDerived

An operator runs PraisonAI's LinearBot with a valid Linear bot token but omits LINEAR_WEBHOOK_SECRET, so the webhook listener binds 0.0.0.0 and skips signature verification. An unauthenticated attacker who can reach that port sends a forged 'Linear-Event: AgentSession' request with attacker-chosen issue title and description; because no secret is configured the Linear-Signature check is bypassed, the agent processes the attacker's input and posts a response back to Linear under the bot identity while consuming paid model quota. A deterministic offline PoV demonstrating this path is described in the vendor advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 23, 2026

Unauthenticated remote agent invocation in PraisonAI LinearBot 4.6.56 through 4.6.58: because LINEAR_WEBHOOK_SECRET is treated as optional and defaults to an empty string, the aiohttp webhook listener bound to 0.0.0.0 skips Linear-Signature HMAC verification entirely, so any network caller who can reach the endpoint can POST a forged 'Linear-Event: AgentSession' request that is parsed, backgrounded, and dispatched into BotSessionManager.chat(), causing the bot to run the configured agent and post comments back to Linear under the bot token. Exploitation requires the operator to have started LinearBot with a Linear token but without a webhook secret, and the listener to be reachable; deployments that do set the secret reject missing and invalid signatures with 401 before dispatch. A public proof-of-vulnerability harness exists that exercises the handler offline and monkey-patches the outbound comment path; it is not verified as working exploit code against deployed instances, and there is no confirmed active exploitation (no KEV entry).

RemediationAI

Vendor-released patch: 4.6.59 (the advisory records the fix as 'fixed in: 4.6.59'); upgrade praisonai to that version, which changes the fail-open startup and handler behavior so unsigned webhooks are no longer processed. The advisory URL is https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-fc26-m9pf-v56q and lists the intended fix set: refuse to start LinearBot when LINEAR_WEBHOOK_SECRET is missing unless an explicit development-only flag such as --insecure-skip-webhook-signature-verification is supplied, reject webhook requests in _handle_webhook() when no signing secret is configured, keep raw-body HMAC verification with constant-time comparison, treat timestamp freshness as replay protection after signature validation rather than as authentication, and prefer loopback binding by default or require an explicit host flag for public binding. Until the upgrade is applied, the actionable compensation is to set LINEAR_WEBHOOK_SECRET so that missing and invalid Linear-Signature values are rejected with 401 before any agent dispatch - accepting that a mis-set or rotated secret breaks legitimate Linear deliveries until the secret is synced on both sides - and, where a secret cannot be configured, to stop exposing the webhook listener publicly by restricting the webhook port with network segmentation or loopback-only exposure, which will block Linear's own deliveries if they arrive from outside that scope.

Affected VersionsENISA

PraisonAI 4.6.56, < 4.6.59

Affected Packages

pypi praisonai fix: 4.6.59

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

PraisonAI is a multi-agent teams framework, and the affected component is its Linear integration (src/praisonai/praisonai/bots/linear.py plus the CLI wiring in cli/features/bots_cli.py). LinearBot.__init__() does self._signing_secret = signing_secret or os.environ.get('LINEAR_WEBHOOK_SECRET', ''), and start() only logs a warning when that value is empty before binding aiohttp's web.TCPSite to 0.0.0.0 on the webhook port. Inside _handle_webhook(), signature verification is wrapped in 'if self._signing_secret:', so with no secret the code falls straight through to JSON parsing, reads the caller-supplied Linear-Event header and webhookTimestamp, and schedules _process_webhook(); the AgentSession branch hands attacker-controlled issue title/description content to _handle_agent_session(), which calls _session_mgr.chat() and then _send_comment(). The root cause class is CWE-287 (improper authentication), with the advisory also tagging CWE-306 (missing authentication for critical function) and CWE-347 (improper verification of cryptographic signature) - the classic fail-open pattern where an absent configuration value disables a security control silently instead of failing closed. Linear's own webhook model expects receivers to validate an HMAC-SHA256 Linear-Signature over the raw body and only then apply a freshness check on webhookTimestamp; the advisory notes a caller-supplied timestamp is not an authentication boundary, and the implementation confirms the intended boundary because configured-secret deployments correctly return 401 for missing and bad signatures and 200 for a valid HMAC. The PoV was validated on v4.6.58 (commit 1ad58ca), the live main branch, v4.6.57, v4.6.56 and v4.5.50, while sampled tags v4.5.49, v4.5.51, v4.6.9 and v4.6.10 lacked the LinearBot component, so the advisory warns the packaged version history is non-contiguous and maintainers should confirm the exact range. The impact is bounded: the advisory explicitly does not claim arbitrary code execution by default, only unauthenticated remote agent invocation whose severity depends on the configured agent and tools (LLM/tool execution, quota consumption, comment creation or update under the bot identity).

Know when Praisonai gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 8.6 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L
vuln.today AI 8.6 HIGH

Remote, low-complexity, no auth or interaction once the secret is unset (PR:N/UI:N/AC:L); forged agent invocation and bot-identity comment writes give I:H, limited response exposure C:L, quota consumption A:L.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

DescriptionCVE.org

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.

Technical POC Analysis

CWE-287 (Improper Authentication; the advisory also maps CWE-306 and CWE-347).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

The PraisonAI LinearBot integration (versions 4.6.56-4.6.58) has a high-severity flaw that allows unauthenticated attackers to trigger the bot to perform actions under its Linear token, such as posting comments. This impacts only deployments that did not configure a webhook secret and exposed the listener. If exploited, an attacker could post fraudulent comments, potentially damaging trust and causing operational disruption.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Low
niche open-source multi-agent framework; optional LinearBot integration rarely deployed
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

43
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +43
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2026-61447 CRITICAL POC
10.0 Jul 11

Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th

CVE-2026-57139 CRITICAL POC
9.8 Sep 15

PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans

CVE-2026-55536 CRITICAL POC
9.1 Aug 25

WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att

CVE-2026-55541 HIGH POC
8.8 Aug 25

PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne

CVE-2026-61439 HIGH POC
8.7 Jul 11

System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection

CVE-2026-55534 HIGH POC
8.6 Aug 25

Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller

CVE-2026-55526 HIGH POC
8.5 Aug 25

SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou

CVE-2026-61429 HIGH POC
8.4 Jul 11

Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv

CVE-2026-55533 HIGH POC
8.2 Aug 25

Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec

CVE-2026-55528 HIGH POC
8.2 Aug 25

Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u

CVE-2026-55522 HIGH POC
7.8 Aug 05

Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d

CVE-2026-55523 HIGH POC
7.7 Aug 05

Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy