<?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>@Strapi/Strapi — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/@strapi/strapi/</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, 14 May 2026 13:21:49 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/@strapi/strapi/feed.xml" rel="self" type="application/rss+xml"/><item><title>Strapi Unauthenticated Account Takeover via Relational Filtering Vulnerability (CVE-2026-27886)</title><link>https://feed.craftedsignal.io/briefs/2026-05-strapi-rce/</link><pubDate>Thu, 14 May 2026 13:21:49 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-strapi-rce/</guid><description>Strapi versions prior to 5.37.0 are vulnerable to an unauthenticated boolean-oracle attack against private fields on the joined `admin_users` table, including the `resetPasswordToken` field, via the 'where' query parameter on publicly accessible content-types; extracting an admin reset token via this oracle makes full administrative account takeover possible without authentication.</description><content:encoded><![CDATA[<p>Strapi versions prior to 5.37.0 contain a critical vulnerability (CVE-2026-27886) that allows unauthenticated attackers to perform account takeover. The vulnerability stems from insufficient sanitization of query parameters when filtering content via relational fields. An attacker can exploit this flaw by crafting malicious <code>where</code> query parameters targeting publicly accessible content types with an <code>updatedBy</code> (or other admin-relation) field. This allows for a boolean-oracle attack against private fields in the joined <code>admin_users</code> table, specifically targeting the <code>resetPasswordToken</code> field. Successful extraction of an admin reset token enables complete administrative account takeover without requiring any prior authentication. The vulnerability affects <code>@strapi/strapi</code> versions &lt;=5.36.1.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An unauthenticated attacker identifies a publicly accessible content-type endpoint in the Strapi application that includes a relational field to the <code>admin_users</code> table (e.g., <code>updatedBy</code>, <code>createdBy</code>, <code>publishedBy</code>).</li>
<li>The attacker crafts a malicious HTTP GET request to the identified endpoint, using the <code>where</code> query parameter to filter results based on a private field in the <code>admin_users</code> table, such as <code>resetPasswordToken</code>.</li>
<li>The attacker injects special characters and operators (e.g., <code>$startsWith</code>, <code>$contains</code>, <code>$eq</code>) into the <code>where</code> query parameter to construct a boolean-oracle attack. Example: <code>where[updatedBy][resetPasswordToken][$startsWith]=a</code>.</li>
<li>The vulnerable Strapi application executes a <code>LEFT JOIN</code> query against the <code>admin_users</code> table without proper sanitization, allowing the attacker to infer information about the <code>resetPasswordToken</code> field based on the response.</li>
<li>The attacker iterates through a hex alphabet (<code>0</code>-<code>9</code>, <code>a</code>-<code>f</code>) to progressively reveal the <code>resetPasswordToken</code> value one character at a time by observing subtle differences in the response.</li>
<li>Once the attacker has successfully extracted the complete <code>resetPasswordToken</code>, they make a <code>POST /admin/reset-password</code> request with the stolen token.</li>
<li>The Strapi application validates the stolen reset token, and allows the attacker to set a new password for the targeted administrator account.</li>
<li>The attacker successfully logs in to the Strapi admin panel using the newly set password, achieving full administrative account takeover.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-27886 allows unauthenticated attackers to gain complete control over the Strapi application. This can lead to data breaches, unauthorized modifications, and denial of service. The affected versions are <code>@strapi/strapi</code> &lt;=5.36.1. The impact is considered critical due to the ease of exploitation and the high level of access gained.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Immediately upgrade your Strapi installation to version &gt;=5.37.0 to patch CVE-2026-27886, as recommended in the advisory.</li>
<li>Deploy the Sigma rule &ldquo;Detect Strapi resetPasswordToken Oracle Attempts (CVE-2026-27886)&rdquo; to detect potential exploitation attempts by monitoring for suspicious <code>where</code> query parameters in web server access logs.</li>
<li>Deploy the Sigma rule &ldquo;Detect Strapi Admin Password Reset After Potential Exploitation (CVE-2026-27886)&rdquo; to detect potential exploitation attempts by monitoring for admin password resets following suspicious activity.</li>
<li>Monitor server access logs for query strings containing patterns matching <code>\?(.*&amp;)?where\[(updatedBy|createdBy|publishedBy)\]\[(email|password|resetPasswordToken|confirmationToken|firstname|lastname|preferedLanguage)\]\[\$(startsWith|contains|eq|gt|lt|ge|le|in|notIn|notNull|null)\]=</code> as described in the advisory.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>cve</category><category>strapi</category><category>account takeover</category><category>vulnerability</category></item></channel></rss>