LDK pakartotinio prisijungimo trūkumas kelia pavojų nepataisytoms Bitcoin programėlėms
„Lightning Development Kit“ (LDK), biblioteka, skirta „Bitcoin Lightning“ piniginėms ir mokėjimo programoms kurti, ištaisė trūkumą, dėl kurio kenkėjiškas kanalas gali pavogti persiųsto mokėjimo vertę meluodamas po prisijungimo. Paveikti programų kūrėjai turi įtraukti pataisą į diegiamą programinę įrangą.
Spalio 1 d. v0.2.7 ir v0.1.13 saugos leidimai pašalina LDK pakartotinio prisijungimo pažeidžiamumą atitinkamai 0.2 ir 0.1 šakose. „Bitcoin Optech“ pataisymus aprašė savo spalio 9 d. informaciniame biuletenyje.
Kaip LDK pakartotinio prisijungimo trūkumas gali kainuoti Bitcoin
Ataka prasideda kanalo partneriui, kuris patvirtina atnaujinimą, tada vėl prisijungia ir apsimeta, kad jo niekada negavo. Prieš pataisant dėl šio klaidingo teiginio LDK gali pasirašyti prieštaraujančią įsipareigojimo operaciją.
Įsipareigojimo sandoris reiškia sutartą kanalo būseną ir gali būti naudojamas jai atsiskaityti Bitcoin blokų grandinėje. Pagal PR 5057 aprašytą scenarijų naujai pasirašyta operacija nebuvo įrašyta LDK kanalo monitoriuje, o komponentas seka kanalo paraiškas grandinėje.
Dėl šios spragos persiųstas mokėjimas gali virsti nuostoliais. Piktybinis siuntėjas gali patvirtinti operaciją grandinėje ir leisti atsiskaityti su kitu gavėju. Tada jis galėtų susigrąžinti gaunamo mokėjimo sutartį, kai pasibaigė jos galiojimo laikas, net jei persiuntimo mazgas žinojo paslaptį, kuri paprastai naudojama mokėjimo reikalavimui.
Persiuntimo paraiška būtų sumokėta toliau, neatgavus atitinkamų gaunamų lėšų. Pataisa leidžia pakartotinai perduoti tik tuo metu, kai partnerio patvirtinimas lieka nepakitęs, ir priverstinai uždaro kanalą, kai partneris teigia, kad jau patvirtintas naujinimas buvo praleistas.
Kartu su LDK pakartotinio prisijungimo pataisymu, 0.2.7 versija sprendžia kitą vagystės kelią, apimantį LSPS2 mokėjimus laiku, kai likvidumo paslauga atidaro kanalą kaip mokėjimo tvarkymo dalį.
Sulaikytas mokėjimas gali klaidingai parodyti jo sumą, todėl paslauga gali atidaryti kanalą ir persiųsti daugiau Bitcoin nei pateiktas gaunamas mokėjimas. Paslauga skirtumą padengtų iš savo lėšų. PR 5042 nurodytas sumos čekis.
Šis poveikis yra susijęs su LSPS2 paslaugų srautu. V0.1.13 pastabose pateikiamas bendrinamas pakartotinio prisijungimo pataisymas, nenurodant LSPS2 pataisos.
Šie defektai skiriasi nuo sujungimo mokesčio nukreipimo ir išsaugotos būsenos įkėlimo klaidų, aprašytų CryptoSlate rugsėjo 13 d. LDK v0.2.6 ataskaitoje. „Core Lightning“ yra atskiras diegimas, kaip aprašyta toliau pateiktame atnaujinime.
LDK architektūros dokumentacijoje paaiškinama, kad SDK yra kompiliuojamas ir vykdomas programose. Kūrėjai turi įtraukti atitinkamą pataisytos bibliotekos kodą į įdiegtą programinę įrangą. LSPS2 integracijos atveju PR 5042 įsipareigojimo paaiškinimas pažymi, kad mokėjimo sutartyse, esančiose eilėje pagal ankstesnę versiją, išlaikomos nepatvirtintos sumos; komandos turi atsiskaityti už tas laukiančias sutartis ir atnaujinti biblioteką.
