Browse / CVEs / CVE-2026-44338
CVE-2026-44338· CWE-306
PraisonAI - Authentication Bypass
highseverity
7.3CVSS score
32.6%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it
PraisonAI 2.5.6 to < 4.6.34 contains a broken authentication caused by disabled default authentication in legacy Flask API server, letting remote attackers access /agents and trigger workflows without token, exploit requires network access to API server.
Impact
Remote attackers can access and trigger agent workflows without authentication, potentially leading to unauthorized actions or data exposure.
Fix
Upgrade to version 4.6.34 or later.
How to confirm it
Send: GET {{BaseURL}}/agents
Positive when: status_code == 200 and contains_all(body, 'agent_file', 'agents') and contains(header, 'application/json')Run it with nuclei: nuclei -id CVE-2026-44338 -u <target>
The full check
id: CVE-2026-44338
info:
name: PraisonAI - Authentication Bypass
author: jnoza
severity: high
description: |
PraisonAI 2.5.6 to < 4.6.34 contains a broken authentication caused by disabled default authentication in legacy Flask API server, letting remote attackers access /agents and trigger workflows without token, exploit requires network access to API server.
impact: |
Remote attackers can access and trigger agent workflows without authentication, potentially leading to unauthorized actions or data exposure.
remediation: Upgrade to version 4.6.34 or later.
reference:
- https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-6rmh-7xcm-cpxj
- https://webflow.sysdig.com/blog/cve-2026-44338-praisonai-authentication-bypass-in-under-4-hours-and-the-growing-trend-of-rapid-exploitation
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
cvss-score: 7.3
cve-id: CVE-2026-44338
epss-score: 0.32591
epss-percentile: 0.9835
cwe-id: CWE-306
metadata:
verified: true
max-request: 1
shodan-query: html:"PraisonAI"
tags: cve,cve2026,praisonai,auth-bypass,vkev
http:
- method: GET
path:
- "{{BaseURL}}/agents"
matchers:
- type: dsl
dsl:
- "status_code == 200"
- "contains_all(body, 'agent_file', 'agents')"
- "contains(header, 'application/json')"
condition: andReferences
- https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-6rmh-7xcm-cpxj
- https://webflow.sysdig.com/blog/cve-2026-44338-praisonai-authentication-bypass-in-under-4-hours-and-the-growing-trend-of-rapid-exploitation
Use this check only on systems you are authorised to test. Where the data comes from