<?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>Praisonai-Platform (&lt;= 0.1.4) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/praisonai-platform--0.1.4/</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:45:36 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/praisonai-platform--0.1.4/feed.xml" rel="self" type="application/rss+xml"/><item><title>Praisonai-platform Critical Authentication Bypass Due to Persistent Hardcoded JWT Secret</title><link>https://feed.craftedsignal.io/briefs/2026-06-praisonai-platform-jwt-secret-bypass/</link><pubDate>Thu, 18 Jun 2026 14:45:36 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-praisonai-platform-jwt-secret-bypass/</guid><description>Praisonai-platform versions up to and including 0.1.4 are vulnerable to a critical authentication bypass stemming from a hardcoded JWT signing secret ('dev-secret-change-me') and a bypassed production guard, allowing unauthenticated attackers to forge JSON Web Tokens (JWTs) and impersonate any user, leading to complete access, privilege escalation to workspace owner, and potential resource destruction.</description><content:encoded><![CDATA[<p>The <code>praisonai-platform</code> (PyPI) package, specifically versions up to and including 0.1.4, is critically vulnerable to an authentication bypass. Despite a previous advisory (GHSA-3qg8-5g3r-79v5) claiming a patch in 0.1.4, the vulnerability persists. The platform's JSON Web Tokens (JWTs) are signed using a hardcoded secret, &quot;dev-secret-change-me&quot;, which is publicly known from the source code. The intended production guard, designed to prevent this, is default-open because it only triggers when <code>PLATFORM_ENV</code> is <em>not</em> &quot;dev&quot;, but <code>PLATFORM_ENV</code> defaults to &quot;dev&quot; if not explicitly set. This flaw allows any unauthenticated attacker to forge valid JWTs, impersonate any user (including workspace owners), and gain complete unauthorized access. This issue affects any default deployment of <code>praisonai-platform</code> 0.1.4 that does not explicitly set a strong <code>PLATFORM_JWT_SECRET</code>.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li><strong>Reconnaissance</strong>: Attacker identifies a <code>praisonai-platform</code> instance, potentially using <code>uvicorn praisonai_platform.api.app:app</code> or <code>python -m praisonai_platform</code>.</li>
<li><strong>Information Gathering</strong>: Attacker accesses the public source code of <code>praisonai-platform</code> 0.1.4 to retrieve the hardcoded JWT secret &quot;dev-secret-change-me&quot;.</li>
<li><strong>Credential Forgery</strong>: Attacker crafts a malicious JWT payload (e.g., <code>{&quot;sub&quot;: &quot;target_user_id&quot;, &quot;email&quot;: &quot;victim@target&quot;, &quot;exp&quot;: &quot;future_timestamp&quot;}</code>).</li>
<li><strong>JWT Signing</strong>: Attacker signs the crafted JWT payload using the publicly known <code>dev-secret-change-me</code> secret and the <code>HS256</code> algorithm.</li>
<li><strong>Authentication Bypass</strong>: Attacker sends requests to the <code>praisonai-platform</code> API with the forged JWT in the <code>Authorization</code> header. The platform's <code>_verify_token</code> function, also using the default secret, validates the token and authenticates the attacker as <code>target_user_id</code>.</li>
<li><strong>Privilege Escalation</strong>: If the <code>target_user_id</code> is a known workspace owner's ID (which can be discovered from member listings or logs), the attacker gains owner-level access to the workspace.</li>
<li><strong>Impact</strong>: Attacker leverages owner privileges to perform actions such as deleting workspaces, evicting legitimate members, or exfiltrating data, leading to resource destruction or denial of service.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Any deployment of <code>praisonai-platform</code> 0.1.4 that runs without explicitly setting a strong <code>PLATFORM_JWT_SECRET</code> is immediately vulnerable. This includes the default startup commands like <code>python -m praisonai_platform --host 0.0.0.0 --port 8000</code> which do not configure the necessary environment variables. The direct consequences include complete unauthenticated authentication bypass, allowing an attacker to mint valid session tokens for any user. With a known user ID (obtainable from member lists or logs), attackers can achieve workspace-owner takeover, leading to the read, update, and deletion of all resources within that workspace, and member management. This enables resource destruction and lock-out, such as deleting entire workspaces or evicting legitimate users, resulting in an irrecoverable denial of service. The initial vulnerability (GHSA-3qg8) was scored 9.8 Critical on CVSS.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Immediately update <code>praisonai-platform</code> to a version where the vulnerability is confirmed patched, or implement the suggested fix to remove the default secret and enforce <code>PLATFORM_JWT_SECRET</code> at startup.</li>
<li>Review application logs for the presence of the <code>RuntimeError</code> message indicating the default secret is in use in a production environment, as described in the <code>Detect Praisonai-Platform Default Secret Guard RuntimeError</code> Sigma rule.</li>
<li>Search code repositories and configuration files for the hardcoded secret <code>dev-secret-change-me</code> to ensure it's not present in active deployments.</li>
<li>Deploy the <code>Detect Praisonai-Platform Uvicorn Default Startup</code> Sigma rule to identify systems running the vulnerable application entry point.</li>
<li>Rotate all JWT signing keys if this secret has been used in any production environment, assuming compromise.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>authentication-bypass</category><category>hardcoded-credentials</category><category>jwt</category><category>python</category><category>web-application</category><category>supply-chain</category></item></channel></rss>