Hvad sker der, når din Lightning Network-routingknude fodres med affaldstransaktioner, der aldrig løser sig? Kort sagt, det forårsager en stor sorg for routing noder. Det, der engang var et glat, globalt betalingssystem, kan låses op med triviel indsats fra en klog manuskriptforfatter.
Arbejdet i et lille team af routingknudepunkter kørte vi en test af angrebet med rigtige midler og demonstrerede “sorg”Angreb beskrevet af Joost Jager. Angrebet kaldes et sorgangreb, da det ikke er tyveri af midler, men det får et offers Lynfonde til at blive frosset: en stor forstyrrelse. Hvad vi fandt ud af, at sorg er en alvorlig trussel mod store “wumbo” -kanaler, der forventer at tjene et udbytte på deres bitcoin, kun for at få deres midler frosset i en periode.
Dette er for det meste et sorgangreb: intet tab af midler, men offeret kan blive tvunget til at betale for en dyre kanalstyrke tæt. Dette er en kendt sårbarhed på mainnet Lightning, og det skal forstås og prioriteres, især på dette tidlige markedstrin i Bitcoins Lightning Network.
Tak til Clark Burkhardt og Phillip Sheppard for deres vilje til at deltage i denne test og til Jager for hans utrættelige arbejde for at bringe opmærksomhed og prioritet til denne sårbarhed. Jager spillede rollen som angriberen til vores demonstration, mens Burkhardt og Sheppard sluttede sig til mig som tilsluttede offerrute-noder.
Sådan fungerer angrebet
Angriberen mætter en (eller flere) kanaler med Hashed Time Locked Contracts (HTLC’er), der ikke løses som en endelig betaling. Disse er en særlig race af HTLC’er kendt som HODL-fakturaer. Kun 483 af disse uløste HTLC’er er nødvendige for at overvælde en kanal pr. Retning. Når disse HTLC’er er i kanalen, er eventuelle transaktioner, der bruger den samme kanalretning, umulige, herunder en transaktion til kooperativt at lukke den kanal.
I teorien kunne en angriber kontakte offeret (måske via en nøglesendemeddelelse eller i en “løgblob”) og kræve, at der blev betalt en løsesum for at standse angrebet. Når løsesummen er betalt, kan angriberen fjerne de uløste betalinger og afslutte angrebet. Angrebet kan opretholdes på ubestemt tid og standse al routing og betalingsaktivitet i den kanal. Dette fryser midlerne i Lightning-kanalen.
Begge betalingsretninger kan stoppes i en kanal ved hjælp af 483 HTLC’er i hver retning, både indgående og udgående.
Thunderhub-udsigt over min afbalancerede kanal til Burkhardt under angreb. Kanalen vises som “Ikke aktiv”, som om Burkhardt var offline, men det var han ikke. Mængden i blåt er den lokale saldo i sats, mængden i green er den eksterne balance i sats, der ejes af Burkhardt. Kilde: Thunderhub.
Hvorfor ville en angriber gøre noget som dette??
Det første motiv, der kommer til at tænke på, er at kræve en løsesum. Dette angreb forårsager smerte for offeret, og det kan være attraktivt for et offer at betale en løsesum, selv uden sikkerhed for, at angrebet ville stoppe. At kontakte offeret kan være risikabelt for en angriber, men en løsesum er muligvis ikke den eneste grund til, at nogen ville gøre dette.
Et sekundært incitament til at starte et sorgangreb ville være at forstyrre rutekonkurrencen. At blokere en konkurrents rute kan skabe større efterspørgsel efter en rute, der ejes af en angriber.
Som et benchmark skal du overveje, at Lightning Labs ‘Loop-node har en løbende efterspørgsel efter likviditet, som den undertiden betaler 2.500 dele pr. Million af gebyrsatsen for betaling (ppm) (0,25 procent). Efter min erfaring ville de normalt udtømme 16 millioner sats likviditet på cirka to uger (5,2 procent årlig procentsats), men det er med den nuværende konkurrence.
Hvis en hacker kunne deaktivere enhver konkurrerende rute med lavere gebyrsatser, kan Loop være villig til at betale en højere gebyrsats (da levering af likviditet nu er reduceret). Lad os sige, at Loop ville betale 3.000 ppm (0,3 procent) samt bruge denne likviditet hurtigere, da ingen andre kanaler fungerer. Loop bruger muligvis denne likviditet på halve tiden, siger en uge. Angriberen ville mere end fordoble deres sædvanlige udbytte til 15,6 procent i april i dette eksempel. De eneste omkostninger for angriberen er omkostningerne ved at køre et script på en eksisterende kanal og de psykologiske omkostninger ved at gøre noget umoralsk / skadeligt for Lightning Network. Med en enkelt angrebskanal kunne en ondsindet skuespiller jamme omkring ni kanaler (se Jager’s tweets om dette).
Hvad ville ofret for dette angreb opleve?
Offeret for dette angreb ville ikke rigtig vide, at dette angreb fandt sted, medmindre de havde indstillet nogle specielle alarmer til afventende HTLC’er. For Thunderhub-brugere (et stærkt anbefalet værktøj) viser startskærmen et diagram over afventende HTLC’er samt en advarsel om, at kanaler kun kan rumme 483 afventende HTLC’er.
Kilde: Thunderhub
I praksis blev min node hurtigt upålidelig og oplevede flere appnedbrud, herunder Thunderhub, som var den eneste app, der underrettede mig om problemet. Takket være min “Balance of Satoshis” Telegram-bot fik jeg en meddelelse om lukning af en kanal. Kanalen under angreb lukkede sig selv! Det skulle ikke være en del af eksperimentet. (For yderligere tekniske oplysninger om den ufrivillige kraftlukning, se nedenfor for yderligere kraftlukningsdata.)
En testbetaling ved hjælp af kanalen med Burkhardt (salmiak) mislykkedes på grund af angrebet. Denne advarsel rapporterer, at Burkhardts knude er offline, selvom den var online. Kilde: Thunderhub.
Hvad kan ofret gøre for at stoppe et sorgangreb?
Når et angreb starter, kan et offer i det væsentlige ikke gøre noget for at stoppe det. De eneste tilgængelige alternativer til at standse et igangværende angreb ville være at tvinge lukningen af den kanal, der blev angrebet, hvilket betyder, at terroristerne vinder.
For at tilføje fornærmelse mod skade vil tvangslukning af kanalen skubbe de uløste betalinger til transaktionsdataene på kæden, hvilket udløser sekundære on-chain-transaktioner for initiativtageren af styrken. Ved 50 sats / vbyte og 483 on-chain-transaktioner er det let en 1 million sat pris for at tvinge lukning af en enkelt kanal under angreb (et kanalgebyr på $ 368 til dagens priser). Flere on-chain-transaktioner finder kun sted, hvis output er over minimumsstøvgrænsen for “støv”. (Se dette eksempel på testnet.)
Initiativtageren til en lynkanal betaler det lukkende gebyr.
En anden grund til, at du måske ikke vil have 483 (ikke-støv) htlcs, er at en potentiel tvangslukningstransaktion ved 50 sat / vB ser sådan ud: https://t.co/z6mAGZxvrC.
Afslutningsgebyret bliver dyrt med over 1 million lør.
– Joost Jager (@joostjgr) 28. september 2020
Sådan forhindres et sorgangreb
Jager har arbejdet på et proof-of-concept-program for at hjælpe med at isolere og bekæmpe angribere. Han kalder sit program “Afbryder.”Circuitbreaker arbejder på netværksniveau, hvilket desværre betyder, at alle skal deltage for at det skal være effektivt.
Ud over dette har dette spørgsmål behov for prioritering og opmærksomhed fra dedikerede ingeniører / udviklere for at finde bedre løsninger. Der har også været nogle gode diskussioner om ændring af protokollen i Bitcoin Optech-nyhedsbrevet (nummer # 122 eller # 126).
Dette angreb kan udføres i dag. Det er et mirakel, at det ikke allerede er blevet brugt skadeligt. Det afspejler incitamenterne for dem, der bruger Lightning i dag, så det kan blive et åbent, universelt betalingsnetværk. Del venligst dette indlæg, som du finder passende for at opmuntre og inspirere mere arbejde til at løse dette problem, før det forårsager reel skade.
Yderligere tekniske oplysninger om den ufrivillige tvangslukning
Her er logfilerne fra min node, der kører LND 0.11 i det øjeblik, at den ovennævnte ufrivillige kraft-lukning opstod:
2020/11/26 21: 24: 47,374 [ERR] HSWC: ChannelLink (657.759: 561: 0): svigtende link: ChannelPoint (c37bec006b18df172698a84739ca47128935e0a8666fecd1a843e49b01db207c: 0): modtaget error fra peer: chan_id = 7c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc3, err = forkastet engagement: commit_height = 455, invalid_commit_sig = 3044022076fd65191eb6305b723fa6012be378413b6326e2786c38db58b4c02e1f3999d202207605ca31de8b4c5b1d9cd20dc1581dfa2383e0b4e06c8ad4f718ab5c434d8cf5, commit_tx = 02000000017c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc300000000008a792e8002210d0000000000002200201031cf10a1efef261edd3d0a1a6a953b27bc25bd7150bb2b07afdc69805e02157213000000000000160014de650929042bef58b71783ae1a44834a902a8f2d542ca720, sig_hash = 4e0fb804c74376020e4c44a60969b9206eb0aaa9a89b76017d60f23ad5cf63e5 med fejl: remote error
Logfilerne viser en “ugyldig_forbindelse_sig”, som er et kendt problem i LND. Formentlig kan dette ske ved tilslutning igen og er ikke et direkte resultat af kanalstop. Mængden af ventende HTLC’er gør det desværre mere sandsynligt, at det sker. Jager hjalp med at forklare processen som kanalstop -> endeløs betalingssløjfe (bug) -> node nede -> genoprette forbindelse -> ugyldig commit sig (bug) -> kanal kraft-tæt.
Den “endeløse” sløjfe-fejl er en kendt fejl, der opstår, når HTLC-grænsen er nået, og en yderligere HTLC sendes. I stedet for at ende i en betalingsfejl, vil LND fortsætte med at forsøge betalingen i en løkke. For at hjælpe med denne fejl, se LND-nummer # 4656.