kripto.NEWS 💥 Minden, ami kell. És semmi, ami nem. (napi 200+ kriptohír)
Összefoglaló
Hatalmas esemény tartja már napok óta lázban az egész kriptovilágot – legalábbis annak szakmai közösségét. Az élet a legjobb forgatókönyvíró, szokták mondani, és erre a sztorira ez hatványozottan igaz. Van itt minden, ami egy igazi hekkerkrimi kelléke; zseniális mesterterv, Kuala Lumpur-i bérelt szerver, nagyhalak BTC-címeinek megcsapolása – csupa filmbe illő jelenet. Ráadásul a sztori megismerésével talán még az elmúlt hetek óriási zuhanásra is választ kapunk.
Ha megéri a Bitcoin, hogy olyan filmek készüljenek róla mint a „Margin Call” vagy a „Too Big To Fail”, akkor biztosra veszem, hogy ez a kis történet fog kapni néhány jelenetet
– fogalmaz a Variance blog.
De mi is történt pontosan, amiből konkrétan egy teljes Mr. Robot évad kijönne? (Na jó, 2-3 rész biztosan.)
Hogy volt
A dolog lényege, hogy rosszindulatú kriptospecifikus kóddal fertőztek meg egy népszerű, harmadik féltől származó Node.js modult. A közel kétmillió heti letöltéssel rendelkező, nyílt forráskódú programcsomagba egy magát fejlesztőnek álcázott hekker olyan vírust csempészett, amely képes bizonyos bitcointárcákban tárolt egyenlegek lecsapolására.
Node.js
A Node.js egy szoftverrendszer, melyet skálázható internetes alkalmazások, főként webszerverek részére hoztak létre. A programok JavaScriptben írhatók, eseményalapú, aszinkron I/O-val a túlterhelés minimalizálására és a skálázhatóság maximalizálására. Eredeti célja az volt, hogy push technológiával lehessen weboldalakat létrehozni. A legtöbb JavaScript programmal ellentétben nem a webböngésző futtatja, hanem a szerveroldalon alkalmazásként fut.
A Node.js fejlesztése a GitHubon zajlik, fejlesztői közössége leginkább két levelezőlistán, továbbá a #node.js IRC csatornán található meg. A közösség a NodeConf fejlesztői konferenciákon is összegyűlik. Magyarországon évente többször tartanak találkozót Nodebp néven. (Wikipédia)
A szóban forgó Node.js könyvtár az „event-stream”, egy eszköztár, amely megkönnyíti a fejlesztők számára a streamek létrehozását és az azokkal való munkát. A rosszindulatú kódot néhány napja fedezték fel, és az event-stream 3.3.6-os verziójában jelent meg, amelyet szeptember 9-én tettek közzé az NPM-gyűjteményen belül. Azóta nyolcmilliószor töltötték már le.
A Mesterterv
Az event-stream modult eredetileg Dominic Tarr hozta létre, aki sokáig volt a csomag karbantartója, de néhány hónapja átadta a projekt fejlesztését és karbantartását egy „right9ctrl” nevű ismeretlen programozónak. Ez a felhasználó úgy szerezte meg Dominic bizalmát, hogy több, érdemi hozzájárulással segítette a projektet.
Hogy még világosabb legyen a történet, DNReNTi fórumtárs plasztikus leírásait hívjuk segítségül:
Na most jött ez a koma, right9ctrl, aki bepromózta magát az eredeti készítőnél, hogy folytatná a package fejlesztését, ha nem bánja. Nos, nem bánta, megtette hát hősünket ’közreműködővé’ a projektben, azaz fejleszthette, és adhatott ki belőle új verziót, verziókat.
Miután megszerezte a teljes hozzáférést, az új fejlesztő publikálta az event-stream 3.3.6-os verzióját, amely tartalmazta az új, „flatmap-stream” könyvtárat, amelyet kifejezetten a támadás céljából hozott létre.
Hogy ne legyen túl feltűnő, behúzott ebbe a projektbe egy újabb függőséget, ez a flatmap-stream, amelyet egy másik GitHub accounttal vélhetőleg szinten ő hozott létre. Ebben volt a backdoor.
Mivel a flatmap-stream modult titkosította, így a rosszindulatú kód több mint két hónapig felderítetlen maradt. Végül Ayrton Sparling (FallingSnow), a California State University egy számítástechnikát hallgató diákja tette közzé a problémát a GitHubon.
Miután a titkosított kódot dekódolták és elemezték, megtalálták a rosszindulatú modult, amelyet célzottan a BitPay nyílt forráskódú tárcáján, a Copay-en tárolt egyenleg leemelésére terveztek. A vállalat ugyanis az event-stream-et is felhasználta az alkalmazás kódjában.
Mit csinált a kód?
A rosszindulatú kód a Dash Copay bitcointárcákról volt képes coinokat lopni, amelyet a Node Package Manageren (NPM) keresztül egy Kuala Lumpur-i szerverre küldött.
A rosszindulatú kód belehívott a BitPay/CoPay profiljába (Credentials.getKeys) és megnézte, hogy van-e ott legalább 100 BTC-t, vagy 1000 BCH-t tartalmazó wallet. Ha igen, akkor nemes egyszerűséggel elküldte a privát kulcsot egy Kuala Lumpur-i (111.90.151.134) szerver 8000-es portján figyelő szolgáltatásnak
– részletezte a mechanizmust Csabai Csaba.
Az NPM – egy nyílt forráskódú projektkezelő, amely az event-stream könyvtárát is hosztolta – hétfőn eltávolította a backdoort a listából.
Megszólalt a BitPay
A BitPay kiadott egy közleményt, amelyben azt mondják, hogy a Copay 5.0.2-től 5.1.0-ig terjedő verziói érintettek, és hogy ezen változatok felhasználóinak nem javasolják az alkalmazás futtatását vagy megnyitását, amíg nem telepítik a Copay 5.2.0-ás verzióját.
A felhasználóknak feltételezniük kell, hogy privát kulcsaik is érintettek lehetnek, ebből kifolyólag egyenlegüket azonnal az új tárcákba (v5.2.0) kell mozgatniuk
– írja ajánlásában a BitPay.
Azt javasolják, hogy a felhasználók először frissítsék az érintett tárcákat (5.0.2-5.1.0), majd ezután az összes pénzt mozgassák át az 5.2.0-ás tárcába a Send Max funkciót használva, hogy teljes egyenlegük biztonságban legyen.
A BitPay azt is elmondta, hogy csapatuk folytatja az eset kivizsgálását, illetve a sebezhetőség kiterjedését, hogy megtudják, egyáltalán használták-e a kódot a Copay felhasználói ellen. Ezenfelül biztosították felhasználóikat, hogy a BitPay alkalmazás nem volt sebezhető a rosszindulatú kód által.
Ettől szakadt be az árfolyam?
Nem tudjuk, de nem elképzelhetetlen. A Variance blog ezzel kapcsolatos írásában Csabai Csaba szakértő kiemelte, hogy „alig 12 órával a BitPay release után már be is szakadt az árfolyam 1000 dollárt, majd 3 napnyi szünet után szinte azonnal további 1500 dollárt”.
Külön érdekesség, hogy szeptember 9-én commitolt csomag a BitPaynél november 13-án élesedett, szinte teljesen egyidőben a Bitcoin Cash csata indulásával. Ezt így megtervezni szinte lehetetlen, ezért még a körülmények is a hekker kezére játszhattak.
A privát kulcsokhoz viszont nem fért egyből hozzá, ehhez az kellett, hogy a user valamit tranzaktáljon, amihez az app behívja a privát kulcsot.
A nagyobb szakadások szabályszerűsége arra enged következtetni, hogy a támadó kötegelten dolgozta fel a privát kulcsokat, amibe bejátszott az is, hogy a felhasználók is csak a release után némi idővel (napokkal) rakják fel az újabb verziókat
– olvasható a Variance blogon.
Az, hogy mennyit sikerült ellopnia, még mindig nem tisztázott, a szakértők viszont abban egytől egyig egyetértenek, hogy a hack megtervezése, előkészítése és kivitelezése professzionális volt. Éppen ezért nehéz elképzelni, hogy a támadó ne járt volna sikerrel néhány cím esetében.
Konklúzió?
Ez az eset is a kriptotechnológia sérülékenységét jelzi, viszont reméljük, hogy egyben a fejlődéshez is hozzájárul a későbbiekben. Maga a támadásfajta sajnos nem valószínű, hogy megszűnik egyhamar. A JavaScript jelenleg a legnépszerűbb nyelv, emiatt továbbra is vonzó célpont lesz a hekkerek számára. A viszonylag kevés szabványos kényelmi funkció arra ösztönzi a fejlesztőket, hogy importálják őket NPM-csomagokból – ez pedig azt is jelenti, hogy a JavaScript-projektek nagyfokú kitettséggel rendelkeznek.
A szakértők védekezésnek azt ajánlják, hogy a fejlesztők ragaszkodjanak a népszerű, jól karbantartott csomagokhoz, új modul telepítése előtt tegyék fel a kérdést maguknak, hogy valóban szükség van-e rá? A legjobb a saját kód, ennek hiányában pedig marad a fokozott óvatosság.
(CoinColors, a The Hacker News és a Variance blog alapján. További források: ZDNet, Zach Schneider, GitHub. Special thanks: DNReNTi, butch3r)
kripto.NEWS 🔥 Több a zászló. Egy a tábor. (kriptohírek 15 nyelven)