I över ett år har angripare haft förmågan att krascha Bitcoin Obegränsad och Bitcoin Classic knutpunkter. Igår gjorde faktiskt någon det. Enligt webbplatser som Myntdans, antalet Bitcoin Unlimited-noder minskade kraftigt från nästan 800 till mindre än 250 på några timmar. Bitcoin Classic slogs strax efter.
En dag tidigare hade säkerhetsforskaren som fann sårbarheten nått ut till Bitcoin Magazine.
“Jag är ganska bredvid mig själv hur ett projekt som syftar till att driva ett nätverk på 20 miljarder dollar kan göra nybörjarfel så här.”
Sårbarheterna
Bitcoin Unlimited och Bitcoin Classic är gafflar av Bitcoin Core som avser att öka Bitcoins begränsning av blockstorlek. Båda lanserades 2015 och har underhållits av sina egna utvecklingsteam sedan. Medan Bitcoin Classic var ett relativt populärt alternativ till Bitcoin Core förra året, har Bitcoin Unlimited fått grepp på senare tid. Världens största gruvpool – AntPool – meddelat det skulle byta till Bitcoin Unlimited, liksom flera mindre pooler.
Men inte alla tror att det är en bra idé.
“Jag är ganska bestört över den dåliga nivån på kodkvaliteten i Bitcoin Unlimited och jag misstänker att det [finns] en rad andra problem”, sa en säkerhetsforskare att hon bara identifierade sig som “Charlotte Gardner” Bitcoin Magazine på måndag.
När Gardner kommunicerade via e-post sa hon att hon granskade programvaran för eget bruk, men kom snabbt till slutsatsen att det är mycket osäkert: “Det som oroar mig är att den här programvaran nu används av en stor del av Bitcoin-gruvekosystemet.”
Gardner avslöjade att hon hade skickat in två sårbarheter – “kritiska fjärrkraschsårbarheter” för att vara exakt – till Bitcoin Unlimited-utvecklingsteamet.
Den första är känd som en ”NULL-pekardereferens,”Den andra en”kan nås.”I båda fallen kan angripare skicka särskilt utformade meddelanden till Bitcoin Unlimited eller Bitcoin Classic-noder för att få dessa noder att krascha. På ett öppet peer-to-peer-nätverk som Bitcoin, betyder detta att en angripare kan få en lista över Bitcoin Unlimited- och Bitcoin Classic-noder från offentligt tillgängliga källor, som Bitnoder, och helt enkelt slå varenda en av dem offline.
“Jag är förvånad över att ingen har lagt märke till dem ännu”, sa Gardner Bitcoin Magazine en dag innan attacken ägde rum. ”Jag antar att inte många använder faktiskt programvaran Bitcoin Unlimited. Men med sin “uppgång” kan angripare ta mer intresse. “
Upplysningen
Vid kontakt Bitcoin Magazine på måndag ville Gardner inte omedelbart offentliggöra sårbarheterna. Det skulle ha varit oansvarigt, förklarade hon, eftersom buggarna fortfarande kunde utnyttjas innan Bitcoin Unlimited-utvecklingsteamet fick chansen att fixa det.
Men hon lämnade också in sårbarheterna för Mitres databas för gemensamma sårbarheter och exponeringar (CVE). Detta säkerställer att Mitre avslöjar buggarna om en månad från nu, vilket pressar utvecklarna att faktiskt lösa problemet i tid.
Men till och med efter detta ansvarsfulla avslöjande trodde Gardner att det fanns en risk att sårbarheterna skulle missbrukas så snart de fixades i Bitcoin Unlimited-kodförvaret. När allt kommer omkring är problemet inte riktigt löst: alla som kör den släppta Bitcoin Unlimited-programvaran är fortfarande sårbara tills de laddar ner och kör den nya, reviderade versionen. Detta öppnar ett fönster för angripare.
“Problemet är att buggarna är så uppenbart uppenbara att när det fixas kommer det att vara lätt att märka för alla som tittar på deras utvecklingsprocess”, sa hon.
Det verkar nu som det är exakt vad som har hänt. Medan Bitcoin Unlimited-utvecklarna verkligen fixade problemet strax efter att det påpekades för dem, gjorde de det med en alltför iögonfallande GitHub begå meddelande, Berättade Gardner Bitcoin Magazine när det verkade så verkade buggarna fixas och innan attackerna började.
”Deras kommunicera meddelande ringer larmklockor. Jag är inte säker på om någon kommer att märka det, men de borde nog ha fördunkat meddelandet lite mer. Formuleringen kan locka närmare granskning. Men om det gick obemärkt så länge, kanske det kommer att bli obemärkt. ”
Uppenbarligen gjorde det inte det.
Som Gardner varnade tog det inte lång tid för angriparna att utnyttja en av sårbarheterna: de första attackerna hände strax efter att buggarna fixats. Lite senare tog användaren “shinobimonkey” frågan till Reddit, Bitcoin Core-utvecklare Peter Todd twittrade om buggen och sociala medier sprängde.
Någon publicerade till och med utnyttja kod för vem som helst att använda, och innan lång tid de flesta Bitcoin Unlimited-noder var nere, följt av många Bitcoin Classic-noder.
“Det är just därför det ska finnas ett” ansvarigt avslöjande “-protokoll, sa Gardner Bitcoin Magazine efter att attackerna ägde rum. “Men då hjälper det inte om programvaruprojektet inte är diskret när det gäller att lösa kritiska problem som detta.”
Kodkvalitet
Det här är inte första gången kodkvaliteten för Bitcoin Unlimited eller Bitcoin Classic granskas.
Som det mest kända exemplet är bitcoin.com gruvpool, som driver Bitcoin Unlimited, bryter en ogiltigt block orsakad av ett fel i januari förra året. All energi som investerades för att producera blocket slösades bort, medan gruvpooler som spionerade som bryts ovanpå det ogiltiga blocket också slösade bort lite energi.
Innan dess hade Bitcoin Core-utvecklare redan varnat för buggykod vid flera tillfällen. På e-postlistan Bitcoin-utveckling, Matt Corallo sa att han hade funnit att Bitcoin Classic: s flexibla transaktionskod var “full av uppenbara och massiva säkerhetshål.” På Reddit, Gregory Maxwell Pekat ut att Bitcoin Unlimited noder kraschade eftersom utvecklingsteamet tog bort kod som inte borde ha tagits bort.
Adress till Bitcoin Unlimited ledande utvecklare Andrew Stone som svar på gårdagens händelser, Maxwell föreslog det finns fler problem med Bitcoin Unlimiteds kodbas som ännu inte har missbrukats:
”Det finns sårbarheter i Unlimited som har rapporterats privat till dig i Unlimited av Bitcoin Core-folk som du tyvärr inte har agerat på. Faktum är allvarligare än den här. ”
Kanske det största problemet för Bitcoin Unlimited, som Pekat ut av informationssäkerhetsexpert Andreas Antonopoulos, är att det saknar en betydande utvecklingsgemenskap för att utföra korrekt kvalitetsanalys. Antalet utvecklare som arbetar med Bitcoin Unlimited och Bitcoin Classic är relativt litet, och koden som inkluderade den exploaterade sårbarheten slogs samman efter att ha granskats av endast en person – inte mycket för säkerhetskritisk kod som skyddar människors pengar.
Gardner instämde i denna bedömning:
“I det här fallet är sårbarheterna så uppenbart uppenbara att det är uppenbart att ingen har granskat sin kod eftersom de sticker ut som en öm tumme”, sa hon. ”Jag är förvånad över att gruvindustrin kör denna programvara. Men eftersom de är det, och många människor kan bli skadade, är det bästa jag kan göra, förutom att rekommendera att de inte använder Bitcoin Unlimited, att avslöja problemen och hoppas att de är tillräckligt kompetenta för att åtgärda det. ”
Bitcoin Magazine nått ut till Bitcoin Unlimited-utvecklarna Andrew Stone och Andrea Suisani, men fick inget svar vid tidpunkten för publiceringen.