Basen PancakeSwap V2 dla OCAUSDC na BSC został wykorzystany w podejrzanej transakcji wykrytej dzisiaj. Atak spowodował utratę prawie 500 000 dolarów amerykańskich w USDC, które zostały wyprowadzone w jednej transakcji.
Zgodnie z raportami platform bezpieczeństwa Blockchain, atakujący wykorzystał lukę w deflacyjnej logice sellOCA(), co umożliwiło manipulację rezerwami basenu. Ostateczna kwota, którą uzyskał atakujący, wyniosła podobno około 422 000 dolarów.
Wykorzystanie tej luki polegało na użyciu flash loans oraz flash swaps w połączeniu z wielokrotnym wywołaniem funkcji swapHelper OCA. Pozwoliło to na bezpośrednie usuwanie tokenów OCA z puli płynności podczas swapów, sztucznie zawyżając cenę OCA w parze i umożliwiając wyprowadzenie USDC.
Jak doszło do exploitu OCA/USDC?
Według doniesień, atak został przeprowadzony za pomocą trzech transakcji. Pierwsza posłużyła do przeprowadzenia exploita, a dwie kolejne jako dodatkowe łapówki dla builderów.
„W sumie 43 BNB oraz 69 BNB zostały wypłacone 48club-puissant-builder, co zostawiło szacowany końcowy zysk na poziomie 340 000 dolarów,” napisał Blocksec Phalcon na X o tym incydencie, dodając, że inna transakcja w tym samym bloku również nie powiodła się na pozycji 52, prawdopodobnie dlatego, że została uprzedzona przez atakującego.
Flash loans na PancakeSwap pozwalają użytkownikom pożyczać znaczne ilości aktywów kryptowalutowych bez zabezpieczenia; jednak pożyczona kwota wraz z opłatami musi zostać spłacona w tym samym bloku transakcyjnym.
Są one wykorzystywane głównie w strategiach arbitrażowych i likwidacyjnych na Binance Smart Chain, a pożyczki te są zazwyczaj realizowane przez funkcję flash swap PancakeSwap V3.
Kolejny atak z użyciem flash loan został wykryty kilka tygodni temu
W grudniu 2025 roku exploit umożliwił atakującemu wycofanie około 138,6 WBNB z puli płynności PancakeSwap dla pary DMi/WBNB, uzyskując około 120 000 dolarów.
Ten atak pokazał, jak połączenie flash loans oraz manipulacji wewnętrznymi rezerwami pary AMM poprzez funkcje sync() i callback może zostać wykorzystane do całkowitego opróżnienia puli.
Atakujący najpierw stworzył kontrakt exploita i wywołał funkcję f0ded652(), specjalny punkt wejścia do kontraktu, po czym kontrakt wywołał flashLoan z protokołu Moolah, żądając około 102 693 WBNB.
Po otrzymaniu flash loan kontrakt inicjuje callback onMoolahFlashLoan(…). Pierwszą rzeczą, którą wykonuje callback, jest sprawdzenie salda tokenów DMi w puli PancakeSwap, aby przygotować się do manipulacji rezerwami pary.
Należy zaznaczyć, że luka nie leży w flash loan, lecz w kontrakcie PancakeSwap, który umożliwia manipulację rezerwami poprzez połączenie flash swap i sync() bez zabezpieczenia przed złośliwymi callbackami.


