29 października użytkownicy międzynarodowej platformy Polymarket zaczęli zgłaszać sprzedaż pozycji i wypłaty, których nie zlecali. Platforma tymczasowo zatrzymała nowe transakcje i działanie relayera, a następnie poinformowała o przejęciu zewnętrznego dostawcy.
Według szacunków Bitquery w ciągu godziny z 737 kont wypłynęło około 2,73 mln dolarów. Nie jest to oficjalny bilans Polymarket: platforma nie podała ani ostatecznej liczby poszkodowanych, ani łącznej kwoty strat.
Bitquery nie wykryło złamanego smart kontraktu. Wypłaty miały ważne zatwierdzenia i przeszły przez zwykłą infrastrukturę Polymarket. Technicznie wyglądały na autoryzowane, choć właściciele kont twierdzili, że ich nie zlecali.
Chronologia zdarzeń
Pierwsze wypłaty rozpoczęły się o 17:10 UTC. W pierwszej serii opróżniono pięć kont, w tym jedno na około 75 tys. dolarów. Po 13-minutowej przerwie tempo wzrosło do 40 wypłat na minutę.
Do 18:10 UTC Bitquery naliczyło 737 kont. Największa pojedyncza strata wyniosła około 358 tys. dolarów. 39% portfeli straciło mniej niż 100 dolarów, ale cztery konta odpowiadały za 43% śledzonej kwoty. Z 33 kont wyprowadzono również otwarte pozycje.
O 18:05 UTC oficjalna strona statusu ogłosiła tryb cancel-only: można było anulować istniejące zlecenia, lecz nie składać ani realizować nowych. Wstrzymano też relayer.
O 18:37 UTC Polymarket poinformował o znalezieniu i usunięciu problemu. Przyczyną miał być przejęty zewnętrzny dostawca; sprawę przekazano organom ścigania, a użytkownikom obiecano pełną rekompensatę. O 19:05 UTC incydent oznaczono jako rozwiązany.
Jak zewnętrzny skrypt mógł dotrzeć do środków
Nowoczesna platforma ładuje zewnętrzne komponenty do analityki, monitorowania wydajności, wsparcia i wykrywania błędów.
Taką integrację instaluje właściciel strony, a nie każdy użytkownik. W tym przypadku badacze wskazują na skrypt monitorujący osadzony w witrynie Polymarket. Przeglądarka ładowała go automatycznie razem ze stroną. Użytkownicy nie instalowali żadnej aplikacji ani rozszerzenia DebugBear.
Kod działał wewnątrz zaufanej strony. Jeżeli dostawca został przejęty, złośliwy skrypt mógł dotrzeć zwykłą drogą integracji i wejść w interakcję z aktywną sesją.
Polymarket nie podał nazwy dostawcy. Associated Press i inne media połączyły jednak incydent z DebugBear. Firma zgłosiła tego samego dnia własny problem bezpieczeństwa i zaleciła klientom usunięcie kodu Real User Monitoring.
BleepingComputer przeanalizował kopię złośliwego JavaScriptu. Według raportu kod sprawdzał aktywną sesję, oceniał salda i pozycje, a następnie próbował użyć zwykłych funkcji Polymarket do ich przeniesienia.
To nie był exploit smart kontraktu. Kontrakt mógł prawidłowo zweryfikować zatwierdzenie i wykonać dokładnie otrzymaną instrukcję. Problem powstał wcześniej, w interfejsie przygotowującym operację w imieniu zalogowanego użytkownika.
Deposit wallet, approval i relayer
Deposit wallet przechowuje środki konta w sieci Polygon. Według Bitquery znajdował się w nim pUSD zabezpieczony USDC w relacji jeden do jednego.
Approval zezwala na określone działanie. Dla blockchaina jest to kryptograficznie ważna instrukcja. Sieć nie wie jednak, czy użytkownik świadomie jej chciał, czy interfejs został zmieniony ani czy obcy kod wykorzystał aktywną sesję.
Relayer przesyła transakcję i opłaca prowizję sieciową. Według Bitquery ta ścieżka technicznie działała normalnie. Zmienił się cel: środki trafiały na adres kontrolowany przez atakującego.
Ważne zatwierdzenie nie oznacza więc dobrowolnej wypłaty. Pierwsze opisuje kontrolę blockchaina, drugie intencję człowieka.
Anomalia widoczna on-chain
Główna fala zakończyła się niemal równocześnie z zatrzymaniem relayera. W ciągu poprzednich dwóch tygodni mediana wynosiła około 47 wypłat dziennie zamienianych na POL przez Relay. 29 października jeden adres otrzymał 981 przelewów.
Monitoring może łączyć kilka sygnałów: setki kont, jeden adres docelowy, nagły wzrost częstotliwości, sprzedaż pozycji tuż przed wypłatą i skrajne odejście od normalnej aktywności.
Według Bitquery środki zamieniono na POL, zebrano na jednym adresie, a potem rozdzielono między nowe portfele i zaczęto przenosić w stronę Ethereum. Nowe konto Polymarket miało też służyć do sprzedaży lub konwersji przejętych pozycji.
W ostatnim odczycie o 19:49 UTC większość śledzonych środków pozostawała w Polygon. To fotografia jednego momentu, nie ostateczny bilans.
Dlaczego liczby pozostają szacunkami
Dane on-chain pokazują adresy, kwoty i czas, lecz same nie identyfikują sprawcy ani nie wyjaśniają sposobu uzyskania każdego zatwierdzenia. Bitquery policzyło odnalezioną ścieżkę; inne adresy lub metody mogłyby zmienić sumę.
Precyzyjna formuła brzmi: Bitquery oszacowało śledzone straty 737 kont na 2,73 mln dolarów. Polymarket oficjalnie nie potwierdził tych danych.
Rekompensaty i odpowiedzialność
Polymarket obiecał pełną rekompensatę wszystkim poszkodowanym. W chwili publikacji brakowało raportu z ostateczną liczbą kont, kwotą zwrotów i harmonogramem wypłat.
Dla klienta zewnętrzny dostawca jest częścią produktu. Nie korzysta on oddzielnie ze smart kontraktu, relayera i usługi monitoringu. Jeżeli zależność działa w zaufanym interfejsie i ma dostęp do uwierzytelnionej sesji, jej bezpieczeństwo jest częścią bezpieczeństwa platformy.
W czerwcu 2026 roku Polymarket zgłaszał już inny przypadek, w którym przejęty dostawca umieścił złośliwy kod we frontendzie części użytkowników. Oba zdarzenia należą do tej samej kategorii ryzyka, lecz nie ma wystarczających dowodów na identyczny mechanizm lub bezpośredni związek.
Bezpieczny smart kontrakt nie chroni całego systemu
Blockchain może potwierdzić zgodność transakcji z regułami technicznymi. Nie może potwierdzić, że człowiek widział uczciwy interfejs, rozumiał adres docelowy i chciał wykonać właśnie tę operację.
Pełny łańcuch bezpieczeństwa wygląda tak:
kod zewnętrzny → sesja przeglądarki → zatwierdzenie → relayer → smart kontrakt → adres docelowy
29 października koniec tego łańcucha działał zgodnie z projektem. Przejęcie jego początku wystarczyło, aby prawidłowe wykonanie dało użytkownikom niewłaściwy rezultat.
Polymarket ograniczył operacje, przywrócił handel i obiecał rekompensaty. Teraz potrzebne są potwierdzenie wypłat i wyjaśnienie, jak platforma zapobiegnie ponownemu generowaniu ważnych, lecz niechcianych transakcji przez zewnętrzną zależność.


