CVE-2026-47410

PraisonAI Platform JWT Hardcoded Secret Key Token Forgery

Detects exploitation of CVE-2026-47410, a critical vulnerability in praisonai-platform (<= 0.1.2) where the JWT signing key defaults to the hardcoded value 'dev-secret-change-me' when PLATFORM_ENV is unset. An unauthenticated attacker can forge valid JWTs for any user, including administrators, enabling full platform compromise.

Vulnerability Intelligence

Public PoC

Affected Software

Vendor
pip
Product
praisonai-platform
Versions
<= 0.1.2

Weakness (CWE)

Timeline

Disclosed
May 29, 2026

CVSS

9.8
Critical (9.0–10)
Read the write-up →

What is CVE-2026-47410 PraisonAI Platform JWT Hardcoded Secret Key Token Forgery?

PraisonAI Platform JWT Hardcoded Secret Key Token Forgery (CVE-2026-47410) maps to the Initial Access and Privilege Escalation and Credential Access tactics — the adversary is trying to get into your network in MITRE ATT&CK.

This page provides production-ready detection logic for PraisonAI Platform JWT Hardcoded Secret Key Token Forgery, covering the data sources and telemetry it touches: AzureDiagnostics, AppServiceHTTPLogs, SigninLogs. The queries below are rated critical severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Initial Access Privilege Escalation Credential Access
Microsoft Sentinel / Defender
kusto
let SuspiciousEndpoints = dynamic(["/api/", "/admin/", "/auth/", "/users/"]);
let KnownForgedClaims = dynamic(["dev-secret-change-me"]);
union
(
    AzureDiagnostics
    | where Category == "ApplicationGatewayAccessLog"
    | where requestUri_s has_any (SuspiciousEndpoints)
    | extend AuthHeader = extract(@'Authorization:\s*Bearer\s+([A-Za-z0-9+/=._-]+)', 1, httpHeaders_s)
    | where isnotempty(AuthHeader)
    | extend JWTPayload = base64_decode_tostring(extract(@'^[^.]+\.([^.]+)', 1, AuthHeader))
    | where JWTPayload has_any ("admin", "superuser", "root") or JWTPayload has "role"
    | project TimeGenerated, clientIP_s, requestUri_s, httpMethod_s, JWTPayload, AuthHeader
),
(
    AppServiceHTTPLogs
    | where ScStatus in (200, 201, 204) and CsMethod in ("GET", "POST", "PUT", "DELETE", "PATCH")
    | where CsUriStem has_any (SuspiciousEndpoints)
    | extend AuthHeader = extract(@'Bearer\s+([A-Za-z0-9+/=._-]+)', 1, CsUriQuery)
    | where isnotempty(AuthHeader)
    | project TimeGenerated, CIp, CsUriStem, CsMethod, ScStatus, AuthHeader
)
| summarize RequestCount = count(), UniqueEndpoints = dcount(requestUri_s ?? CsUriStem), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by ClientIP = clientIP_s ?? CIp
| where RequestCount > 5 or UniqueEndpoints > 3
| extend RiskScore = case(UniqueEndpoints > 5, "High", RequestCount > 20, "High", "Medium")
| sort by RequestCount desc

Detects potential JWT token forgery against praisonai-platform by monitoring for authenticated API requests from IPs exhibiting anomalous breadth or volume of access, which may indicate forged tokens granting elevated privileges.

critical severity medium confidence

Data Sources

AzureDiagnostics AppServiceHTTPLogs SigninLogs

Required Tables

AzureDiagnostics AppServiceHTTPLogs

False Positives

  • Legitimate automation or API clients making bulk requests across multiple endpoints
  • Security scanning tools performing authenticated vulnerability assessments
  • Load testing tools targeting the praisonai-platform application
  • Monitoring agents performing health checks across multiple API endpoints

Sigma rule & cross-platform mapping

The detection logic for PraisonAI Platform JWT Hardcoded Secret Key Token Forgery (CVE-2026-47410) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  product: azure

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Forge Admin JWT Using Hardcoded Dev Secret

    Expected signal: Python3 process execution with inline code containing 'dev-secret-change-me' string; no network activity generated by this step alone.

  2. Test 2Use Forged Admin JWT Against praisonai-platform API

    Expected signal: Network connection from test host to praisonai-platform port 8000; HTTP GET request with Authorization: Bearer header visible in access logs; HTTP 200 response to admin-only /api/users/ endpoint.

  3. Test 3Enumerate and Escalate via Forged JWT in Headless Environment

    Expected signal: Multiple sequential HTTP requests to distinct admin endpoints within seconds from same source IP; all authenticated with the same Bearer token; successful 200 responses to admin-restricted paths.

Unlock Pro Content

Get the full detection package for CVE-2026-47410 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections