<?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>Apollo - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/apollo/</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>Mon, 03 Aug 2026 18:11:02 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/apollo/feed.xml" rel="self" type="application/rss+xml"/><item><title>Critical Prototype Pollution Vulnerability in Apollo Federation</title><link>https://feed.craftedsignal.io/briefs/2026-08-apollo-prototype-pollution/</link><pubDate>Mon, 03 Aug 2026 18:11:02 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-apollo-prototype-pollution/</guid><description>CVE-2026-32621 is a critical prototype pollution vulnerability in Apollo Federation that allows unauthenticated attackers to manipulate application objects via malicious GraphQL queries.</description><content:encoded><![CDATA[<p>CVE-2026-32621 is a critical prototype pollution vulnerability (CWE-1321) affecting Apollo Federation gateways. The vulnerability resides in the deepMerge process, where an attacker can supply specially crafted GraphQL queries containing recursive keys such as <strong>proto</strong>, constructor, or prototype within field aliases or variable names. By exploiting this, an attacker can modify the base Object.prototype, causing subsequent requests to inherit malicious properties. This can lead to privilege escalation, unauthorized data access, or denial of service depending on the application context. The vulnerability has been assigned a CVSS score of 9.9, and working exploit code has been publicly released, significantly increasing the risk of exploitation for unpatched instances. Organizations using Apollo Federation should prioritize patching to the provided versions immediately.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts a GraphQL query containing object prototype keys like <strong>proto</strong> or constructor inside a field alias.</li>
<li>Attacker sends the malicious GraphQL query to the Apollo Gateway endpoint (e.g., /graphql) via a standard HTTP POST request.</li>
<li>The Apollo Gateway receives the query and initiates the processing flow, forwarding the request to the relevant subgraph.</li>
<li>The subgraph returns a JSON response containing the malicious prototype keys.</li>
<li>The Apollo Gateway invokes its deepMerge() utility function to combine the response data.</li>
<li>The deepMerge() function incorrectly processes the prototype keys, resulting in the injection of properties directly into the global Object.prototype.</li>
<li>All subsequent operations handled by the gateway inherit the polluted properties from Object.prototype.</li>
<li>Attacker leverages these injected properties (e.g., isAdmin: true) to bypass authentication or execute arbitrary application logic.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows attackers to alter the application state globally, potentially leading to full compromise of the gateway's security controls. Any downstream application relying on the object's integrity is affected. Public availability of an exploit increases the likelihood of widespread automated scanning and exploitation attempts against internet-facing GraphQL endpoints.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade all Apollo Federation instances to versions 2.9.6, 2.10.5, 2.11.6, 2.12.3, or 2.13.2 immediately.</li>
<li>Implement request filtering at the Web Application Firewall (WAF) or API gateway layer to block GraphQL queries containing keys: <strong>proto</strong>, constructor, or prototype.</li>
<li>Review GraphQL schemas and validation logic to ensure strict adherence to allowed field aliases and variables.</li>
<li>Use Object.create(null) for data structures intended to hold external, untrusted input to prevent prototype inheritance.</li>
</ol>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category></item></channel></rss>