
Tindakan kritis: mengapa sebagian operasi meminta kedua perangkat lagi
Anda sudah masuk. Anda punya peran admin. Anda mengeklik "keluarkan anggota" — dan SSP meminta Anda menandatangani dengan kedua perangkat, persis seolah-olah Anda sedang masuk dari nol.
Ini bukan hambatan demi hambatan. Ini garis yang ditarik dengan sengaja antara operasi yang boleh disahkan token sesi dan yang tidak boleh, dan penalaran di balik garis itu layak dipahami, entah Anda memakai SSP atau tidak.
Sesi ada untuk kenyamanan, bukan untuk konsekuensi
Token sesi adalah kredensial atas nama pembawa. Siapa pun yang memegangnya adalah Anda, sejauh yang diketahui server. Justru itulah yang membuat sesi nyaman — Anda mengautentikasi sekali lalu bertindak bebas — dan justru itu pula yang membuatnya dasar yang buruk bagi keputusan yang tak bisa dibatalkan.
Sesi bisa dicuri. Lewat bug cross-site scripting, laptop yang tak terkunci, malware, cadangan yang bocor, atau sekadar peramban yang ditinggal terbuka di kantor bersama. Panduan manajemen sesi dari OWASP memperlakukan pencurian sesi sebagai kondisi yang diperkirakan, bukan kasus pinggiran, dan setiap rancangan yang mengandaikan sebaliknya bersifat optimistis.
Untuk sebagian besar tindakan ini risiko yang bisa diterima, karena sebagian besar tindakan dapat dibatalkan. Mengganti nama vault, menambah pengamat, mengubah setelan notifikasi — kalau penyerang dengan sesi curian melakukannya, Anda membatalkannya.
Sebagian tindakan tidak begitu. Mengalihkan kepemilikan organisasi menyerahkan kendali kepada orang lain. Mengeluarkan anggota memutus aksesnya. Menghapus organisasi bersifat final. Untuk itu, SSP menuntut bukti bahwa orang yang bertindak masih memegang kedua perangkat saat ini juga — bukan bahwa ia memegangnya pada suatu saat sebelumnya hari itu.
Tiga belas tindakan
Tiga belas operasi menuntut penandatanganan ulang. Semuanya jatuh ke dalam empat kelompok.
Kendali organisasi
- Mengalihkan kepemilikan
- Menghapus organisasi
Keanggotaan dan peran
- Mengeluarkan seorang anggota
- Menaikkan anggota menjadi admin
- Menurunkan seorang admin
Identitas akun
- Mengganti surel perusahaan
- Menghapus surel perusahaan
Daur hidup dan administrasi vault
- Mengarsipkan vault, dan mengeluarkannya dari arsip
- Membekukan vault, dan mencairkannya
- Menaikkan admin vault, dan menurunkannya
Yang menyatukan semuanya bukan karena mereka memindahkan uang — tak satu pun melakukannya, dan tak satu pun bisa, sebab hanya penanda tangan yang bisa memindahkan dana. Yang menyatukan mereka adalah bahwa mereka mengubah siapa yang bisa melakukan apa sesudahnya. Inilah operasi yang diinginkan penyerang untuk mengokohkan akses, mengunci pemilik yang sebenarnya di luar, atau diam-diam bersiap untuk pencurian di kemudian hari.
Perhatikan bahwa tindakan terkait surel ada dalam daftar. Mengganti surel perusahaan pada sebuah akun tampak administratif, tetapi itu langkah pembuka klasik dalam pengambilalihan akun: alihkan kanal pemulihan, lalu bekerja santai. Menuntut kedua perangkat untuk itu menutup jalan tersebut.
Mengapa server yang menulis tantangannya
Mekanismenya sama pentingnya dengan syaratnya, dan satu keputusan rancangan mengerjakan sebagian besar pekerjaannya.
Server menghasilkan pesan yang Anda tandatangani. Klien tidak pernah.

Kalau klien menyusun tantangannya sendiri, klien yang dibobol bisa menyusun yang menguntungkan: pesan yang menggambarkan tindakan tak berbahaya, ditandatangani pengguna yang percaya sedang melakukan sesuatu yang tak berbahaya, lalu diputar ulang ke endpoint yang berbahaya. Server yang mengarang pesan berarti apa yang Anda tandatangani adalah apa yang akan dieksekusi, karena server memeriksa tanda tangan terhadap pesan yang ia terbitkan sendiri dan bukan yang lain.
Ini pola yang sama yang dipakai SSP untuk masuk, dan pola yang sama yang membuat autentikasi berbasis tanda tangan aman secara umum: jangan pernah menandatangani sesuatu yang tidak Anda terima dari pihak yang akan memverifikasinya.
Tantangan itu terikat pada apa
Pesannya bukan "ya" yang umum. Ia sebuah string spesifik yang memuat empat hal yang, bersama-sama, membuat tanda tangan yang berhasil disadap tak berguna di tempat lain.
Tindakan yang persis. remove_member dan transfer_ownership menghasilkan pesan yang berbeda. Tanda tangan untuk yang satu tak bisa mengesahkan yang lain.
Sasaran yang persis. Organisasi, vault bila relevan, dan orang yang dikenai tindakan semuanya disebut dalam pesan. Tindakan berlingkup vault menyertakan ID vault secara eksplisit, sehingga tanda tangan untuk membekukan satu vault tak bisa diputar ulang untuk membekukan vault lain.
Sebuah cap waktu. Ia menempati tiga belas karakter pertama pesan — posisi tetap, karena SSP Wallet memvalidasi format itu sebelum menampilkan apa pun. Tantangan kedaluwarsa setelah lima belas menit.
Sebuah nonce acak. Dua belas byte keacakan kriptografis, yang membuat tiap tantangan unik bahkan untuk tindakan identik terhadap sasaran identik pada detik yang sama.
Dan tantangan itu sekali pakai. Ketika ditukarkan, server menandainya terpakai dalam operasi atomik yang sama yang memvalidasinya — jadi tanda tangan yang diputar ulang ditolak dengan "sudah dipakai" alih-alih diam-diam berhasil dua kali. Tantangan yang kedaluwarsa dibersihkan otomatis oleh indeks TTL.
Setiap upaya dicatat, termasuk yang gagal
Tindakan kritis ditulis ke log permanen, dan ada satu detail yang gampang terlewat: entri log ditulis ketika tantangan diminta, bukan hanya ketika tindakannya rampung.
Artinya log memuat upaya yang ditinggalkan, upaya yang penandatanganannya gagal, dan upaya yang ditolak. Satu tindakan kritis gagal biasanya seseorang yang berubah pikiran. Segerombolan di antaranya pada pukul tiga pagi adalah sebuah cerita.
Seperti sisa jejak audit SSP, catatan ini tak punya kedaluwarsa dan tak punya tugas pembersihan. Nilai sebuah log audit hidup sepenuhnya pada bagian yang tak seorang pun perkirakan akan dibutuhkan.
Seperti apa ini dalam praktik
Bawa kedua perangkat sebelum Anda mulai. Tindakan kritis tak bisa dirampungkan dengan satu perangkat, dan tantangannya kedaluwarsa dalam lima belas menit. Kalau ponsel Anda ada di ruangan lain, ambil dulu.
Baca tindakannya di ponsel, bukan hanya di dasbor. Pesan yang ditampilkan perangkat Anda menyebut tindakan dan sasarannya. Itulah kesempatan Anda menyadari bahwa sasarannya bukan yang Anda kira — kebiasaan yang sama yang melindungi Anda saat meninjau transaksi. Serangan phishing yang menargetkan pengguna kripto menjelaskan mengapa lirikan kedua di perangkat kedua sepadan dengan detik yang dihabiskannya.
Jangan diborong sekaligus. Setiap tindakan kritis mendapat tantangan sendiri dan tanda tangan sendiri. Kalau Anda mengeluarkan tiga karyawan yang pergi, itu tiga kali penandatanganan. Ini disengaja: memborong berarti satu tanda tangan mengesahkan beberapa perubahan, yang justru sifat yang ingin kami hindari.
Harapkan mereka datang pada saat terburuk. Tindakan kritis mengelompok tepat pada momen ketika seseorang pergi, sebuah akun dibobol, atau sebuah vault perlu dibekukan — yakni momen ketika orang tertekan dan ingin bergerak cepat. Mengetahui lebih dulu bahwa ini menuntut kedua perangkat mengubah kejutan menjadi satu langkah.
Gambaran yang lebih luas tentang apa menegakkan apa — dan mengapa penandatanganan ulang duduk di lapisan tengah alih-alih yang terkuat — ada di apa yang sebenarnya menghentikan transaksi. Untuk bagaimana organisasi dan vault-nya saling terpasang, mulailah dari SSP Enterprise: vault multisig untuk tim.


