Mitä tapahtuu, kun Lightning Network -reitityssolmuun syötetään roskatapahtumia, jotka eivät koskaan ratkea? Lyhyesti sanottuna se aiheuttaa paljon surua solmujen reitittämiselle. Aikaisemmin sujuva, globaali maksujärjestelmä voidaan lukita taitava käsikirjoittaja.

Työskentelemällä pienessä reitityssolmujen ryhmässä, suoritimme onnistuneesti hyökkäystestin todellisilla varoilla ja osoitimmesuru”Kuvaama hyökkäys Joost Jager. Hyökkäystä kutsutaan suruhyökkäykseksi, koska se ei ole varkauksia, mutta se aiheuttaa uhrin salaman varojen jäädyttämisen: suuri järkytys. Löysimme, että suru on vakava uhka suurille “wumbo” -kanaville, jotka odottavat ansaitsevansa tuoton bitcoinillaan, vain varojensa jäädyttämisen ajaksi..

Tämä on enimmäkseen suruhyökkäystä: ei varojen menetystä, mutta uhri voidaan joutua maksamaan kalliista kanavavoimien sulkemisesta. Tämä on mainnet Lightningin tunnettu haavoittuvuus, ja se on ymmärrettävä ja priorisoitava, etenkin Bitcoinin Lightning Networkin tässä varhaisessa markkinavaiheessa.

Kiitos Clark Burkhardtille ja Phillip Sheppardille halukkuudestaan ​​osallistua tähän testiin ja Jagerille hänen väsymättömästä työstään kiinnittää huomiota ja prioriteettia tähän haavoittuvuuteen. Jager näytti hyökkääjää mielenosoituksessamme, kun taas Burkhardt ja Sheppard liittyivät minuun liitettyinä uhrin reitityssolmuina.

Kuinka hyökkäys toimii

Hyökkääjä kyllästää yhden (tai useamman) kanavan Hashed Time Locked Contracts (HTLC) -muodolla, jotka eivät ratkea lopullisena maksuna. Nämä ovat erityinen HTLC-rotu, joka tunnetaan nimellä HODL-laskut. Vain 483 näistä ratkaisemattomista HTLC: stä vaaditaan kanavan ylittämiseksi suuntaan. Kun nämä HTLC: t ovat kanavassa, kaikki tapahtumat, jotka käyttävät samaa kanavasuuntaa, ovat mahdottomia, mukaan lukien tapahtuma kyseisen kanavan yhteistyöhön sulkemiseksi.

Teoriassa hyökkääjä voisi ottaa yhteyttä uhriin (ehkä avaimenperäviestillä tai ”sipulimäessä”) ja vaatia lunnaita maksamaan hyökkäys. Kun lunnaat on maksettu, hyökkääjä voi poistaa ratkaisemattomat maksut ja lopettaa hyökkäyksen. Hyökkäystä voidaan jatkaa loputtomiin, mikä pysäyttää kaiken reitityksen ja maksutoiminnan kyseisellä kanavalla. Tämä jäädyttää salaman kanavan varat.

Molemmat maksusuunnat voidaan pysäyttää kanavassa käyttämällä 483 HTLC: tä kumpaankin suuntaan, sekä saapuvia että lähteviä.

Thunderhub-näkymä tasapainoisesta kanavastani Burkhardtille hyökkäyksen alla. Kanava näyttää olevan “Ei aktiivinen”, ikään kuin Burkhardt olisi offline-tilassa, mutta hän ei ollut. Sinisenä oleva määrä on paikallinen saldo satsissa, vihreän määrä on Burkhardtin omistama satsien etätase. Lähde: Thunderhub.

Miksi hyökkääjä tekisi jotain tällaista?

Ensimmäinen mieleen tuleva motiivi on vaatia lunnaita. Tämä hyökkäys aiheuttaa tuskaa uhrille ja lunnaiden maksaminen voi olla houkutteleva uhrille, vaikka ei olisikaan varmoja, että hyökkäys loppuisi. Yhteys uhriin voi olla riskialtista hyökkääjälle, mutta lunnaiden maksu ei välttämättä ole ainoa syy, miksi joku tekisi tämän.

Toissijainen kannustin surun hyökkäyksen aloittamiseen olisi kilpailun häiritseminen. Kilpailijan reitin häiritseminen voi lisätä kysyntää hyökkääjän omistamalle reitille.

Vertailukohteena on, että Lightning Labsin Loop-solmulla on jatkuvasti likviditeetin kysyntää, josta se maksaa joskus 2500 miljoonasosaa maksusta (ppm) (0,25 prosenttia). Kokemukseni mukaan ne kuluttavat normaalisti 16 miljoonan satan suuruisen likviditeetin noin kahdessa viikossa (5,2 prosentin vuosiprosentti), mutta näin on kilpailun kanssa.

Jos hyökkääjä voi poistaa minkä tahansa kilpailevan reitin alhaisemmilla palkkioilla, Loop saattaa olla halukas maksamaan korkeamman palkkion (koska likviditeetin tarjonta on nyt vähentynyt). Oletetaan, että Loop maksaisi 3000 ppm (0,3 prosenttia) ja käyttäisi likviditeettiä nopeammin, koska mikään muu kanava ei toimi. Loop saattaa käyttää kyseistä likviditeettiä puolessa ajassa, esimerkiksi viikossa. Hyökkääjä yli kaksinkertaisti tavallisen tuottonsa 15,6 prosentin todelliseen vuosikorkoon tässä esimerkissä. Ainoa hinta hyökkääjälle on käsikirjoituksen suorittaminen olemassa olevalla kanavalla ja psykologiset kustannukset, kun tehdään jotain moraalitonta / vahingollista salamaverkostolle. Yhdellä hyökkääjäkanavalla haitallinen näyttelijä voisi häiritä noin yhdeksää kanavaa (ks Jagerin twiitit tästä).

Mikä tämän hyökkäyskokemuksen uhri olisi?

Tämän hyökkäyksen uhri ei todellakaan tietäisi, että tämä hyökkäys tapahtui, ellei heillä olisi asetettu erityisiä hälytyksiä odottaville HTLC: lle. Thunderhub-käyttäjille (erittäin suositeltava työkalu) aloitusnäyttö näyttää kaavion odottavista HTLC: stä sekä varoituksen, jonka mukaan kanavilla voi olla vain 483 odottavaa HTLC: tä.

Lähde: Thunderhub

Käytännössä solmustani tuli nopeasti epäluotettava ja kokenut useita sovellusten kaatumisia, mukaan lukien Thunderhub, joka oli ainoa sovellus, joka ilmoitti minulle ongelmasta. Sitten “Balance of Satoshis” -sähke botin ansiosta sain kanavan sulkemisilmoituksen. Hyökkäyksen kohteena oleva kanava sulki itsensä! Sen ei pitänyt olla osa kokeilua. (Lisätietoja teknisestä tiedosta tahattomasta voiman sulkeutumisesta, katso jäljempänä lisätietoa voiman sulkemisesta.)

Testimaksu kanavaa käyttäen Burkhardtin (salmiak) kanssa epäonnistui hyökkäyksen takia. Tämä varoitus kertoo, että Burkhardtin solmu on offline-tilassa, vaikka se oli verkossa. Lähde: Thunderhub.

Mitä uhri voi tehdä lopettaakseen murhehyökkäyksen?

Kun hyökkäys alkaa, uhri ei käytännössä voi tehdä mitään sen pysäyttämiseksi. Ainoat vaihtoehdot käynnissä olevan hyökkäyksen pysäyttämiseksi olisivat väkisin suljettu hyökkäävä kanava, mikä tarkoittaa, että terroristit voittavat.

Loukkaantumisen lisäämiseksi kanavan pakollinen sulkeminen työntää ratkaisemattomat maksut ketjun tapahtumadataan ja laukaisee toissijaiset ketjutapahtumat voiman sulkijan aloittajalle. 50 sats / vbyte ja 483 ketjutapahtumat ovat helposti miljoonan satun hintalappu, joka pakottaa sulkemaan yhden hyökkäyksessä olevan kanavan (368 dollarin kanavan sulkemismaksu tämän päivän hinnoilla). Useat ketjutapahtumat tapahtuvat vain, jos tuotos ylittää vähimmäismaksun “pöly” -rajan. (Katso tämä esimerkki testiverkossa.)

Salaman kanavan aloittaja maksaa sulkemismaksun.

Toinen syy, miksi et ehkä halua 483 (ei pölyä) HTC-levyjä, on se, että mahdollinen pakotettu sulkeutumistapahtuma 50 sat / vB näyttää tältä: https://t.co/z6mAGZxvrC.

Päätöspalkkio kallistuu yli miljoonalla sat.

– Joost Jager (@joostjgr) 28. syyskuuta 2020

Kuinka estää murhehyökkäys

Jager on työskennellyt konseptin varmistamiseksi, joka auttaa hyökkääjiä eristämään ja taistelemaan. Hän kutsuu ohjelmaaanKatkaisija.”Circuitbreaker toimii verkkotasolla, mikä valitettavasti tarkoittaa, että kaikkien on osallistuttava siihen, että se on tehokas.

Tämän lisäksi tämä asia edellyttää priorisointia ja omistautuneiden insinöörien / kehittäjien huomiota parempien ratkaisujen löytämiseksi. Bitcoin Optech -uutiskirjeessä on myös käynyt hyviä keskusteluja protokollan muokkaamisesta (numero # 122 tai # 126).

Tämä hyökkäys voidaan suorittaa tänään. On ihme, että sitä ei ole jo käytetty vahingollisesti. Se heijastaa kannustimia Lightningia nykyään käyttäville, jotta siitä voi tulla avoin, universaali maksuverkosto. Jaa tämä viesti mielestänne kannustamaan ja innoittamaan enemmän työtä ongelman korjaamiseksi ennen kuin se aiheuttaa todellista haittaa.

Teknisiä lisätietoja tahattomasta joukkojen sulkemisesta

Tässä ovat lokit solmustani, joka käyttää LND 0.11 -ohjelmaa tällä hetkellä, kun yllä mainittu tahaton voiman sulkeutuminen tapahtui:

11.26.2020 21: 24: 47,374 [ERR] HSWC: ChannelLink (657759: 561: 0): ei ole linkki: ChannelPoint (c37bec006b18df172698a84739ca47128935e0a8666fecd1a843e49b01db207c: 0): vastaanotetaan virheen peer: chan_id = 7c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc3, err = hylätty sitoutuminen: commit_height = 455, invalid_commit_sig = 3044022076fd65191eb6305b723fa6012be378413b6326e2786c38db58b4c02e1f3999d202207605ca31de8b4c5b1d9cd20dc1581dfa2383e0b4e06c8ad4f718ab5c434d8cf5, commit_tx = 02000000017c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc300000000008a792e8002210d0000000000002200201031cf10a1efef261edd3d0a1a6a953b27bc25bd7150bb2b07afdc69805e02157213000000000000160014de650929042bef58b71783ae1a44834a902a8f2d542ca720, sig_hash = 4e0fb804c74376020e4c44a60969b9206eb0aaa9a89b76017d60f23ad5cf63e5 kanssa virhe: kauko-virhe

Lokit osoittavat “invalid_commit_sig”, joka on tunnettu ongelma LND: ssä. Oletettavasti tämä voi tapahtua yhteyden muodostamisen yhteydessä, eikä se ole suoraa seurausta kanavan häirinnästä. Odottavien HTLC-levyjen määrä tekee valitettavasti sen todennäköisemmäksi. Jager auttoi selittämään prosessia kanavien häirinnänä -> loputon maksusilmukka (vika) -> solmu alas -> muodosta yhteys uudelleen -> virheellinen sitoutumissignaali (vika) -> kanavan voima sulkeutuu.

”Loputon” silmukavirhe on tunnettu virhe, joka tapahtuu, kun HTLC-raja saavutetaan ja lähetetään ylimääräinen HTLC. Maksamisen epäonnistumisen sijaan LND jatkaa maksamista silmukassa. Voit auttaa tämän virheen löytämisessä LND-numero # 4656.