Pada 2025-10-23, SSP Wallet v1.27.0 mendarat dengan perubahan keamanan runtime terdalam tahun ini: LavaMoat, kerangka kompartementalisasi JavaScript yang dipelopori MetaMask, kini terintegrasi ke SSP. Setiap dependensi pihak ketiga yang dimuat dompet disegel di dalam sandbox-nya sendiri, sehingga paket yang dikompromikan — risiko rantai pasok npm yang dihadapi setiap dompet modern — tidak lagi bisa membaca atau mengubah apa yang sedang dilakukan bagian lain dari dompet. Rilis ini juga memperketat Content Security Policy, menyembunyikan halaman uji keamanan di balik gestur easter-egg, dan membawa segenggam kemenangan pemolesan UI.
Sandboxing runtime tiba di SSP
LavaMoat, dalam 30 detik: sebuah runtime yang mengambil pohon dependensi aplikasi JavaScript, mengisolasi setiap paket ke kompartemennya sendiri, dan hanya membiarkan setiap kompartemen menyentuh global dan API yang secara eksplisit diberikan oleh berkas kebijakannya. Secara default, dependensi pihak ketiga tidak bisa membaca localStorage, tidak bisa memanggil fetch, tidak bisa menjangkau keyring, tidak bisa melakukan monkey-patch pada Object.prototype. Jika ia mencoba, runtime menghentikannya.
Itu sikap keamanan yang berbeda dari kebanyakan aplikasi web, di mana setiap paket yang diimpor berjalan dengan otoritas sama seperti aplikasi itu sendiri. Di dalam SSP, kode yang menangani kunci privat, integrasi swap yang berbicara dengan API bursa, dan helper UI pihak ketiga dulu berbagi satu cakupan global. Sejak v1.27.0, tidak lagi.
Mengapa kompartementalisasi penting
Ancaman yang dirancang untuk dinetralkan oleh kompartementalisasi adalah serangan rantai pasok npm. Pola itu telah terlihat di lapangan berulang kali: penyerang mengambil alih paket populer, merilis versi jahat, dan menumpangi gelombang dependensi transitif menuju setiap aplikasi yang mengimpornya. Untuk dompet, dampak paket jahat yang berjalan dengan otoritas penuh aplikasi sangat katastrofik — ia bisa membaca materi seed di memori, mengeksfiltrasi kunci privat, atau menulis ulang tujuan transaksi sebelum pengguna menandatangani.
LavaMoat tidak mencegah serangan mencapai aplikasi. Ia menghilangkan dampak. Dependensi yang dikompromikan, bahkan yang terkubur lima level dalam pohon, berjalan di dalam kompartemen yang tidak punya akses ke permukaan penandatanganan, tidak punya akses jaringan di luar yang diizinkan kebijakan, dan tidak punya cara membaca status kompartemen lain. Paket dikompromikan ≠ dompet dikompromikan — kesetaraan ini berlaku untuk pertama kalinya di v1.27.0.
Ini melengkapi, bukan menggantikan, perlindungan yang mendarat lebih awal tahun ini. Kode sumber SSP sudah diverifikasi oleh audit penuh Halborn, dan biner yang Anda pasang sudah dapat dibuktikan terhadap kode sumber itu melalui build deterministik dan tanda tangan GPG. LavaMoat menutup celah runtime: bahkan jika dependensi menjadi jahat setelah build ditandatangani, ia tidak bisa eskalasi ke akses level dompet.
Content Security Policy yang lebih kuat
Berdampingan dengan sandboxing runtime, v1.27.0 juga memperketat Content Security Policy di lapisan browser. CSP adalah anggaran yang didekarasikan dompet untuk dirinya sendiri — dari origin mana ia diizinkan memuat skrip, dengan origin mana ia diizinkan berkomunikasi, perilaku inline mana yang diperbolehkan. CSP yang lebih ketat mempersempit ruang penyerang dapat beroperasi bahkan sebelum LavaMoat menegakkan kebijakannya di dalam halaman.
Efek gabungannya adalah dua lapis pengurungan: browser menolak memuat sumber daya di luar kebijakan yang dideklarasikan, dan JavaScript apa pun yang tetap berjalan kemudian dikompartementalkan oleh LavaMoat. Setiap lapis menangani mode kegagalan yang berbeda, yang justru menjadi inti dari pertahanan berlapis.
Halaman uji keamanan tersembunyi
Untuk verifikasi internal — dan ini satu-satunya fitur dalam rilis yang datang dengan easter egg yang disengaja — v1.27.0 menyertakan halaman uji keamanan yang tidak terekspos di navigasi normal. Mengklik nomor versi beberapa kali berturut-turut akan menampilkannya. Halaman ini menjalankan serangkaian pemeriksaan terhadap kebijakan LavaMoat dan aturan CSP, sehingga peninjau dan red-teamer bisa memastikan perlindungan aktif di build yang mereka periksa tanpa harus melengkapi dompet sendiri dengan instrumen. Ia tidak ditujukan untuk pengguna sehari-hari, dan tidak ada yang dapat dieksploitasi di baliknya; itu hanyalah cara yang lebih nyaman untuk memverifikasi apa yang dijanjikan v1.27.0.
Pertahanan berlapis: diaudit + dapat direproduksi + di sandbox
Bagian menarik dari v1.27.0 bukan LavaMoat sendirian; melainkan bagaimana tiga bagian itu berkomposisi. Kode sumber yang diaudit (Halborn), biner yang dapat direproduksi sehingga siapa pun bisa memverifikasinya terhadap kode sumber itu (build deterministik), dan sebuah runtime yang membendung setiap dependensi yang dikompromikan. Bersama-sama, mereka mengubah pertanyaan dari "apakah saya percaya seluruh pohon dependensi SSP?" menjadi "apakah saya percaya pada inti yang sudah diaudit?" — permukaan kepercayaan yang jauh lebih kecil dan lebih bisa dijawab.
Pemolesan UI mendarat di atasnya: logo bursa swap kini ter-render dengan benar, dan palet merek telah diselaraskan di seluruh layar. Kompartementalisasi adalah hal yang mengubah bagaimana dompet bertahan hidup.