CVE-2026-57134
PraisonAI MCPSecurity Basic/OAuth authentication policies accept invalid credentials without validation
PraisonAI is a multi-agent teams system. From 1.5.1 until 1.7.2, MCPSecurity.evaluatePolicy() in src/praisonai-ts/src/mcp/security.ts invokes the configured credential validator only when AuthMethod is api-key or bearer. Basic and OAuth policies accept any non-empty Authorization header without calling auth.validate(), then return an authenticated result, allowing callers with invalid credentials to access MCP tools and resources protected by those policies. This issue is fixed in version 1.7.2.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
8.2
PraisonAI MCPSecurity Basic/OAuth authentication policies accept invalid credentials without validation
PraisonAI is a multi-agent teams system. From 1.5.1 until 1.7.2, MCPSecurity.evaluatePolicy() in src/praisonai-ts/src/mcp/security.ts invokes the configured credential validator only when AuthMethod is api-key or bearer. Basic and OAuth policies accept any non-empty Authorization header without calling auth.validate(), then return an authenticated result, allowing callers with invalid credentials to access MCP tools and resources protected by those policies. This issue is fixed in version 1.7.2.
- Record
CVE-2026-57134- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-287, CWE-288, CWE-863
- Updated
- 2026-11-02
EUVDEUVD-2026-78419
8.2
PraisonAI is a multi-agent teams system. From 1.5.1 until 1.7.2, MCPSecurity.evaluatePolicy() in src/praisonai-ts/src/mcp/security.ts invokes the configured credential validator only when AuthMethod is api-key or bearer. Basic and OAuth policies accept any non-empty Authorization header without calling auth.validate(), then return an authenticated result, allowing callers with invalid credentials to access MCP tools and resources protected by those policies. This issue is fixed in version 1.7.2.
- Record
EUVD-2026-78419- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-4qq2-2j2x-x62c
8.2
npm PraisonAI MCPSecurity Basic/OAuth authentication policies accept invalid credentials without validation
Summary
The published npm package praisonai exports an MCPSecurity helper described in source as:
MCP Security - Authentication, authorization, and rate limiting
Provides security policies for MCP servers.
Its AuthMethod type advertises five authentication methods:
export type AuthMethod = 'none' | 'api-key' | 'bearer' | 'basic' | 'oauth';
The authentication-policy evaluator, however, only validates credentials for api-key and bearer:
if (policy.auth.method === 'api-key' || policy.auth.method === 'bearer') {
const valid = policy.auth.validate
? await policy.auth.validate(token)
: this.validateApiKey(token);
if (!valid) {
return { allowed: false, reason: 'Invalid credentials' };
}
}
return { allowed: true, context: { authenticated: true } };
For basic and oauth, any non-empty Authorization header skips the supplied validate callback and returns allowed. A local PoV configures auth.validate to always return false; invalid api-key and bearer credentials are rejected, while invalid basic and oauth credentials are accepted without calling the validator.
This is a protection-mechanism failure in the exported npm MCP security helper. It is distinct from the separate issue that the npm MCPServer HTTP transport does not enforce authentication by default.
Technical Details
SecurityPolicy.auth accepts both a method and a validator:
auth?: { method: AuthMethod; validate?: (token: string) => Promise<boolean> };
extractToken() parses both Bearer and Basic headers:
if (auth.startsWith('Bearer ')) {
return auth.slice(7);
}
if (auth.startsWith('Basic ')) {
return auth.slice(6);
}
return auth;
But evaluatePolicy() only calls policy.auth.validate() for two methods:
if (policy.auth.method === 'api-key' || policy.auth.method === 'bearer') {
const valid = policy.auth.validate
? await policy.auth.validate(token)
: this.validateApiKey(token);
if (!valid) {
return { allowed: false, reason: 'Invalid credentials' };
}
}
There is no validation branch for basic or oauth. After extracting any non-empty token, those methods fall through to the success return:
return { allowed: true, context: { authenticated: true } };
check() then ignores successful authentication context and returns a generic allowed result:
return { allowed: true, context: { authenticated: false } };
That context propagation issue is secondary. The security-relevant flaw is that invalid Basic/OAuth credentials are allowed at all.
Why This Is Not Intended Behavior
This is not a claim that every MCPSecurity user must choose Basic or OAuth. The issue is that the API explicitly exposes those methods as authentication methods and accepts a validator callback for the policy, but the implementation does not call the validator for those methods.
The control cases prove the intended security behavior:
- Missing Basic credentials are denied as
Authentication required. - Invalid
api-keycredentials are denied asInvalid credentials. - Invalid
bearercredentials are denied asInvalid credentials.
The only difference in the vulnerable cases is the selected advertised method. Invalid Basic/OAuth credentials should not become authenticated merely because the method is not listed in the two-method validation branch.
This also matches MCP authorization guidance. MCP servers acting as resource servers must validate received access tokens; receiving a token is not proof that it is valid or intended for the server.
PoV
Run from a local reproduction checkout:
node poc/pov_poc.js 1.7.1
The PoV:
- Installs
npm:[email protected]into a temporary project with scripts disabled. - Imports
MCPSecurityfrom the package root. - Creates one
authenticatepolicy per method. - Supplies an
auth.validatecallback that always returns…
- Record
GHSA-4qq2-2j2x-x62c- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-287, CWE-288, CWE-863
- Updated
- 2026-11-02
NVD
8.2
PraisonAI is a multi-agent teams system. From 1.5.1 until 1.7.2, MCPSecurity.evaluatePolicy() in src/praisonai-ts/src/mcp/security.ts invokes the configured credential validator only when AuthMethod is api-key or bearer. Basic and OAuth policies accept any non-empty Authorization header without calling auth.validate(), then return an authenticated result, allowing callers with invalid credentials to access MCP tools and resources protected by those policies. This issue is fixed in version 1.7.2.
- Record
CVE-2026-57134- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-287, CWE-288, CWE-863
- Updated
- 2026-11-02
OSV
8.2
PraisonAI MCPSecurity Basic/OAuth authentication policies accept invalid credentials without validation
PraisonAI is a multi-agent teams system. From 1.5.1 until 1.7.2, MCPSecurity.evaluatePolicy() in src/praisonai-ts/src/mcp/security.ts invokes the configured credential validator only when AuthMethod is api-key or bearer. Basic and OAuth policies accept any non-empty Authorization header without calling auth.validate(), then return an authenticated result, allowing callers with invalid credentials to access MCP tools and resources protected by those policies. This issue is fixed in version 1.7.2.
- Record
CVE-2026-57134- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-287, CWE-288, CWE-863
- Updated
- 2026-11-02
OSVGHSA-4qq2-2j2x-x62c
8.2
npm PraisonAI MCPSecurity Basic/OAuth authentication policies accept invalid credentials without validation
Summary
The published npm package praisonai exports an MCPSecurity helper described in source as:
MCP Security - Authentication, authorization, and rate limiting
Provides security policies for MCP servers.
Its AuthMethod type advertises five authentication methods:
export type AuthMethod = 'none' | 'api-key' | 'bearer' | 'basic' | 'oauth';
The authentication-policy evaluator, however, only validates credentials for api-key and bearer:
if (policy.auth.method === 'api-key' || policy.auth.method === 'bearer') {
const valid = policy.auth.validate
? await policy.auth.validate(token)
: this.validateApiKey(token);
if (!valid) {
return { allowed: false, reason: 'Invalid credentials' };
}
}
return { allowed: true, context: { authenticated: true } };
For basic and oauth, any non-empty Authorization header skips the supplied validate callback and returns allowed. A local PoV configures auth.validate to always return false; invalid api-key and bearer credentials are rejected, while invalid basic and oauth credentials are accepted without calling the validator.
This is a protection-mechanism failure in the exported npm MCP security helper. It is distinct from the separate issue that the npm MCPServer HTTP transport does not enforce authentication by default.
Technical Details
SecurityPolicy.auth accepts both a method and a validator:
auth?: { method: AuthMethod; validate?: (token: string) => Promise<boolean> };
extractToken() parses both Bearer and Basic headers:
if (auth.startsWith('Bearer ')) {
return auth.slice(7);
}
if (auth.startsWith('Basic ')) {
return auth.slice(6);
}
return auth;
But evaluatePolicy() only calls policy.auth.validate() for two methods:
if (policy.auth.method === 'api-key' || policy.auth.method === 'bearer') {
const valid = policy.auth.validate
? await policy.auth.validate(token)
: this.validateApiKey(token);
if (!valid) {
return { allowed: false, reason: 'Invalid credentials' };
}
}
There is no validation branch for basic or oauth. After extracting any non-empty token, those methods fall through to the success return:
return { allowed: true, context: { authenticated: true } };
check() then ignores successful authentication context and returns a generic allowed result:
return { allowed: true, context: { authenticated: false } };
That context propagation issue is secondary. The security-relevant flaw is that invalid Basic/OAuth credentials are allowed at all.
Why This Is Not Intended Behavior
This is not a claim that every MCPSecurity user must choose Basic or OAuth. The issue is that the API explicitly exposes those methods as authentication methods and accepts a validator callback for the policy, but the implementation does not call the validator for those methods.
The control cases prove the intended security behavior:
- Missing Basic credentials are denied as
Authentication required. - Invalid
api-keycredentials are denied asInvalid credentials. - Invalid
bearercredentials are denied asInvalid credentials.
The only difference in the vulnerable cases is the selected advertised method. Invalid Basic/OAuth credentials should not become authenticated merely because the method is not listed in the two-method validation branch.
This also matches MCP authorization guidance. MCP servers acting as resource servers must validate received access tokens; receiving a token is not proof that it is valid or intended for the server.
PoV
Run from a local reproduction checkout:
node poc/pov_poc.js 1.7.1
The PoV:
- Installs
npm:[email protected]into a temporary project with scripts disabled. - Imports
MCPSecurityfrom the package root. - Creates one
authenticatepolicy per method. - Supplies an
auth.validatecallback that always returns…
- Record
GHSA-4qq2-2j2x-x62c- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-287, CWE-288, CWE-863
- Updated
- 2026-11-02
Affected products
Affected packages
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-57134 is a high vulnerability (CVSS 8.2) in Mervinpraison Praisonai, published June 18, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.41%, the 36th percentile. Fixed in praisonai 1.7.2.
References
github.com/MervinPraison/PraisonAI/security/advisories/GHSA-4qq2-2j2x-x62c
github.com/MervinPraison/PraisonAI/commit/709a0387853709a5e2f2c34680fa64cada252c27
github.com/MervinPraison/PraisonAI/releases/tag/v4.6.60
github.com/advisories/GHSA-4qq2-2j2x-x62c
github.com/CVEProject/cvelistV5/tree/main/cves/2026/57xxx/CVE-2026-57134.json
nvd.nist.gov/vuln/detail/CVE-2026-57134
github.com/MervinPraison/PraisonAI
Left out here: the rest of 2 source descriptions. The JSON record has them.