XRP a semmiből: tízéves hibát javítottak az XRP Ledgerben
Tíz évig rejtőzhetett az XRP Ledger hibája
Az XRP Ledger fizetési rendszerében feltárt programhiba súlyos következményekkel járhatott volna: egy megfelelően összeállított tranzakció olyan XRP-egyenlegeket eredményezhetett, amelyek mögött nem állt tényleges befizetés. A rendszer így elméletileg jelentős mennyiségű új tokent írhatott volna jóvá a támadó által ellenőrzött számlákon.
A sérülékenységet Cayden Liao és a Veria AI tárta fel, majd szeptember 22-én jelentette a fejlesztőknek. A vizsgálat szerint a probléma eredete 2015-ig, a jelenlegi fizetési motor megírásáig nyúlhat vissza, vagyis a hibás működés több mint egy évtizeden át észrevétlen maradhatott.
A Ripple fejlesztői részlegének, a RippleX-nek a mérnökei egy elkülönített szerveren reprodukálták a támadást. A teszt azt is igazolta, hogy a fedezet nélkül létrejött XRP egy későbbi fizetésben felhasználható volt, tehát a sérülékenység valódi, elkölthető egyenleget eredményezett.
A 100 milliárdos XRP-kínálat volt a tét
Az XRP teljes, 100 milliárd tokenből álló induló készlete a hálózat 2012-es elindításakor létrejött. A protokoll rendeltetésszerű működése szerint ezen felül nem keletkezhet új XRP, ezért a feltárt hiba közvetlenül a kínálati korlátot védő szabályokat veszélyeztette.

Egy sikeres támadás következtében a jogosulatlanul létrehozott tokenek átutalhatók és kereskedhetők lehettek volna, akár kriptotőzsdékre is kerülhettek volna. Ez nemcsak technikai problémát jelentett volna: a kiszámítható tokenkínálatra építő befektetői és intézményi bizalmat is megrendíthette volna.
A lehetséges piaci következmények ugyanakkor nem azonosak egy megtörtént káreseménnyel. A RippleX közlése szerint nincs bizonyíték nyilvános hálózati kihasználásra, ezért az eset alapján nem állítható, hogy ténylegesen jogosulatlan XRP került volna forgalomba.
Egyetlen fizetés félrevezethette a rendszert
A támadási lehetőség az XRP Ledger beépített decentralizált tőzsdéjéhez kapcsolódott, ahol a felhasználók különböző tokenek cseréjére adhatnak ajánlatokat. A fizetési rendszer egyetlen tranzakció teljesítéséhez több ilyen ajánlatot is felhasználhat, miközben összesíti a fizetendő összegeket.
A kutatók által bemutatott forgatókönyvben a támadó több száz, saját ellenőrzése alatt álló számlát használhatott volna. Ezek mindegyike nagyon kis mennyiségű tokent kínált volna rendkívül nagy XRP-összegért, majd egy másik számláról indított fizetés egyszerre teljesítette volna az ajánlatokat.
A probléma az összeadás során jelentkezett: a teljes fizetendő XRP-mennyiség meghaladhatta a számításhoz használt egész szám tárolási tartományát. Az úgynevezett egészszám-túlcsordulás miatt az összesített érték egy jóval kisebb számra fordulhatott át, amelyet a rendszer tévesen a tényleges fizetési kötelezettségként kezelt.
Az eladói számlák eközben megkapták volna a nekik járó teljes XRP-összeget, a vásárlói számláról viszont csak a hibásan kiszámolt, csekély összeget vonták volna le. A kettő különbsége olyan új XRP-ként jelent volna meg, amelynek nem lett volna szabad léteznie.
A biztonsági ellenőrzések is elnézhették a hibát
Az XRP Ledger minden tranzakció után ellenőrzi, hogy a művelet nem hozott-e létre új XRP-t. Ez a védelmi mechanizmus azonban ugyanahhoz a túlcsordulásra érzékeny összesítési módszerhez kapcsolódott, így a hibás számítás az ellenőrzést is félrevezethette.
Egy másik korlátozás azt figyeli, hogy egyetlen számla egyenlege se haladja meg a teljes XRP-kínálatot. A sok számlára szétosztott jóváírások miatt azonban az egyes egyenlegek a megengedett határon belül maradhattak volna, miközben összességében jogosulatlanul nőtt volna a tokenmennyiség.
A támadás előkészítéséhez a beszámoló szerint mindössze néhány száz XRP kellett volna a számlákhoz és ajánlatokhoz kapcsolódó tartalékok biztosítására, továbbá tranzakciós díjakat kellett volna fizetni. A tartalékok jelentős része később felszabadítható lett volna, így a potenciális visszaéléshez nem kellett volna hatalmas induló vagyon.
Sürgősségi frissítés zárta le a sérülékenységet
A javítás szeptember 25-én jelent meg az XRP Ledger szerverprogramjának xrpld 3.4.1-es verziójában, a részletes biztonsági jelentést pedig október 9-én tették közzé. A fejlesztők a kiadáskor még nem hozták nyilvánosságra a sérülékenység teljes működését.
A javított szoftver már ellenőrzi az összegek túlcsordulását, és megerősítették az új XRP létrehozását figyelő biztonsági mechanizmust is. A probléma súlyossága miatt ez a javítás közvetlenül a frissítéskor lépett életbe, a szokásos protokollmódosítási szavazási folyamat nélkül; a hivatalos jelentés szerint a kiadás napján az alapértelmezett megbízható validátorlistán szereplő validátorok több mint 80 százaléka már frissített.
Az eset jól mutatja, hogy egy régóta működő blokkláncban is fennmaradhatnak súlyos, nehezen felismerhető programhibák. Az XRP Ledger számára a legfontosabb eredmény az, hogy a kutatók feltárták a problémát, a fejlesztők pedig javították azt, miközben nem találtak bizonyítékot nyilvános hálózaton végrehajtott visszaélésre.