Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach public webhook on 0.0.0.0
-
DeliverySend forged unsigned AgentSession event
-
ExploitSkipped signature check accepts request
-
ExecutionAgent processes attacker-supplied input
-
ImpactBot 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
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
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.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th
PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans
WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att
PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne
System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection
Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller
SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou
Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv
Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec
Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u
Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d
Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf
EUVD-2026-108878
GHSA-fc26-m9pf-v56q
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB