
Działania krytyczne: dlaczego niektóre operacje znów proszą o oba urządzenia
Jesteś zalogowany. Masz rolę administratora. Klikasz „usuń członka" — a SSP prosi, byś podpisał oboma urządzeniami, dokładnie tak, jakbyś logował się od zera.
To nie tarcie dla samego tarcia. To celowo wytyczona granica między operacjami, które token sesji powinien móc autoryzować, a tymi, których nie powinien — a rozumowanie stojące za tą granicą warto zrozumieć niezależnie od tego, czy używasz SSP.
Sesje są od wygody, nie od konsekwencji
Token sesji to poświadczenie na okaziciela. Kto go trzyma, ten jest tobą, jeśli chodzi o serwer. To właśnie czyni sesje wygodnymi — uwierzytelniasz się raz, a potem działasz swobodnie — i to właśnie czyni je kiepską podstawą dla decyzji nieodwracalnych.
Sesje bywają kradzione. Przez błąd cross-site scripting, niezablokowany laptop, złośliwe oprogramowanie, wyciekłą kopię zapasową albo po prostu przeglądarkę zostawioną otwartą we współdzielonym biurze. Wytyczne OWASP dotyczące zarządzania sesją traktują kradzież sesji jako stan oczekiwany, a nie przypadek brzegowy, i każdy projekt zakładający inaczej jest optymistyczny.
Dla większości działań to akceptowalne ryzyko, bo większość działań jest odwracalna. Zmiana nazwy skarbca, dodanie obserwatora, poprawienie ustawienia powiadomień — jeśli napastnik ze skradzioną sesją to zrobi, ty to cofniesz.
Niektóre działania takie nie są. Przekazanie własności organizacji oddaje kontrolę komuś innemu. Usunięcie członka odcina mu dostęp. Usunięcie organizacji jest ostateczne. Dla nich SSP wymaga dowodu, że działająca osoba wciąż ma oba urządzenia w tej chwili — a nie że miała je kiedyś wcześniej tego dnia.
Trzynaście działań
Trzynaście operacji wymaga ponownego podpisu. Dzielą się na cztery grupy.
Kontrola nad organizacją
- Przekazanie własności
- Usunięcie organizacji
Członkostwo i role
- Usunięcie członka
- Awans członka na administratora
- Degradacja administratora
Tożsamość konta
- Zmiana firmowego adresu e-mail
- Usunięcie firmowego adresu e-mail
Cykl życia i administracja skarbców
- Zarchiwizowanie skarbca i przywrócenie go z archiwum
- Zamrożenie skarbca i jego odmrożenie
- Awans administratora skarbca i jego degradacja
Łączy je nie to, że ruszają pieniądze — żadne tego nie robi i żadne nie może, bo tylko podpisujący mogą ruszyć środki. Łączy je to, że zmieniają, kto będzie mógł coś robić potem. To operacje, których napastnik chciałby, by okopać dostęp, zamknąć prawdziwych właścicieli na zewnątrz albo po cichu przygotować późniejszą kradzież.
Warto zauważyć, że działania związane z e-mailem są na liście. Zmiana firmowego adresu e-mail na koncie wygląda administracyjnie, ale to klasyczne otwarcie w przejęciu konta: przekierować kanał odzyskiwania, a potem pracować bez pośpiechu. Wymaganie obu urządzeń zamyka tę drogę.
Dlaczego wyzwanie pisze serwer
Mechanizm liczy się tak samo jak sam wymóg, a jedna decyzja projektowa wykonuje większość roboty.
Serwer generuje wiadomość, którą podpisujesz. Klient nigdy.

Gdyby klient układał własne wyzwanie, skompromitowany klient mógłby ułożyć wygodne: wiadomość opisującą nieszkodliwe działanie, podpisaną przez użytkownika przekonanego, że robi coś nieszkodliwego, a potem odtworzoną wobec niebezpiecznego punktu końcowego. To, że wiadomość pisze serwer, znaczy, że to, co podpisujesz, jest tym, co zostanie wykonane — bo serwer sprawdza podpis względem wiadomości, którą sam wydał, i żadnej innej.
To ten sam wzorzec, którego SSP używa przy logowaniu, i ten sam, który w ogóle czyni bezpiecznym uwierzytelnianie oparte na podpisach: nigdy nie podpisuj czegoś, czego nie otrzymałeś od strony, która to zweryfikuje.
Z czym powiązane jest wyzwanie
Wiadomość nie jest ogólnym „tak". To konkretny ciąg zawierający cztery rzeczy, które razem czynią przechwycony podpis bezużytecznym gdziekolwiek indziej.
Dokładne działanie. remove_member i transfer_ownership dają różne wiadomości. Podpis dla jednego nie autoryzuje drugiego.
Dokładny cel. Organizacja, skarbiec tam, gdzie to istotne, oraz osoba, której działanie dotyczy, są nazwane w wiadomości. Działania o zasięgu skarbca zawierają wprost identyfikator skarbca, tak by podpis na zamrożenie jednego nie dał się odtworzyć do zamrożenia innego.
Znacznik czasu. Zajmuje pierwszych trzynaście znaków wiadomości — stała pozycja, bo SSP Wallet weryfikuje ten format, zanim cokolwiek wyświetli. Wyzwania wygasają po piętnastu minutach.
Losowy nonce. Dwanaście bajtów kryptograficznej losowości, dzięki czemu każde wyzwanie jest unikalne nawet dla identycznego działania wobec identycznego celu w tej samej sekundzie.
I wyzwanie jest jednorazowe. Przy wykorzystaniu serwer oznacza je jako użyte w tej samej atomowej operacji, która je weryfikuje — więc odtworzony podpis zostaje odrzucony z „już użyte", zamiast po cichu zadziałać drugi raz. Wygasłe wyzwania sprząta automatycznie indeks TTL.
Każda próba jest zapisywana, także nieudana
Działania krytyczne trafiają do trwałego dziennika, a jest tu szczegół łatwy do przeoczenia: wpis powstaje w chwili żądania wyzwania, a nie dopiero po zakończeniu działania.
To znaczy, że dziennik obejmuje próby porzucone, próby, w których podpis się nie udał, i próby odrzucone. Pojedyncze nieudane działanie krytyczne to zwykle ktoś, kto zmienił zdanie. Ich skupisko o trzeciej nad ranem to opowieść.
Jak reszta śladu audytu SSP, te zapisy nie mają wygaśnięcia ani zadania sprzątającego. Wartość dziennika audytu żyje w całości w tych fragmentach, których potrzeby nikt nie przewidział.
Jak to wygląda w praktyce
Miej oba urządzenia przy sobie, zanim zaczniesz. Działań krytycznych nie da się dokończyć jednym urządzeniem, a wyzwanie wygasa w piętnaście minut. Jeśli telefon jest w innym pokoju, przynieś go najpierw.
Przeczytaj działanie na telefonie, nie tylko w panelu. Wiadomość, którą pokazują twoje urządzenia, nazywa działanie i cel. To twoja okazja, by zauważyć, że cel nie jest tym, kogo się spodziewałeś — ten sam nawyk, który chroni cię przy sprawdzaniu transakcji. Ataki phishingowe wymierzone w użytkowników krypto tłumaczą, dlaczego to drugie spojrzenie na drugie urządzenie warte jest tych sekund.
Nie łącz ich w paczki. Każde działanie krytyczne dostaje własne wyzwanie i własny podpis. Jeśli usuwasz trzech odchodzących pracowników, to trzy podpisy. To zamierzone: łączenie oznaczałoby jeden podpis autoryzujący kilka zmian, czyli dokładnie tę własność, której chcemy uniknąć.
Spodziewaj się ich w najgorszych momentach. Działania krytyczne kumulują się dokładnie wtedy, gdy ktoś odchodzi, konto zostało skompromitowane albo skarbiec trzeba zamrozić — czyli w chwilach, gdy ludzie są zestresowani i chcą działać szybko. Wiedza z góry, że wymagają obu urządzeń, zamienia zaskoczenie w krok procedury.
Szerszy obraz tego, co i przez kogo jest egzekwowane — i dlaczego ponowny podpis leży w warstwie środkowej, a nie najmocniejszej — znajdziesz w co naprawdę zatrzymuje transakcję. O tym, jak organizacja i jej skarbce się układają, zacznij od SSP Enterprise: skarbce multisig dla zespołów.


