<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Jwt-Forgery - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/jwt-forgery/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 18 Jun 2026 14:43:44 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/jwt-forgery/feed.xml" rel="self" type="application/rss+xml"/><item><title>PraisonAI Platform Vulnerable to JWT Forgery via Hardcoded Default Secret</title><link>https://feed.craftedsignal.io/briefs/2026-06-praisonai-platform-jwt-secret-forgery/</link><pubDate>Thu, 18 Jun 2026 14:43:44 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-praisonai-platform-jwt-secret-forgery/</guid><description>The `praisonai-platform` package, versions 0.1.4 and below, is critically vulnerable to authentication bypass and privilege escalation due to a hardcoded default JWT signing secret (`dev-secret-change-me`) that is inadvertently enabled in default deployments, allowing an unauthenticated attacker to forge JWTs and impersonate any user.</description><content:encoded><![CDATA[<p>The <code>praisonai-platform</code> Python package, specifically versions 0.1.4 and older, developed by Mervin Praison, contains a critical vulnerability where its JSON Web Token (JWT) signing secret defaults to a publicly known string, <code>dev-secret-change-me</code>. This misconfiguration stems from a flawed environment variable check in <code>praisonai_platform/services/auth_service.py</code> (SHA256: <code>cc29d43c5412da2c73c818859b8d8b146587842999b777336017ab9d9e509258</code>). The intended guard to prevent production deployments with the default secret fails if both <code>PLATFORM_JWT_SECRET</code> and <code>PLATFORM_ENV</code> are left unset, causing the application to silently start with the insecure secret. This enables unauthenticated attackers to forge arbitrary JWTs, effectively bypassing authentication for any user, including administrative accounts, across all routes protected by the <code>get_current_user</code> dependency.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li><strong>Initial Access / Reconnaissance</strong>: An unauthenticated attacker identifies a <code>praisonai-platform</code> instance, possibly by interacting with its API endpoints or discovering the underlying software version.</li>
<li><strong>Vulnerability Identification</strong>: The attacker identifies that the application is running <code>praisonai-platform</code> version 0.1.4 or earlier and has not correctly configured its <code>PLATFORM_JWT_SECRET</code> and <code>PLATFORM_ENV</code> environment variables, leading to the use of the default <code>dev-secret-change-me</code> JWT secret.</li>
<li><strong>Token Forgery</strong>: Using the publicly known JWT secret (<code>dev-secret-change-me</code>) and the HS256 algorithm, the attacker crafts a JWT with arbitrary claims, including <code>sub</code> (user ID) and <code>email</code>, for a target user (e.g., an administrative user like <code>admin@example.com</code> or a known user ID).</li>
<li><strong>Authentication Bypass</strong>: The attacker sends the forged JWT in an <code>Authorization</code> header to a protected endpoint (e.g., <code>/api/v1/workspaces</code>, <code>/api/v1/projects</code>).</li>
<li><strong>User Impersonation</strong>: The <code>praisonai-platform</code> server validates the forged token using the default secret and treats the attacker as the impersonated user (e.g., <code>admin-user-id-attacker-chose</code>).</li>
<li><strong>Privilege Escalation / Unauthorized Access</strong>: If the forged token impersonates an administrator or a member of a specific workspace, the attacker gains full access to that user's resources and permissions within the application, including creating, modifying, or deleting data.</li>
<li><strong>Impact</strong>: The attacker proceeds to exfiltrate data, tamper with application settings, or perform other malicious actions as the impersonated user.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This critical vulnerability directly leads to complete authentication bypass and privilege escalation within affected <code>praisonai-platform</code> deployments. An attacker can impersonate any user, including administrators, by forging JWTs with arbitrary user IDs and email addresses. All routes protected by the <code>get_current_user</code> dependency, which includes core functionalities such as managing workspaces, projects, issues, agents, and labels, become vulnerable to unauthorized access. The consequence is full compromise of the application's data and functionality, with potential for sensitive data exfiltration, system configuration changes, and disruption of service. There is no specific victim count, but any instance of <code>praisonai-platform</code> running the vulnerable versions without proper environment configuration is at risk.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Immediate Action</strong>: Patch <code>praisonai-platform</code> to a version that addresses this vulnerability or ensure <code>PLATFORM_JWT_SECRET</code> is set to a strong, random, and unique value (at least 32 bytes) in all environments, including development. Set <code>PLATFORM_ENV</code> to a non-<code>dev</code> value (e.g., <code>production</code>) for production deployments to ensure the built-in guard is active.</li>
<li><strong>Detection Engineering</strong>: Deploy the provided Sigma rule &quot;Detect PraisonAI Platform Vulnerable File (SHA256)&quot; to identify instances running the vulnerable <code>auth_service.py</code> file.</li>
<li><strong>Supply Chain Security</strong>: Implement automated scanning for component vulnerabilities (SCA) to identify the presence of <code>praisonai-platform &lt;= 0.1.4</code> in your software supply chain.</li>
<li><strong>Log Configuration</strong>: Ensure application logs are configured to capture environment variable settings on process startup, if possible, to detect instances where <code>PLATFORM_JWT_SECRET</code> is unset or <code>PLATFORM_ENV</code> defaults to <code>dev</code>.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>authentication-bypass</category><category>hardcoded-credentials</category><category>jwt-forgery</category><category>python</category><category>supply-chain</category><category>misconfiguration</category></item></channel></rss>