Em 29 de outubro, utilizadores da plataforma internacional da Polymarket começaram a relatar vendas de posições e levantamentos que não tinham autorizado. A plataforma suspendeu temporariamente novas operações e o relayer, informando depois que um fornecedor externo tinha sido comprometido.
Segundo a estimativa da Bitquery, cerca de 2,73 milhões de dólares saíram de 737 contas numa hora. Não é um total oficial da Polymarket: a empresa não divulgou o número final de afetados nem o valor global.
A Bitquery não encontrou um smart contract violado. Os levantamentos tinham aprovações válidas e passaram pela infraestrutura normal da Polymarket. Pareciam tecnicamente autorizados, embora os titulares afirmassem não os ter solicitado.
Cronologia do incidente
Os primeiros levantamentos começaram às 17:10 UTC. Cinco contas foram esvaziadas no primeiro grupo, uma delas em cerca de 75 mil dólares. Após uma pausa de 13 minutos, o ritmo chegou a 40 levantamentos por minuto.
Às 18:10 UTC, a Bitquery contabilizava 737 contas. A maior perda individual foi de cerca de 358 mil dólares. 39% das carteiras perderam menos de 100 dólares, enquanto quatro contas representaram 43% do valor rastreado. Também foram retiradas posições abertas de 33 contas.
Às 18:05 UTC, a página oficial de estado anunciou o modo cancel-only: era possível cancelar ordens existentes, mas não criar ou executar novas. O relayer foi suspenso em simultâneo.
Às 18:37 UTC, a Polymarket afirmou ter identificado e corrigido o problema. Atribuiu-o a um fornecedor externo comprometido, encaminhou o caso para as autoridades e prometeu reembolsar integralmente os afetados. Às 19:05 UTC, o incidente foi marcado como resolvido.
Como um script externo pôde chegar aos fundos
Uma plataforma moderna carrega componentes externos para análise, monitorização de desempenho, apoio ao cliente e deteção de erros.
A integração é instalada pelo proprietário do site, não por cada utilizador. Neste caso, as investigações apontam para um script de monitorização incorporado no site da Polymarket. Ao abrir a plataforma, o navegador carregava-o automaticamente com a restante página. Os utilizadores não instalavam qualquer aplicação ou extensão da DebugBear.
Este código é executado dentro de uma página já considerada fiável. Se o fornecedor for comprometido, código malicioso pode chegar através da integração normal e interagir com uma sessão autenticada.
A Polymarket não identificou publicamente o fornecedor. Contudo, a Associated Press e outros meios ligaram o incidente à DebugBear. A empresa comunicou no mesmo dia um problema de segurança próprio e recomendou aos clientes que removessem o código Real User Monitoring.
O BleepingComputer analisou uma cópia do JavaScript malicioso. Segundo a análise, o código verificava uma sessão ativa, avaliava saldos e posições e tentava utilizar as funções normais da Polymarket para os transferir.
Isto não é o mesmo que explorar um smart contract. O contrato pode verificar corretamente uma aprovação e executar exatamente a instrução recebida. O problema surge antes, na interface que prepara a ação em nome de um utilizador autenticado.
Deposit wallet, approval e relayer
A deposit wallet guarda os fundos da conta na Polygon. Segundo a Bitquery, continha pUSD garantido por USDC na proporção de um para um.
Uma approval autoriza uma ação. Para a blockchain, é uma instrução criptograficamente válida. A rede não consegue saber se a pessoa queria conscientemente a operação, se a interface foi alterada ou se código externo abusou da sessão.
O relayer envia a transação e paga a comissão da rede. A Bitquery concluiu que este percurso funcionou normalmente do ponto de vista técnico. O que mudou foi o destino: os fundos seguiram para um endereço controlado pelo atacante.
Uma aprovação válida não equivale, portanto, a um levantamento voluntário. A primeira descreve a verificação da blockchain; o segundo refere-se à intenção humana.
Uma anomalia visível on-chain
A principal vaga terminou quase ao mesmo tempo que a suspensão do relayer. Nas duas semanas anteriores, a mediana era de cerca de 47 levantamentos diários convertidos em POL através da Relay. Em 29 de outubro, um único endereço recebeu 981 transferências.
Um sistema de monitorização pode combinar vários sinais: centenas de contas, o mesmo destino, um aumento abrupto da frequência, posições vendidas imediatamente antes do levantamento e atividade muito distante do padrão habitual.
Segundo a Bitquery, os fundos foram convertidos em POL, reunidos num endereço e depois distribuídos por novas carteiras e movidos em direção à Ethereum. Uma nova conta da Polymarket terá também sido usada para vender ou converter posições retiradas.
No último registo, às 19:49 UTC, a maioria dos fundos rastreados ainda estava na Polygon. Trata-se de um retrato momentâneo, não de um balanço final.
Porque os números continuam a ser estimativas
Os dados on-chain mostram endereços, valores e horários, mas não identificam por si só o atacante nem explicam como cada aprovação foi obtida. A Bitquery contou a rota que conseguiu rastrear; outros endereços ou métodos poderiam alterar o total.
A formulação correta é: a Bitquery estimou perdas rastreadas de 2,73 milhões de dólares em 737 contas. A Polymarket não confirmou oficialmente esses números.
Reembolsos e responsabilidade
A Polymarket prometeu reembolsar integralmente todos os utilizadores afetados. No momento da publicação, ainda não tinha divulgado o número final de contas, o valor total ou um calendário completo.
Para o cliente, um fornecedor externo faz parte do produto. Ele não utiliza separadamente o smart contract, o relayer e a ferramenta de monitorização. Se uma dependência corre dentro da interface de confiança e consegue alcançar uma sessão autenticada, a sua segurança integra a segurança da plataforma.
Em junho de 2026, a Polymarket já tinha comunicado outro incidente em que um fornecedor comprometido introduziu código malicioso no frontend de alguns utilizadores. Os dois casos pertencem à mesma categoria de risco, mas não há provas suficientes para afirmar que tiveram o mesmo mecanismo ou uma ligação direta.
Um smart contract seguro não protege todo o sistema
Uma blockchain pode confirmar que uma transação cumpre as regras técnicas. Não pode confirmar que a pessoa viu uma interface honesta, compreendeu o endereço de destino e quis realizar exatamente aquela ação.
A cadeia completa de segurança é:
código externo → sessão do navegador → aprovação → relayer → smart contract → endereço de destino
Em 29 de outubro, o final desta cadeia funcionou como previsto. Comprometer o início foi suficiente para que uma execução correta produzisse o resultado errado para os utilizadores.
A Polymarket limitou as operações, restaurou a negociação e prometeu reembolsos. Faltam agora a confirmação desses pagamentos e uma explicação sobre como outra dependência externa será impedida de voltar a gerar transações válidas, mas indesejadas.


