O eroare de calcul, patru minute de haos și 1,78 milioane de dolari pierduți: cazul Moonwell

O eroare de calcul, patru minute de haos și 1,78 milioane de dolari pierduți – cazul Moonwell

0 Shares
0
0
0

Pe 15 februarie 2026, la ora 18:01 UTC, pe platforma DeFi Moonwell s-a executat o propunere de guvernanță aparent banală. Scopul era unul tehnic, de rutină: activarea unor contracte wrapper Chainlink OEV pe piețele protocolului, în rețelele Base și Optimism.

Nimeni nu se aștepta la ce avea să urmeze. În mai puțin de patru minute, o singură configurație greșită a oracolului de preț a transformat un activ evaluat la circa 2.200 de dolari într-unul cotat la 1,12 dolari. Boții de lichidare au reacționat pe loc, iar protocolul a rămas cu o gaură de aproape 1,78 milioane de dolari în datorii nerecuperabile.

Povestea nu s-ar fi distins de alte incidente DeFi dacă nu ar fi existat un detaliu care a aprins internetul. Codul implicat în configurația defectuoasă purta, în istoricul GitHub, o mențiune devenită rapid cel mai distribuit screenshot din cercurile de securitate cripto ale săptămânii: „Co-Authored-By: Claude Opus 4.6″, adică modelul de inteligență artificială al Anthropic.

Ce face Moonwell și de ce contează oracolele?

Moonwell este un protocol descentralizat de împrumuturi și creditare, construit inițial pe Moonbeam și activ în prezent pe rețelele Base și Optimism. Funcționează oarecum similar unei bănci tradiționale, doar că fără intermediari umani.

Utilizatorii depun active cripto drept colateral și pot împrumuta alte active pe baza valorii depuse. Dacă valoarea colateralului scade sub un anumit prag, pozițiile sunt lichidate automat de roboți software care monitorizează permanent piața.

Întregul mecanism depinde de acuratețea prețurilor raportate. Aici intervin oracolele, servicii externe care furnizează date din lumea reală, precum cotațiile activelor, direct pe blockchain.

Fără oracole funcționale, un protocol de creditare nu știe cât valorează colateralul depus. Iar dacă un oracol raportează un preț greșit, consecințele se propagă cu o viteză pe care niciun operator uman nu o poate ține în frâu.

Cum s-a produs eroarea?

cbETH, sau Coinbase Wrapped ETH, este un token de staking lichid. Un cbETH corespunde a aproximativ 1,12 ETH, diferența reflectând recompensele de staking acumulate în timp. Ca să obții valoarea în dolari a unui cbETH, calculul e simplu: iei raportul cbETH/ETH (acel 1,12) și îl înmulțești cu prețul curent ETH/USD. Două numere, o singură operație aritmetică.

Oracolul configurat prin propunerea MIP-X43 a sărit peste al doilea pas. A folosit doar raportul cbETH/ETH, fără multiplicarea cu prețul ETH/USD. Prin urmare, sistemul a interpretat cifra 1,12 ca valoare finală în dolari, nu ca rată de schimb. Un activ care se tranzacționa la circa 2.200 de dolari pe piețele deschise apărea brusc pe Moonwell la 1,12 dolari. Un discount de 99,9%, vizibil pe blockchain, deschis oricui monitoriza protocolul.

Iar boții monitorizau. Întotdeauna o fac.

Patru minute care au costat 1,78 milioane de dolari

Din clipa în care propunerea a fost executată, lucrurile s-au desfășurat cu o eficiență aproape chirurgicală. Roboții de lichidare, adică programe automate care scanează non-stop protocoalele DeFi în căutarea pozițiilor vulnerabile, au detectat imediat că toate pozițiile garantate cu cbETH pe Moonwell deveniseră, conform prețului raportat, masiv subcolateralizate.

Lichidarea în DeFi funcționează cam așa: dacă valoarea colateralului tău scade sub un anumit prag, oricine poate rambursa o parte din datoria ta și, în schimb, confiscă o porțiune din colateral, cu un mic bonus. În condiții normale, mecanismul ăsta protejează protocolul de datorii nerecuperabile. Dar când prețul raportat e greșit cu trei ordine de mărime, plasa de siguranță se transformă într-o armă.

Concret, boții au rambursat sume infime de datorie și au confiscat cbETH evaluat pe piața reală la mii de dolari bucata. Într-un interval estimat la patru minute, 1.096,317 cbETH au fost confiscate de la împrumutătorii protocolului. Colateralul acestora a fost șters, iar pe conturile lor au rămas datorii fără nicio acoperire.

Firma Anthias Labs, care gestionează riscul pentru Moonwell, a detectat discrepanța și a redus imediat limita de împrumut la 0,01, blocând practic noi operațiuni. Numai că era deja prea târziu. Boții acționaseră în milisecunde, iar răspunsul uman, oricât de prompt, a venit cu minute de întârziere.

Pe lângă lichidări, un al doilea vector de exploatare a funcționat în paralel. Un grup mai mic de utilizatori a profitat de prețul distorsionat: au depus colateral minim, au împrumutat cbETH la prețul artificial de 1,12 dolari și au dispărut cu diferența. Au pus aproape nimic pe masă și au scos active reale. Datoria generată astfel a rămas pe registrele protocolului, fără vreo perspectivă de recuperare.

De ce nu s-a putut repara pe loc?

Poate cel mai frustrant aspect al acestui incident este că, deși echipa a identificat eroarea în câteva minute, corectarea efectivă a oracolului nu era fezabilă rapid. Arhitectura de guvernanță a Moonwell impune un proces de vot și o perioadă de blocare de cinci zile pentru orice modificare de parametri la nivel de protocol.

Regula asta a fost gândită ca să prevină acțiuni unilaterale și să protejeze comunitatea de decizii luate la nervi. Doar că, în contextul incidentului, a devenit o piedică.

Lichidările au continuat și după ce limita de împrumut a fost tăiată, fiindcă oracolul raporta în continuare prețul eronat. Singura soluție reală, reconfigurarea oracolului, stătea blocată în spatele unui proces de guvernanță care nu putea fi ocolit.

Când cea mai rapidă apărare a ta se mișcă în minute, dar atacatorii tăi acționează în milisecunde, patru minute nu mai sunt un timp de răspuns. Sunt un epilog.

Cât s-a pierdut și unde anume?

Raportul post-mortem publicat pe forumul de guvernanță Moonwell arată o datorie nerecuperabilă totală de 1.779.044,83 dolari, repartizată pe unsprezece active. Cea mai mare parte, 1.033.393 de dolari, a fost denominată în cbETH.

Pe locul doi, WETH cu 478.998 de dolari, urmat de USDC cu 232.584 de dolari. Restul sumelor, repartizate pe EURC, cbBTC, cbXRP, DAI, USDS, AERO, MORPHO și wstETH, au fost considerabil mai mici, de la câteva sute la câteva mii de dolari fiecare, dar prezența lor spune ceva despre amploarea pagubelor.

Împrumutătorii aveau portofolii mixte. Când valoarea raportată a cbETH s-a prăbușit, toate pozițiile care includeau acest token ca parte a colateralului au fost trase sub apă, generând datorii reziduale în orice activ împrumutaseră utilizatorii respectivi. De aici și dispersia pe atâtea monede diferite.

Inteligența artificială la ghișeul acuzaților

Ceea ce a transformat incidentul dintr-un raport tehnic sec într-o dezbatere globală a fost descoperirea că, în istoricul de contribuții al codului afectat, apărea menționat Claude Opus 4.6 drept co-autor. Capturile de ecran au circulat pe rețelele sociale cu o viteză care rivaliza cu cea a boților de lichidare, iar termenul „vibe coding” a scăpat rapid din bula cercetătorilor de securitate și a ajuns în trending.

Krum Pashov, auditor de securitate respectat în spațiul DeFi, a fost printre primii care au semnalat public co-autorarea cu inteligență artificială. Ce a făcut concret modelul AI în codul respectiv? A corectat validarea int256, a adăugat un bloc try/catch pentru a evita redeployarea când două configurații folosesc același oracol, a eliminat un import neutilizat și a înlocuit o verificare cu una care detecta corect prețurile negative ale oracolului.

Modificări solide, defensive, exact ce ai vrea să vezi într-un deployment de producție.

Ce nu a făcut, însă, modelul AI a fost să semnaleze tocmai eroarea critică. Fluxul de preț pentru cbETH extrăgea doar raportul cbETH/ETH și îl trata ca valoare în dolari, fără a-l multiplica cu ETH/USD. Nici Claude, nici GitHub Copilot (care și el a generat comentarii pe codul modificat), nici reviewerii umani nu au prins problema. La fel nici cei 99,1% dintre votanții de guvernanță care au aprobat propunerea.

Patrick Collins, de la firma de securitate Cyfrin, a sintetizat dilema destul de direct: AI-ul e bun rău la a te convinge că un cod e corect, a spus el pe scurt. E ca un absolvent de facultate foarte inteligent și rapid care, cu toate astea, rămâne capabil de greșeli care costă milioane.

Observația pe care Collins și alții au făcut-o e validă: un dezvoltator uman care se uită la o configurație de oracol cbETH ce returnează 1,12 dolari ar putea simți instinctiv că ceva nu bate. E un soi de fler profesional, o nepotrivire între ceea ce vezi pe ecran și ceea ce știi din piață. Inteligența artificială nu are accesul ăsta la instinct. Produce un răspuns plauzibil și trece mai departe.

Mikko Ohtamaa, dezvoltator cu experiență, a testat ipoteza după incident. A luat același pull request și l-a dat direct modelului Claude cu un prompt precis: verifică ce adresă de oracol este incorectă și de ce. Modelul a identificat corect eroarea. Iar concluzia lui Ohtamaa a fost echilibrată: indiferent dacă un cod e scris de o inteligență artificială sau de un om, erori de genul ăsta se prind printr-o suită de teste de integrare.

În cazul de față, teste existau, dar nu exista niciun test specific pentru verificarea plauzibilității prețului. Nici în suita de teste, nici în producție. Și a adăugat că un dezvoltator uman care face deploy-ul ar fi trebuit să facă și verificări manuale, ca parte din procesul DAO, lucru care nici el nu s-a întâmplat.

Al treilea incident în mai puțin de cinci luni

Episodul din februarie nu a fost o premieră pentru Moonwell. A fost al treilea incident major legat de oracole în mai puțin de cinci luni, iar totalul datoriilor nerecuperabile din cele trei evenimente se apropie de 7,8 milioane de dolari.

Primul a venit pe 10 octombrie 2025, când o discrepanță în fluxurile de preț Chainlink pentru trei tokenuri volatile (AERO, VIRTUAL și MORPHO) a permis unui atacator să folosească flash loans pentru a drena protocolul. Datoria nerecuperabilă a fost de 1,7 milioane de dolari. Comunitatea a votat ulterior, cu majoritate covârșitoare, utilizarea rezervelor protocolului pentru acoperirea pierderilor.

Al doilea, pe 4 noiembrie 2025: oracolul pentru wrsETH a raportat o valoare absurdă, și anume 1 wrsETH egal cu 1.649.934 ETH. Cauza a fost exploatarea platformei Balancer din ziua precedentă, care destabilizase lichiditatea rsETH. Același atacator din octombrie a profitat din nou, iar datoria a urcat la 3,7 milioane de dolari.

Apoi a venit 15 februarie 2026, cu eroarea cbETH descrisă mai sus. Aceeași clasă de problemă, o multiplicare lipsă, un preț care ar fi picat orice verificare elementară. Un utilizator cu pseudonimul yieldsandmore a compilat public cronologia completă a incidentelor Moonwell și a tras o concluzie fără echivoc: nu îl mai folosiți.

Tiparul e aproape previzibil în repetitivitatea sa. Ai încredere în fluxul de preț, omiti verificarea de bun simț, apoi privești cum boții se servesc singuri. Aceeași rețetă, de trei ori, cu victime noi de fiecare dată.

Când mecanismele de siguranță devin parte a problemei

Incidentul Moonwell atinge una dintre tensiunile esențiale ale finanțelor descentralizate: echilibrul între securitatea pe care o oferă decentralizarea și capacitatea de a reacționa rapid la urgențe. Perioadele de blocare de cinci zile și procesele de vot există tocmai ca să prevină acțiuni abuzive sau pripite. Numai că, atunci când situația cere o intervenție imediată, regulile astea se întorc împotriva celor pe care ar trebui să-i protejeze.

Gândește-te la un spital unde orice decizie de tratament de urgență necesită aprobarea unui consiliu care se întrunește o dată pe săptămână. Procedura te ferește de decizii greșite, dar pacientul poate muri în așteptare. Moonwell se află cam în aceeași situație: are mecanisme de protecție care funcționează foarte bine în condiții obișnuite, dar care structural nu pot răspunde la crize care se consumă în secunde.

Precedentul din octombrie, când comunitatea a votat acoperirea pierderilor din rezervele protocolului, a creat așteptări. Pe forumul de guvernanță al incidentului din februarie, utilizatorii afectați invocă exact acea decizie, cerând același tratament. Rămâne de văzut dacă rezervele pot absorbi incidente repetate de această amploare fără să erodeze încrederea tuturor celorlalți depunători.

Întrebarea incomodă despre codul scris cu ajutor artificial

Dincolo de specificul tehnic al Moonwell, incidentul a scos la suprafață o discuție care fierbea de luni bune în industria DeFi: cât de prudent e să folosești cod generat sau co-scris de modele de inteligență artificială în sisteme care gestionează sume mari de bani?

Răspunsurile vin din ambele direcții și, ce e neplăcut, ambele au temei.

Pe de o parte, eroarea în sine nu e una sofisticată. Ingineri seniori configurează greșit fluxuri de preț. Auditorii ratează erori de formulă. Oamenii sar peste verificări de bun simț când sunt sub presiune. Fiecare dintre aceste eșecuri are o explicație perfect umană, fără vreo inteligență artificială în ecuație.

Pe de altă parte, AI-ul schimbă ceva în dinamica muncii. E foarte bun la a face codul greșit să pară corect. Generează comentarii clare, compilează fără probleme, gestionează cazuri limită cu o aparentă rigoare. Iar distanța dintre un cod care chiar e corect și un cod care doar se citește ca fiind corect poate fi de 1,78 milioane de dolari, cum am văzut.

Un programator cu experiență care vede o valoare de 1,12 dolari pentru un activ pe care îl știe la 2.200 ar putea ridica o sprânceană. AI-ul nu ridică sprâncene. Produce un răspuns plauzibil și merge mai departe.

Pashov, care a declanșat conversația, a oferit și cadrul cel mai onest: omul din spatele AI-ului decide și verifică codul, eventual cu un auditor de securitate. E trist să mai vezi un exploit, dar te pune pe gânduri legat de vibe coding. Cos, de la SlowMist, a fost mai tăios, numind-o o greșeală de nivel foarte scăzut și adăugând ironic că punctul culminant al vulnerabilității e faptul că cel mai nou model Claude apare drept co-autor.

Concluzia pe care mai mulți cercetători de securitate au tras-o e că codul generat de AI ar trebui tratat ca un input nevalidat. La fel cum datele venite de la un utilizator necunoscut într-o aplicație web trec prin filtre și validări, codul produs de un model lingvistic trebuie supus aceluiași nivel de scrutin, teste și audit ca orice altă contribuție.

Faptul că arată profesional și compilează fără erori nu spune nimic despre corectitudinea logică a ceea ce face.

Ce ar fi putut preveni dezastrul?

Raportul post-mortem și analizele independente converg spre câteva direcții care ar fi interceptat eroarea înainte să ajungă în producție.

Cea mai evidentă: un test de plauzibilitate a prețului. O verificare automată care compară prețul raportat de oracol cu un interval rezonabil, bazat pe prețuri istorice sau pe alte surse, ar fi oprit imediat procesul de deploy. Dacă oracolul raportează 1,12 dolari pentru un activ care se tranzacționa la 2.200 de dolari cu o oră înainte, orice sistem minimamente vigilent ar trebui să oprească totul și să semnaleze anomalia.

Apoi, un circuit breaker la nivel de protocol, similar celor folosite pe piețele financiare tradiționale, ar fi limitat dramatic daunele. Mecanismul e simplu în principiu: dacă un preț se mișcă cu mai mult de un anumit procent într-un interval scurt, operațiunile se suspendă automat.

O a treia posibilitate ar fi fost un mecanism de intervenție de urgență, un multisig controlat de un grup restrâns de actori de încredere care să poată opri temporar un oracol fără să aștepte cinci zile de vot. Un astfel de instrument introduce, desigur, riscuri proprii de centralizare, dar incidentele repetate ale Moonwell sugerează că lipsa totală a unei supape de presiune e la fel de periculoasă.

Nu în ultimul rând, testele de integrare ar fi fost decisive. Nu cele care verifică doar compilarea și logica individuală a funcțiilor, ci cele care testează comportamentul de ansamblu al sistemului cu date reale sau realiste. Dacă cineva ar fi rulat un test end-to-end cu prețurile de piață ale cbETH, discrepanța ar fi fost flagrantă.

Oracolele, veriga slabă a finanțelor descentralizate

Moonwell nu e singurul protocol care a avut de suferit din cauza oracolelor configurate prost. În decembrie 2025, Ribbon Finance a pierdut circa 2,7 milioane de dolari după o nepotrivire de zecimale într-un upgrade de oracol. O lună mai târziu, în ianuarie 2026, Makina Finance a fost exploatată prin manipularea oracolului cu un flash loan, atacatorul extrăgând aproximativ 4 milioane de dolari în ETH.

Oracolele sunt, prin natura lor, un punct de vulnerabilitate structural în arhitectura DeFi. Protocoalele descentralizate pornesc de la premisa că datele de intrare sunt corecte.

Contractele inteligente execută exact ce li se spune, fără discernământ, fără capacitatea de a pune sub semnul întrebării informația primită. Când un oracol raportează un preț greșit, contractul nu vede o eroare. Vede o oportunitate legitimă de lichidare. Face exact ceea ce a fost programat să facă, doar că informația pe care o primește e falsă.

Aici e și promisiunea, și talpa lui Ahile a finanțelor descentralizate. Elimini intermediarii umani, elimini și acel strat de judecată care ar putea spune „stai, prețul ăsta n-are nicio logică, să verificăm înainte să mergem mai departe”.

Ce urmează pentru Moonwell?

Moonwell se confruntă acum cu sarcina de a-și recâștiga credibilitatea. Trei incidente de aceeași natură în mai puțin de cinci luni, cu pierderi cumulate de aproape 8 milioane de dolari, formează un tipar pe care nicio comunicare de criză nu îl poate acoperi.

Utilizatorii afectați au cerut despăgubiri pe forumul de guvernanță, invocând precedentul din octombrie. Protocolul nu a oferit comentarii publice presei, iar un purtător de cuvânt a refuzat să discute cu jurnaliștii de la Decrypt.

Industria DeFi, la rândul ei, are de digerat o întrebare pe care incidentul Moonwell a făcut-o greu de ocolit. Dacă inteligența artificială scrie codul, omul îl aprobă, guvernanța votează pentru el și oracolul tot ajunge să funcționeze greșit, cine poartă responsabilitatea? Și ce se va schimba concret până data viitoare?

N-a existat niciun hack în sensul clasic. Niciun hacker. Niciun multisig de urgență de învinovățit.

Doar o înmulțire omisă, un model AI care n-a stat pe gânduri, un proces de guvernanță prea lent pentru viteza daunelor și un mecanism de blocare de cinci zile care a stat între eroare și posibilitatea de a o corecta. Sistemul a funcționat conform designului. Și tocmai asta e partea care te pune pe gânduri.

0 Shares
You May Also Like