Om sikkerhedsmodellen af ​​software tegnebøger | Hovedbog

Om sikkerhedsmodellen af ​​software tegnebøger | Hovedbog

Kildeknude: 2671485

Vi kan skelne mellem to udbredte typer tegnebøger: software- og hardwarepunge. De opfylder samme funktion, men på en anden måde. Software wallets anses for at være enklere at bruge: Et enkelt program er nok til at oprette, validere og underskrive transaktioner. Med en software wallet er det ikke nødvendigt at oprette transaktionen på softwaren og bekræfte den på en hardwareenhed.

To uger siden, Forbudte historier afslørede et målrettet angreb mod tusindvis af mennesker rundt om i verden. Dette angreb udnyttede sårbarheder på Android og iOS til at installere spyware udviklet af NSO Group: Pegasus. Denne malware er i stand til at overvåge hele enhedens aktivitet og udskille personlige oplysninger: SMS-, WhatsApp- og signalsamtaler, telefonopkald osv. Denne artikel forklarer, hvordan en sådan malware under disse forhold ville være i stand til at udtrække alle de hemmeligheder bag software-punge og forskellene set fra et sikkerhedssynspunkt mellem software-punge på mobiltelefoner og stationære computere.

Denne artikel er beregnet til ikke at være særlig teknisk. For at holde det relativt enkelt, vil kun grundlæggende funktioner blive diskuteret.

Beskyttelse af hemmeligheder

Hvad er gemt i en kryptopung?

Tegnebøger gemmer faktisk ikke brugernes kryptovalutaer: de gemmer kun de hemmeligheder, især de private nøgler, der giver adgang til kryptovalutaerne og muligheden for at bruge dem. Disse private nøgler er for det meste ECC (elliptic curve cryptography) private nøgler på forskellige kurver afhængigt af blockchain. De mest almindelige kurver er secp256k1 (Bitcoin, Ethereum…), Ed25519 (Monero) eller BLS12-381 (Ethereum 2).

Disse nøgler bruges til at underskrive transaktioner og mere generelt til at interagere med blockchain-aktiver.

Opbevaringen af ​​disse nøgler afhænger af tegnebogens type: deterministisk eller ej. En hierarkisk deterministisk (HD) tegnebog tillader oprettelsen af ​​et nøgletræ ud fra en enkelt hovedhemmelighed kaldet frøet (jf. BIP44). Dette frø er ofte afledt af en mnemonisk sekvens på 12, 18 eller 24 ord tilfældigt genereret eller valgt af brugeren (jf.BIP39). Disse mnemonics gør det muligt at begrænse antallet af nøgler, der skal gemmes: de kan genberegnes når som helst fra frøet. HD-punge gemmer kun denne mnemonik eller frøet.

Ikke-deterministiske tegnebøger genererer en ny nøgle til hver brug og skal gemme dem alle. Ikke-deterministiske tegnebøger kan ikke nemt migreres til en anden tegnebog, da sikkerhedskopier ikke er kompatible.

De vigtigste sikkerhedsfunktioner i en tegnebog består i at generere, opbevare og bruge disse hemmeligheder korrekt. Der er forskellige niveauer af sikkerhed mod forskellige typer trusler:

  • Beskyttelse mod "onde tjenestepige" angreb: En hacker med midlertidig adgang til tegnebogen må ikke være i stand til at tilføje en bagdør inde i tegnebogen, der gør det muligt at stjæle pinkoden eller adgangskodebeskyttende hemmeligheder.
  • Sikkert kryptografisk materiale: Nøgler og nonce genereret af tegnebogen må aldrig være forudsigelige. Ydermere vil viden om hemmeligheder (undtagen frøet), der genereres på et tidspunkt, ikke tillade at forudsige hemmeligheden, der vil blive genereret i fremtiden.
  • Beskyttelse i hvile: Hvis en hacker får vedvarende data fra en softwaretegnebog, må de ikke være i stand til at udtrække nøglerne.
  • Beskyttelse under hemmelig brug: Når tegnebogen er låst op, må nøglerne ikke være tilgængelige for en angriber eller en malware.
Hardware lommebøger

Sikkerhedsmodellen for en hardwarepung sigter mod at undgå disse sikkerhedstrusler. Hardware tegnebøger beskytter mod malware ved design. De er uafhængige enheder, som underskriver transaktioner på egen hånd. De kryptografiske materialer forbliver altid inde i enheden og sendes aldrig til den softwareapplikation, som de kommunikerer med. Kommunikationsgrænsefladen er altid enkel, hvilket drastisk reducerer angrebsfladen. Det kan være USB, Micro SD eller kamera + skærm (via QR-kode) eller Bluetooth Low Energy.

Desuden integrerer hardware-punge en skærm direkte i enheden, så brugeren kan verificere de handlinger, han er ved at gøre, når han interagerer med sine hemmelige nøgler. Disse manuelle tjek på enheder er en meget effektiv modforanstaltning mod malware på computeren/mobilen. Hvor malware på en computer/mobilenhed kunne få adgang til hemmelighederne (seed eller private nøgler) eller endda bytte/ændre adresser eller beløb, når brugeren udfører en transaktion, er dette ikke muligt med en hardware wallet.

Hardware tegnebøger er også designet til at beskytte mod "onde hushjælp"-angreb og mod en angriber med fysisk adgang. Afhængigt af hardware wallet har de forskellige niveauer af sikkerhed, men i alle tilfælde er de designet til at sikre mod disse trusler. En detaljeret beskrivelse af Ledger Nano-trusselsmodeller kan findes link..

Software Wallets

Almindelige softwarepunge beskytter hemmeligheder med almindelige midler: sikkerhedsmekanismer i det operativsystem, de kører på, og nogle gange en adgangskontrol baseret på en PIN-kode eller en adgangskode.

I det følgende overvejes desktop-punge (Windows, macOS, Linux) og mobile tegnebøger. De vigtigste forskelle mellem dem afhænger for det meste af de sikkerhedsmekanismer, som operativsystemet tilbyder.

Software tegnebøger på en computer

Flere populære tegnebøger, såsom Electrum, Exodus, Atomic eller Bitcoin core, kører på computere.

På en computer er sikkerhedsmekanismer, som operativsystemet tilbyder til at isolere en tegnebogsproces fra andre processer, begrænsede. De fleste apps køres af den samme bruger, og apps har tilladelse til at læse andre apps data.

Sikkerheden af ​​disse software tegnebøger afhænger hovedsageligt af sikkerheden af ​​adgangskoden, der beskytter dem, og også på det faktum, at ingen malware kører på OS (hvilket er ret svært at garantere, se seneste nyheder om Pegasus).

Det meste af tiden er frøet gemt i en krypteret beholder beskyttet af en adgangskode. Et ligetil angreb består, for en malware eller et fjernadministrationsværktøj, at hente denne krypterede beholder og sende den til angriberen. Derefter kan adgangskoden enten være brute-forced eller fås ved at bruge en keylogger.

I et scenarie, hvor en angriber kun formår at få adgang til den krypterede container (angriberen finder en USB-nøgle, der indeholder en tegnebog, eller installerer malware på en computer, men offeret aldrig åbner sin tegnebogsapplikation), skal angriberen brute force adgangskoden.

De fleste adgangskoder er dårlig. Der er milliarder af adgangskoder, der er lækket på nettet, og mange mennesker har en tendens til at genbruge deres adgangskoder til flere tjenester. Færdiglavede værktøjer giver dig mulighed for at hente adgangskoder til kryptovaluta-punge, som f.eks btcrecover or hashkat. Adgangskoder kan være komplekse, men bag hver tegnebog er der rigtige penge, og derfor vil angribere ikke tøve med at investere ressourcer for at bryde sådanne adgangskoder.

To grundlæggende sikkerhedsprincipper for at holde dine adgangskoder sikre er at bruge en adgangskodeadministrator og aldrig genbruge din adgangskode til forskellige formål.

Den mest bekymrende trussel mod software wallets er dedikeret malware og tyvere, udviklet specifikt til at dræne dine penge. Sådan malware, såsom KPOT eller ElectroRAT, behøver ikke engang at bruteforce dit kodeord: de kan direkte fange det, når du indtaster det, dekryptere tegnebogens konfigurationsdata og eksfiltrere frøet.

Her er en legetøjsapplikation, udviklet til denne artikel, der er rettet mod Electrum-pungen (selvom det kunne have været en anden softwarepung). Det simulerer en malware, der stjæler brugeradgangskoden, når den indtastes af offeret. Adgangskoden bruges derefter til at dekryptere tegnebogens data og til at vise frøet:

Som du kan se, selvom adgangskoden er kompleks, er appen i stand til at hente den, da den direkte sniffer den i hukommelsen.

Dette eksempel ligner meget det seneste .SCR malware kampagner, der bruges til at stjæle kryptovalutaer. Kriminelle brugte social engineering-teknikker til at narre brugere til at downloade en ondsindet pauseskærm. Denne pauseskærm stjal faktisk oplysninger fra computerens offer, herunder pung- og kryptovalutaudvekslingsoplysninger.

For at konkludere med software wallets, der kører på computere:

  • I de fleste tilfælde beskytter software wallets, der kører på computere, brugerens frø ved hjælp af en adgangskode.
  • Adgangskontrollen til disse tegnebogsfiler afhænger hovedsageligt af computerens sikkerhed. I praksis er det svært at beskytte computere mod malware, og i takt med at kryptovalutaer bliver mainstream, vil angreb mod tegnebøger blive mere og mere sofistikerede.
  • Det er ikke en god idé at bruge sådanne softwaretegnebøger til at sikre digitale aktiver. Enhver specialiseret malware vil være i stand til at hente tegnebogsfilerne og finde adgangskoderne offline, eller få adgangskoden gennem en keylogger.
Software tegnebøger på en smartphone

Android- og iOS-smartphones tilbyder som standard sikkerhedsfunktioner, der ikke er meget udbredt på desktopoperativsystemer.

Mobiloperativsystemer tilbyder app- og brugerdatabeskyttelse. Især app-sandkasser er obligatoriske for alle apps. Dette er ikke tilfældet på for eksempel Windows: Som standard kan enhver applikation få adgang til brugerdata.

Derfor kan en ondsindet app ikke læse data fra en anden app, undtagen hvis:

  • Den finder en sårbarhed på den app.
  • Eller den formår at eskalere privilegier, for eksempel ved at udnytte en kernesårbarhed, der giver den mulighed for at få root-adgang til systemet.

Desværre findes sådanne angreb. De er meget nemmere på forældede versioner af Android og iOS og på ældre eller billige enheder, hvor tredjepartskode ofte er mindre sikker.

På et up-to-date OS er disse angreb sværere, men ikke uigennemførlige. For eksempel viste Ian Beer en ekstremt imponerende nul-klik-angreb på iOS 13.5 i december 2020. Guang Gong præsenterede en udnytte kæden at fjernrode en lang række Qualcomm-baserede Android-enheder i juni 2020. Og for to uger siden, Forbudte historier afslørede, at NSO Group brugte en udnyttelseskæde til at målrette mod nylige iOS- og Android-enheder ved hjælp af 0-dages sårbarheder.

Mindre sofistikerede angribere kan bruge lokale sårbarheder, så de kan udtrække tegnebogsdata fra et ondsindet program. Sårbarhedsmæglere såsom Zerodium betaler op til $ 200,000 for en privilegieeskalering til at roote på Android og iOS, men op til $1,500,000 for fjernangreb.

Vi studerede et par Android/iOS tegnebøger. Deres sikkerhed afhænger af selve appen, men også af sikkerhedsfunktionerne i det underliggende OS. Selvfølgelig, når sikkerheden i operativsystemet er besejret, er applikationen ikke sikker længere

To metoder til at beskytte frøet er almindeligt anvendt:

  • Password beskyttelse – tegnebogsdata er beskyttet af en adgangskode indtastet af brugeren. Designet er det samme som for desktop-punge. I praksis er data sværere at udtrække end fra en computer, da det er teknisk vanskeligere at hente appdata fra en ondsindet app af de ovenfor forklarede årsager. Men det er i praksis nemmere at hente adgangskoden, når dataene er blevet stjålet: Det er kedeligt at indtaste komplekse adgangskoder på mobiltelefoner, og derfor har brugerne en tendens til at vælge enklere. Desuden er nøgleafledningsmekanismer (brugt til at skabe en nøgle ud fra en adgangskode) på mobile enheder normalt nemmere at bryde, da de ofte er lettere af ydeevnemæssige årsager.
  • Coinomi og Metamask er eksempler på sådanne tegnebøger.

I den følgende video viser vi en anden legetøjsapp udviklet til denne artikel. Det er en malware forklædt som en falsk Bitcoin ticker-widget. Malware udnytter en kendt sårbarhed på en ikke-patchet enhed for at få root-adgang på enheden og for at eksfiltrere det krypterede frø til en ekstern server. Serveren tvinger derefter adgangskoden til at dekryptere frøet.

Denne metode er ikke specifik for en tegnebog. Den kan (mere eller mindre) nemt tilpasses til enhver adgangskodebeskyttet tegnebog. Her er det samme eksempel med Coinbase Wallet:

[Indlejret indhold]

  • Sikkerhed baseret på Android Keystore (eller iOS nøglering) – I dette tilfælde krypteres tegnebogsdata med en krypteringsnøgle, der er gemt i Android Keystore (iOS Keychain). Disse tjenester blev oprindeligt designet til at opbevare krypteringsnøgler sikkert, og mange apps bruger dem til at generere en nøgle, der vil kryptere alle de følsomme brugerdata. Applikationer, der bruger Keystore, implementerer følgende mekanisme:
    • Appen beder Keystore om at generere en krypteringsnøgle til en given identifikator. Keystore genererer nøglen og opbevarer den sikkert.
    • Når appen ønsker at kryptere eller dekryptere en klat, sender den klatten sammen med nøgleidentifikatoren til Keystore.
    • Til sidst tjekker nøglelageret, om appen faktisk har rettighederne til at bruge denne nøgle, og sender derefter outputdata tilbage til appen.

Med denne model kan appen ikke kende værdien af ​​nøglen, men kan bruge den. Det er også muligt at knytte yderligere adgangskontroller til nøglen: for eksempel kan nøgleadgang betinges til en brugergodkendelse (anmode om en PIN-kode eller oplåsningsmønster).

Denne mekanisme kan give yderligere sikkerhed sammenlignet med adgangskodebaseret beskyttelse. Faktisk er Keystore på nyere telefoner understøttet af et Trusted Execution Environment (TEE) eller nogle gange et Secure Element.

Det betyder, at en angriber med root-rettigheder ikke vil være i stand til at udtrække krypteringsnøgler fra nøglelageret. Ikke desto mindre vil de være i stand til at bruge Keystore som et dekrypteringsorakel og til at kryptere eller dekryptere alle data, de ønsker.

Keystore tilbyder kryptering, men også signeringstjenester. Så kunne en tegnebog beskytte sine krypteringsnøgler, hvilket gør dem svære at udtrække? Svaret er desværre nej: software wallets bruger ikke Keystore til at underskrive transaktionerog private nøgler manipuleres altid i klartekst af appen.

Dette er af en simpel grund: KeyStore og KeyChain tilbyder generiske signatur- og krypteringstjenester, men understøtter ikke den kryptografi, der bruges i kryptovalutaer. For eksempel implementerer KeyStore ECDSA Signature, men kun på NIST-kurver defineret i FIPS 186-4 (P-224, P-256, P-384 og P-521). Bitcoin bruger en anden kurve, secp256k1, som ikke er understøttet endnu.

For at opsummere er Keystore og Keychain gode tjenester at beskytte hemmelige og private nøgler. De kan tilbyde en vis sikkerhed ved at kryptere følsomme data: nogle klasser af sårbarheder (f.eks. vilkårlig fillæsning) vil blive håndteret af Keystore-kryptering. Men hvis en eskalering af rodrettigheder ikke er nok til at udtrække nøgleværdierne fra en hardware-understøttet Keystore, er det tilstrækkeligt at dekryptere følsomme data. En angriber, der er i stand til at instrumentere appen, er i stand til at hente dens hemmeligheder.

For at konkludere med mobile tegnebøger:

  • Isoleringsmekanismen mellem apps leveret af iOS/Android hæver grænsen for sikkerhed sammenlignet med en softwarepung, der kører på en computer. Angriberen skal først have en privilegieeskalering for at få adgang til appdata. Dette er muligt på forældede enheder. Dygtige angribere (Ian Beer gjorde det på 6 måneder alene, men... Det er Ian Beer) kan også gøre det på nyere, patchede enheder.
  • Nøglebeskyttelsestjenester (KeyStore, KeyChain) kunne tilføje et ekstra lag af sikkerhed for at beskytte hemmeligheder i hvile. Ikke desto mindre, da de ikke understøtter kryptografiske algoritmer til cryptocurrency-applikationer, kan nøglen stadig udtrækkes.
  • I alle tilfælde kan en angriber med root-adgang enten hente frøet i hvile, når det bruges, eller udnytte brugerens rettigheder til at tømme tegnebogen ved at bruge softwarepungen som et orakel.

Her er et sidste eksempel på et legetøjsspyware rettet mod Blockchain.com-pungen (selvom dette lige så nemt kunne udføres på mange andre tegnebøger). Den er fjerninstalleret og overvåger tegnebogen. Når brugeren har autentificeret ved hjælp af sit fingeraftryk, låses krypteringsnøglen op, og tegnebogens data dekrypteres. Spywaren instrumenterer appen til at hente denne krypteringsnøgle. Det exfiltrerer derefter nøglen og tegnebogens data til en ekstern server:

[Indlejret indhold]

Konklusion

Som konklusion har softwarepunge forskellige niveauer af sikkerhed. Deres trusselsmodel dækker dog ikke tilfælde af malware, der kører på operativsystemet med en privilegieeskalering. Dette er ved design: Wallet-appen kan ikke være mere sikker end det operativsystem, den kører på.

  • Isolationsmekanismen mellem apps leveret af iOS/Android hæver grænsen for sikkerhed sammenlignet med en softwarepung, der kører på en computer. Angriberen skal først have en privilegieeskalering for at få adgang til appdata.
  • Nøglebeskyttelsestjenester (KeyStore, KeyChain) kunne tilføje et ekstra lag af sikkerhed for at beskytte hemmeligheder i hvile. Ikke desto mindre, da de ikke understøtter kryptografiske algoritmer til cryptocurrency-applikationer, skal nøgler manipuleres direkte fra appen, så de tilbyder en begrænset beskyttelse.
  • I alle tilfælde kan en angriber med root-adgang enten hente frøet i hvile, når det bruges, eller udnytte brugerens rettigheder til at tømme tegnebogen ved at bruge softwarepungen som et orakel.

Tidsstempel:

Mere fra Ledger