<?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/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Pii-Exposure - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/pii-exposure/</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>Wed, 23 Sep 2026 01:54:53 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/pii-exposure/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>IDOR Vulnerability in Spree API Associate Endpoint</title><link>https://feed.craftedsignal.io/briefs/2026-09-spree-idor/</link><pubDate>Wed, 23 Sep 2026 01:54:53 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-spree-idor/</guid><description>An Insecure Direct Object Reference (IDOR) vulnerability in the Spree API v3 allows authenticated users to associate and exfiltrate PII from arbitrary guest carts using reversible Sqids identifiers.</description><content:encoded><![CDATA[<p>Spree versions 5.4.0 through 5.4.3 and 5.5.0 through 5.5.3 contain a high-severity Insecure Direct Object Reference (IDOR) vulnerability in the <code>PATCH /api/v3/store/carts/:id/associate</code> endpoint. The vulnerability arises because the controller fails to perform the standard <code>authorize!(:update, @cart, cart_token)</code> check for the association process. Instead, it relies on a <code>prefixed_id</code> which is generated via reversible Sqids encoding of sequential database primary keys. An authenticated store user can derive candidate cart IDs offline and iterate through them, associating victim guest carts to their own account. Successful exploitation permits the attacker to read sensitive customer checkout information, including full names, street addresses, and phone numbers stored in the guest cart objects.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker registers an ordinary customer account on the target Spree storefront.</li>
<li>Attacker logs into the store via <code>POST /api/v3/store/auth/login</code> to obtain a valid session JWT.</li>
<li>Attacker uses the known Sqids algorithm and target sequential database IDs to generate a list of candidate <code>prefixed_id</code> strings (e.g., <code>cart_XXXXXXXXXX</code>).</li>
<li>Attacker iterates through the generated list, sending <code>PATCH /api/v3/store/carts/:id/associate</code> requests for each candidate ID.</li>
<li>The backend controller processes the request, locates the guest cart via <code>find_cart_for_association</code>, and skips the required authorization check.</li>
<li>The <code>Spree.cart_associate_service</code> reassigns the guest order to the attacker's account and overwrites the associated email address.</li>
<li>The API returns a <code>200 OK</code> response containing the serialized customer PII (billing and shipping addresses) previously stored on the victim's guest cart.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in the unauthorized exposure of personally identifiable information (PII) including names, physical addresses, and contact details for store guests. Furthermore, it causes a disruption to the original guest's shopping experience as their in-progress cart is hijacked and reassigned to the attacker's account. This affects any Spree-based storefront not running in <code>login_required</code> mode.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritized actions for administrators:</p>
<ul>
<li>Upgrade Spree backend components to version 5.4.4 or 5.5.4 immediately to address CVE-2026-94462.</li>
<li>Audit access logs for high-frequency <code>PATCH</code> requests to the <code>/api/v3/store/carts/</code> endpoint originating from single authenticated user sessions.</li>
<li>Monitor for anomalous <code>404</code> or <code>422</code> error patterns on the association endpoint which may indicate automated ID enumeration attempts.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">threat</category><category>idor</category><category>broken-access-control</category><category>spree</category><category>pii-exposure</category></item></channel></rss>