Blog/Polymarket's Second Vendor Compromise of 2026: How a Third-Party Provider Breach Drained $2.65M From User Wallets
Incident ReportPolymarket·Polygon

Polymarket's Second Vendor Compromise of 2026: How a Third-Party Provider Breach Drained $2.65M From User Wallets

Users reportedly lost approximately $2.65 million in a security incident affecting Polymarket's international platform. The company placed the exchange in cancel-only mode and paused relayer actions before restoring trading roughly an hour later. Polymarket attributed the incident to a compromised third-party provider and pledged to reimburse affected traders; NBC News identified website-analytics provider DebugBear as the suspected entry point, citing a person familiar with the investigation. The incident followed a June vendor-related frontend compromise that reportedly cost users approximately $2.97 million.

Protocol
Polymarket
Chain
Polygon
Total loss
~$2.65M
Published
29 October 2026
Editorial Disclaimer

This article is published for educational and informational purposes only. It does not constitute legal, financial, or investment advice. Nothing in this article should be relied upon as the sole basis for any decision relating to the security, investment value, or legal standing of any protocol or digital asset.

This is a preliminary analysis based on publicly available reporting and open-source code review. An official post-mortem has not yet been published by the affected protocol at time of writing. Any code samples included are illustrative reconstructions for educational purposes only and do not represent confirmed exploit code. This article will be updated when authoritative technical disclosure is available.

Information published on any code vulnerabilities must not be used to attack, test, or probe any protocol or system without explicit authorisation from its owner. Use of this content is subject to our Terms of Service and Privacy Policy.

01

What happened

On October 29, 2026, Polymarket halted trading on its international platform after a security incident drained funds from users' wallets. Through its status account, the company placed the exchange in cancel-only mode and paused relayer actions. Users could cancel existing orders, but no new orders or trades would process. "Out of an abundance of caution, we have temporarily halted trading & are working to bring the platform back online," Polymarket said.

Later updates confirmed the cause in general terms: "One of our 3rd party providers was compromised, and we have referred this to relevant law enforcement." Polymarket said it had identified and fixed the issue affecting Polymarket.com, and trading resumed at approximately 3 p.m. ET, after an interruption of nearly an hour. According to NBC News, Polymarket said the attack appeared to originate in the United Kingdom and referred the matter to British law enforcement. Its U.S. platform did not appear to be affected.

The Block, citing Arkham data, estimated that approximately $2.65 million in cryptocurrency was siphoned from user wallets. Polymarket declined to comment on that figure or on the precise nature of the attack, but committed to reimbursement: "We'll make this right and are fully reimbursing all affected traders."

NBC News, citing a person familiar with the details, identified DebugBear, a website performance and analytics provider, as the suspected entry point. DebugBear acknowledged an "ongoing security incident" on X at around 2 p.m. ET. Polymarket's own statements confirm only that a third-party provider was compromised. They do not name the provider or explain how wallets were drained.

This was Polymarket's second vendor-related incident of the year. On June 25, 2026, users lost approximately $2.97 million after an attacker used a compromised third-party vendor to inject a malicious script into Polymarket's website frontend. Polymarket promised refunds then as well.

The $2.65 million figure comes from The Block's reporting based on Arkham data and has not been confirmed by Polymarket. The available sources support describing this as a vendor-related security incident affecting users' wallets, not as a demonstrated exploit of Polymarket's exchange smart contracts. Polymarket's reimbursement announcement is a commitment, not evidence that every refund has been completed.
02

Root cause

The confirmed root cause is a compromised third-party provider. Beyond that, the details are not public. Neither Polymarket nor DebugBear has explained what the attacker did with the provider's access, and no source has yet shown how funds moved from user wallets to the attacker.

Why an analytics vendor can reach user funds

Website performance and analytics tools typically work by loading a JavaScript snippet into every page of the customer's site. That script runs with the same privileges as the site's own code. It can read the page, change what users see, and call the same wallet and signing interfaces the application uses. If an attacker gains control of the script the vendor serves, every visitor to the customer's site runs the attacker's code instead.

That is precisely the mechanism behind Polymarket's June incident, where a compromised vendor was used to inject a malicious script into the frontend. Whether the October incident followed the same path has not been confirmed, and the sources do not establish that the two incidents involved the same provider or vulnerability. The sequence below is an illustrative reconstruction of how a compromised third-party script could drain wallets, not a description of the attacker's confirmed method.

Third-party script compromise (illustrative)Not Polymarket's confirmed attack path
<!-- The site loads a vendor's monitoring script on every page -->
<script src="https://cdn.vendor.example/monitor.js" async></script>

// 1. Attacker compromises the vendor and replaces monitor.js.
//    No change is made to the site's own code or contracts.

// 2. The script now runs inside the site's origin for every visitor.
//    It can intercept the app's own signing flow:
const original = app.requestSignature;
app.requestSignature = async (request) => {
    // Swap the user's intended action for a transfer
    // or approval that benefits the attacker.
    request = buildAttackerTransfer(request.user);
    return original(request);
};

// 3. The user sees the familiar site and approves as usual.
//    The signed request is valid, so downstream systems execute it.

// Result: funds leave user wallets without any smart contract bug.

Why the relayer was paused

Polymarket's decision to pause relayer actions alongside order matching is consistent with this kind of attack. A relayer submits transactions on users' behalf once they have signed them. If an attacker can influence what users sign, pausing the relayer is one of the fastest ways to stop malicious requests from reaching the chain while the source of the compromise is removed. This is an inference from the response, not something Polymarket has stated.

Note: This analysis is based on Polymarket's status updates and NBC News' reporting. Polymarket has not published a technical post-mortem, has not confirmed the loss figure, and has not named the compromised provider. The DebugBear identification rests on a single unnamed source cited by NBC News. This analysis will be updated when more information is released.
03

What could have been done

  • Keep third-party scripts off pages that handle signing. Analytics and performance monitoring rarely need to run on the exact pages where users sign transactions. Removing them from trading and wallet flows, or isolating them in a sandboxed iframe on a separate origin, means a compromised vendor cannot reach the signing interface.
  • Self-host and pin vendor code. Serving a reviewed, versioned copy of a vendor's script from your own infrastructure, protected with Subresource Integrity hashes, prevents a vendor-side compromise from silently changing what runs on your site. Updates then go through your own review instead of arriving live.
  • Enforce a strict Content Security Policy. A tight CSP limits which origins can serve scripts and where page data can be sent. It will not stop an allowed script that has been altered, but combined with self-hosting and SRI it sharply narrows what an injected script can load or exfiltrate.
  • Validate signed intents server-side before relaying. A relayer that executes whatever users sign inherits every frontend compromise. Checks on destination addresses, unusual transfer patterns, and requests that do not match a user's normal trading activity can stop malicious signatures before they reach the chain.
  • Treat a repeat vendor incident as a structural signal. Two vendor-related compromises in four months suggest the problem is the number and privilege of third-party integrations, not a single bad supplier. A full inventory of every external script, what it can access, and whether it is truly needed on sensitive pages is the appropriate response.
  • Show users clear, independent transaction details. Wallets and signing prompts that display the real destination and amount, decoded independently of the website, give users a chance to notice when what they are signing does not match what they intended.
04

Lessons for the industry

The Polymarket incident is a reminder that a crypto application's attack surface extends well beyond its smart contracts. Contracts can be audited, formally verified, and battle-tested, and users can still lose funds if the website they use to interact with those contracts runs code the team does not control. Every third-party script is a dependency with the same reach as the application itself.

Analytics, monitoring, chat widgets, and tag managers are standard on the modern web and usually treated as low risk. On a site where users sign financial transactions, they are not. A vendor compromise that would leak page views on a news site can move money on a trading platform. Teams building on-chain products should hold every script on a signing page to the same standard as their own code.

The response itself was fast and reasonably transparent. Polymarket moved to cancel-only mode, paused the relayer, confirmed a third-party compromise, fixed the issue, and restored trading within about an hour, while committing to reimburse affected users. That speed limited the damage. But recurrence matters more than response time: a second vendor-related loss in the same year suggests that the underlying exposure to third-party code had not been reduced after the first.

Share
Want to talk to our security team?
Book a free 30-minute call with a Deep Guard engineer to discuss your protocol's security needs.
Book a call
Get security insights in your inbox
New incident reports and research delivered when we publish. No spam.
Back to all posts