Vultisig mengemas kini aplikasi Android dan iOS pada Ogos untuk membaiki pengendalian ralat dalam proses tandatangan pengiraan berbilang pihak. Apabila perpustakaan tandatangan mengesan tingkah laku berniat jahat, aplikasi kini menghentikan percubaan semula automatik dan meminta pengguna supaya tidak menggunakan peranti berkenaan. Kajian ChainSecurity yang didedahkan pada 21 Oktober mendapati aliran lama berpotensi membolehkan penyerang yang telah menguasai satu peserta tandatangan memulihkan bahagian kunci pihak lain dengan menghantar mesej berniat jahat berulang kali dan memerhatikan respons ralat, lalu berkemungkinan mendapatkan kunci peribadi penuh.
Isu ini melibatkan tandatangan ECDSA. Kes ini menunjukkan keselamatan tandatangan menggunakan beberapa peranti bukan sekadar bergantung pada penyimpanan bahagian kunci secara berasingan. Aplikasi juga perlu menghentikan interaksi apabila protokol mengarahkannya berbuat demikian. Walaupun tandatangan yang gagal tidak menghasilkan transaksi yang boleh digunakan, respons ralat masih boleh membocorkan maklumat.
Respons ralat berpotensi mendedahkan benih protokol
Dompet pengiraan berbilang pihak mengagihkan kuasa menandatangani kepada beberapa bahagian kunci. Dalam proses biasa, semua pihak bekerjasama menghasilkan tandatangan standard yang boleh dikenal pasti oleh blockchain tanpa perlu menyatukan kunci peribadi penuh. Dalam konfigurasi yang memerlukan dua peranti, penyerang yang hanya mengawal satu peranti secara teori masih memerlukan kelulusan daripada peranti lain untuk melengkapkan tandatangan.
Laluan serangan yang dihuraikan ChainSecurity mengandaikan salah satu peserta telah diceroboh. Penyerang boleh menghantar beberapa mesej tandatangan berniat jahat kepada peserta lain dan memerhatikan sama ada mesej itu mencetuskan ralat. Menurut para penyelidik, respons tersebut mungkin mendedahkan maklumat sedikit demi sedikit tentang benih dalaman protokol yang boleh digunakan semula. Jika dieksploitasi secara berterusan, penyerang berpotensi memulihkan bahagian kunci pihak lain dan seterusnya kunci peribadi penuh.
Benih itu ialah rahsia konfigurasi dalaman protokol. Perpustakaan tandatangan berkenaan mengandaikan bahawa aplikasi pemanggil akan menghentikan proses tandatangan selepas ralat serius berlaku, sehingga benih tersebut ditukar. Aplikasi versi lama tidak melaksanakan syarat berhenti itu: pengguna hanya menerima mesej kegagalan umum dan proses mungkin dicuba semula. Jadi, isu utamanya bukan sama ada satu tandatangan yang gagal boleh disiarkan ke rangkaian, tetapi sama ada aplikasi terus berinteraksi dengan peserta yang telah ditandai selepas kegagalan.
Kemas kini Ogos mengesan peserta berniat jahat
Penyelenggara aplikasi Vultisig untuk Android dan iOS masing-masing menggabungkan perubahan kod berkaitan pada 21 Ogos, kira-kira dua bulan sebelum pendedahan awam pada Oktober. Kod lama membandingkan kegagalan tandatangan dengan hasil kejayaan daripada perpustakaan tandatangan, tetapi tidak mengendalikan secara berasingan ralat sekatan yang menandakan peserta berniat jahat. Proses tandatangan boleh dicuba semula sehingga tiga kali, sementara pengguna hanya melihat mesej kegagalan umum. Had percubaan itu bukan bilangan mesej yang diperlukan untuk memulihkan kunci dan tidak menunjukkan jumlah sesi yang mungkin diperlukan dalam serangan.
Aplikasi yang dikemas kini kini mengesan kod ralat peserta berniat jahat 100 hingga 109 daripada perpustakaan tandatangan DKLS pada peringkat seperti pembentukan sesi, pemprosesan mesej dan penyelesaian tandatangan. Kedua-dua versi memadankan peserta yang ditandai dengan identiti peranti, menghalang mekanisme percubaan semula automatik daripada mengabaikan ralat itu, serta memaparkan amaran dalam bahasa setempat supaya pengguna tidak meneruskan penggunaan peranti berkenaan. Versi Android turut melangkau proses pemulihan melalui relay.
Perubahan ini membezakan kegagalan tandatangan biasa daripada penentuan oleh perpustakaan kriptografi bahawa seseorang peserta bertindak secara berniat jahat. Percubaan semula automatik mungkin membantu memulihkan operasi apabila berlaku gangguan sementara, tetapi meneruskannya selepas perpustakaan mengarahkan supaya interaksi dihentikan boleh meningkatkan pendedahan maklumat.
Perubahan berkaitan disenaraikan dalam PR Android #5658 dan PR iOS #5235. Nota keluaran iOS v1.45.71 bertarikh 21 Ogos, manakala nota Android v1.0.118 bertarikh 25 Ogos; kedua-duanya menyenaraikan pembaikan berkenaan.
Kesan terhadap konfigurasi peti besi belum diperincikan
Dokumentasi produk Vultisig membezakan cara peranti tandatangan dikawal. Dalam Fast Vault, satu bahagian kunci disimpan pada peranti pengguna dan satu lagi dipegang oleh VultiServer, yang turut menyertai proses tandatangan. Secure Vault pula membahagikan tandatangan antara sekurang-kurangnya dua peranti di bawah kawalan pengguna dan tidak bergantung pada VultiServer. Kedua-dua pilihan menggunakan tandatangan teragih, tetapi tahap kebergantungan operasinya berbeza. Dua peserta dalam satu sesi tandatangan juga tidak semestinya bermaksud seluruh peti besi hanya mempunyai dua bahagian kunci.
Kajian dan maklumat aplikasi yang didedahkan setakat ini tidak menyertakan senarai lengkap yang memadankan versi terjejas dengan konfigurasi peti besi. Oleh itu, pengguna belum dapat menentukan daripada maklumat sedia ada konfigurasi mana yang terjejas secara khusus atau sejauh mana kemas kini meliputi versi terdahulu.
Dokumentasi keselamatan Vultisig menyatakan bahawa Trail of Bits mengaudit perpustakaan DKLS23 daripada Silence Laboratories pada 2024. Dokumentasi itu juga menyebut laporan audit aplikasi mudah alih dan desktop akan disediakan selepas diterbitkan. Ketika membuat pendedahan, ChainSecurity menyatakan bahawa pihaknya belum meneliti pembaikan Vultisig dan belum mengaudit bahagian lain protokol; maka pembaikan pada lapisan aplikasi ini tidak termasuk dalam penilaiannya.
Maklumat lanjut masih diperlukan untuk menjelaskan versi keluaran dan konfigurasi peti besi yang terjejas, serta memastikan syarat berhenti berfungsi sama ada selepas percubaan semula automatik atau apabila pengguna memulakan semula tandatangan secara manual. Isu ini menumpukan pada pelaksanaan pengasingan berbilang pihak: bukan sahaja perpustakaan tandatangan perlu mengarahkan interaksi dihentikan, aplikasi juga perlu mematuhi arahan itu sepanjang proses tandatangan.