Portfel w postaci rozszerzenia przeglądarki to mały program, który żyje wewnątrz Twojej przeglądarki internetowej — Chrome, Firefox, Brave lub Edge — i przechowuje klucze do Twoich kryptowalut. Instalujesz go tak samo, jak instalujesz blokadę reklam: ze sklepu z dodatkami przeglądarki, jednym kliknięciem. Gdy już tam jest, ikona portfela siedzi obok paska adresu, gotowa zawsze, gdy odwiedzasz stronę internetową, która musi obsłużyć kryptowaluty.
Ten przewodnik wyjaśnia, jak ten rodzaj portfela naprawdę działa, jak wygląda jego model bezpieczeństwa i gdzie leżą prawdziwe zagrożenia. Jeśli jesteś zupełnie nowy w portfelach, zacznij od tego, czym jest portfel kryptowalutowy, a potem od szerszego porównania portfela programowego i portfela sprzętowego — ten artykuł skupia się konkretnie na odmianie opartej na przeglądarce.
Czym właściwie jest „rozszerzenie”
Przeglądarkowe rozszerzenie to oprogramowanie, które dodaje funkcje do Twojej przeglądarki. Przeglądarka jest programem gospodarzem; rozszerzenie jest gościem, któremu przeglądarka pozwala działać w swoim wnętrzu. Rozszerzenia mogą odczytywać i zmieniać strony internetowe, które odwiedzasz, pokazywać własne okienka wyskakujące i przechowywać dane na Twoim komputerze. Właśnie ta moc czyni portfel-rozszerzenie wygodnym — i właśnie ją musisz zrozumieć, zanim powierzysz mu pieniądze.
Portfel-rozszerzenie używa tej mocy do trzech zadań. Przechowuje Twoje klucze w lokalnej pamięci przeglądarki, zwykle chronione hasłem. Pokazuje Ci okienko wyskakujące, gdy musisz coś zatwierdzić. I rozmawia ze stronami internetowymi za pomocą techniki zwanej wstrzykiwaniem.
Jak działa wstrzykiwanie
Wstrzykiwanie oznacza, że portfel umieszcza mały fragment kodu na każdej stronie internetowej, którą otwierasz. Wyobraź to sobie tak, jakby portfel zostawiał telefon na stole każdej witryny, którą odwiedzasz. Gdy strona internetowa chce zrobić coś z kryptowalutą — połączyć się z Twoim portfelem, pokazać Twoje saldo lub poprosić Cię o wysłanie transakcji — podnosi ten telefon i składa żądanie.
Twój portfel odbiera żądanie i nie działa po cichu. Otwiera okienko wyskakujące i pyta Ciebie. „Ta witryna chce się połączyć.” „Ta witryna chce, żebyś podpisał transakcję wysyłającą 0,2 ETH.” Nic się nie rusza, dopóki nie klikniesz zatwierdź. Witryna może poprosić; tylko Ty możesz zgodzić się. Ten krok zatwierdzenia to najważniejszy nawyk przy używaniu jakiegokolwiek portfela przeglądarkowego: przeczytaj okienko, zanim klikniesz.
To właśnie ta konstrukcja pozwala aplikacji zdecentralizowanej — dApp, czyli witrynie działającej na blockchainie — działać wprost ze zwykłej karty przeglądarki bez dodatkowego oprogramowania. Jest to naprawdę przydatne. Ale ponieważ portfel jest osiągalny z każdej strony, każda strona także jest częścią obrazu, gdy mówimy o bezpieczeństwie.
Powierzchnia ataku
„Powierzchnia ataku” to proste określenie wszystkich miejsc, przez które coś można zaatakować. Drzwi frontowe, drzwi tylne i otwarte okno — wszystkie są częścią powierzchni ataku domu. Portfel przeglądarkowy ma ich kilka.
Złośliwe lub przejęte strony internetowe. Ponieważ portfel wstrzykuje się do każdej witryny, wroga witryna może wysyłać do niego żądania. Portfel i tak najpierw pyta Ciebie, więc złośliwa strona nie może samodzielnie przenieść środków — ale może spreparować mylące żądanie i liczyć na to, że zatwierdzisz je bez czytania.
Phishingowe dAppy. Witryna phishingowa to podróbka zbudowana tak, by wyglądać jak prawdziwa. Kopia popularnej giełdy lub rynku NFT może poprosić Cię o „zweryfikowanie portfela” i przedstawić transakcję, która w rzeczywistości go opróżnia. Okienko jest uczciwe co do tego, co zrobi; to witryna skłamała co do tego, dlaczego.
Zbyt szerokie uprawnienia. Gdy instalujesz jakiekolwiek rozszerzenie, przeglądarka wymienia, do czego może ono uzyskać dostęp. Wiele portfeli prosi o zgodę na odczyt i zmianę danych na wszystkich witrynach — potrzebują tego, aby wstrzykiwać się wszędzie. Ceną jest to, że portfel o szerokim zasięgu jest większą zdobyczą, jeśli kiedykolwiek zostanie obrócony przeciwko Tobie.
Ryzyko łańcucha dostaw. To jest to subtelne. Atak na łańcuch dostaw wymierzony jest nie w Ciebie, lecz w coś, od czego jesteś zależny. Nowoczesne oprogramowanie składa się z setek mniejszych otwartoźródłowych klocków zwanych zależnościami. Jeśli napastnik wsunie zły kod do jednego z tych klocków — zatruta zależność — albo przejmie aktualizację, która wysyła nową wersję rozszerzenia do Twojej przeglądarki, złośliwy kod przybywa kanałem, któremu już ufasz. Zainstalowałeś bezpieczne rozszerzenie; późniejsza aktualizacja albo ukryty wewnątrz komponent bezpieczny nie był.
Aby głębiej i niezależnie od dostawcy przyjrzeć się temu, jak rozszerzenia przeglądarek są budowane i zabezpieczane, dokumentacja rozszerzeń webowych MDN Mozilli jest miarodajnym źródłem, a projekt OWASP publikuje ogólne wskazówki dotyczące powyższych zagrożeń webowych.
Jak SSP zmniejsza ryzyko
Nic z tego nie oznacza, że portfele przeglądarkowe są niebezpieczne w użyciu. Oznacza, że dobrze zbudowany portfel musi planować z myślą o powierzchni ataku, zamiast udawać, że ona nie istnieje. SSP robi to na dwa konkretne sposoby.
Sandbox czasu wykonania LavaMoat. Piaskownica (sandbox) to zamknięta przestrzeń, w której coś może działać, nie mogąc sięgnąć do reszty systemu — tak jak prawdziwa piaskownica utrzymuje piasek w jednym miejscu. LavaMoat stosuje ten pomysł do tych setek zależności. Każda zależność działa we własnej zaplombowanej przegrodzie z dostępem tylko do tego, czego naprawdę potrzebuje. Tak więc, jeśli zatruta zależność rzeczywiście wśliźnie się do środka poprzez atak na łańcuch dostaw, zostaje zamknięta: nie może po cichu sięgnąć przez portfel po Twoje klucze, bo ściany jej przegrody na to nie pozwalają. Atak zostaje powstrzymany, zamiast stać się katastrofą. Omawiamy to szczegółowo we wpisie z newsroomu o LavaMoat trafiającym do SSP.
Konstrukcja 2 z 2. To jest większa ochrona strukturalna. Większość portfeli przeglądarkowych przechowuje cały klucz — zatwierdź złe okienko i środki przepadły. SSP dzieli podpisywanie na dwa urządzenia: rozszerzenie przeglądarki przechowuje jeden klucz, a aplikacja SSP Key w Twoim telefonie przechowuje drugi. Transakcja jest ważna tylko wtedy, gdy oba ją podpiszą. Samo rozszerzenie nie może przenieść ani jednej monety.
To całkowicie zmienia rachunek. Nawet jeśli złośliwa strona oszuka rozszerzenie, nawet jeśli przejęta aktualizacja do niego dotrze, napastnik kontroluje tylko jeden z dwóch wymaganych kluczy. Twój telefon — osobne urządzenie, z osobnym ekranem pokazującym Ci szczegóły transakcji — i tak musi zatwierdzić. Atak, który opróżniłby zwykły portfel przeglądarkowy, grzęźnie przed ścianą, której nie potrafi przekroczyć.
Czyli — czy portfele przeglądarkowe są bezpieczne?
Portfel przeglądarkowy jest wystarczająco bezpieczny do codziennego użytku, gdy prawdziwe są dwie rzeczy: portfel jest zbudowany tak, by powstrzymać opisane wyżej awarie, a Ty traktujesz okienko zatwierdzenia jak prawdziwą decyzję, a nie odruch. Instaluj rozszerzenia tylko z oficjalnych sklepów, trzymaj portfel osobno w przeglądarce, której ufasz, i zwalniaj za każdym razem, gdy witryna prosi Cię o podpisanie czegoś.
Największa słabość portfela przeglądarkowego — to, że żyje w ruchliwej, podłączonej do internetu przeglądarce — jest prawdziwa. Odpowiedź SSP nie polega na ignorowaniu jej, lecz na założeniu, że przeglądarka może zostać przejęta, i uczynieniu tego do przetrwania: LavaMoat powstrzymuje złą zależność, a konstrukcja 2 z 2 oznacza, że samo rozszerzenie nigdy nie wystarczy, byś stracił środki. Dalej w tej serii mobilne portfele kryptowalutowe przyglądają się drugiej połowie tej pary — telefonowi, który musi współpodpisać.