Para penandatangan federasi Blockstream kali ini tidak kehilangan satu pun kunci privat. Proses penandatanganan mereka berjalan dari awal sampai akhir sesuai rancangan; node fungsi yang seharusnya memeriksa semuanya sudah memeriksa, lalu sesuai prosedur mereka melepas bitcoin. Masalahnya adalah, L-BTC yang diminta untuk penarikan itu diciptakan begitu saja—tidak ada yang menyadarinya.
Kejadian bermula pada 6 September. Seseorang memanfaatkan sebuah celah di Elements untuk membuat sekitar 4000 L-BTC di Liquid tanpa penyertaan (backing) bitcoin. Bukti-bukti ini kemudian diserahkan kepada anggota federasi SideSwap, melewati proses peg-out yang sepenuhnya normal. Dalam waktu sedikit lebih dari setengah jam, mendekati 4000 $BTC meninggalkan alamat cadangan federasi; jika dikonversi dengan harga saat itu, nilainya lebih dari 300 juta dolar AS. Sebelum kejadian, alamat itu memiliki 4205 koin; setelah penarikan tersebut dan beberapa pemrosesan berikutnya, sisa akhirnya hanya 197 koin. Rantai kemudian dihentikan, dan sampai sekarang belum dibuka lagi.
Celahnya ada di lapisan confidential transaction. Liquid menyembunyikan nominal transfer; node memverifikasi bahwa saldo transaksi “seimbang” menggunakan range proof. Memverifikasi sekali bukti seperti ini menghabiskan banyak daya komputasi, jadi Elements menyimpan hasil verifikasi yang sudah dilakukan dalam cache agar bisa dipakai ulang. Kunci cache ini kurang menyertakan konteks untuk aset dan skrip; akibatnya, sebuah bukti yang pernah diverifikasi di tempat lain bisa dipakai untuk menvalidasi penerbitan baru yang sama sekali berbeda. Dalam Elements 23.3.4 yang kemudian dirilis secara resmi, perbaikannya disebut: perkuat kunci cache untuk range proof, dan sekaligus menambah saklar agar node tidak perlu melakukan cache.
Ambang batas (threshold) itu sendiri tidak bermasalah. Dari lima belas kunci, jika terkumpul sebelas tanda tangan, begitulah aturannya—dan para penandatangan memang benar-benar valid. Node fungsi yang mereka verifikasi adalah apakah peg-out ini diprakarsai oleh anggota yang memegang hak PAK; soal apakah pada awalnya ada bitcoin sungguhan yang masuk ke L-BTC tersebut tidak masuk dalam cakupan pemeriksaannya. Node SideSwap dan node fungsi yang tersebar di seluruh dunia menjalankan basis kode Elements yang sama, bertemu celah cache yang sama, sehingga jawabannya berasal dari tempat yang sama—tidak ada pemeriksaan independen masing-masing. Jika threshold ditingkatkan lagi, hasilnya tidak akan berbeda.
Soal menilai kelompok ini, pihak luar belum sepakat. Di rantai utama, mereka meninggalkan pesan yang mengaku white-hat dan meminta dihubungi di rantai itu; Blockstream membalas dengan alamat email keamanan. Pada malam 7 September, 3400 bitcoin kembali ke alamat cadangan, sisanya 598,5 koin sampai sekarang belum digerakkan. CTO Ledger, Charles Guillemet, saat itu mengatakan bahwa white-hat tidak akan menarik habis sebuah jembatan dulu, lalu datang mencari cara menghubungi Anda. Belakangan ia melunakkan ucapannya: ia mengakui ini memang tidak seperti praktik white-hat pada umumnya, namun organisasi kriminal biasa pun tidak akan secara proaktif menghubungi para korban. Dengan meninggalkan uang itu, ia lebih memilih menyebutnya pemerasan. Samson Mow dari JAN3 menambahkan bahwa permintaan untuk mengirim ke Signal berasal dari alamat lain.
Saya tidak menerima istilah “white-hat”. Orang yang berdiskusi soal syarat sambil menggenggam uang bukanlah white-hat. Tapi ini dua hal yang berbeda: apakah uangnya bisa kembali atau tidak. Saat ini Blockstream juga tidak punya tuas yang lebih baik.
Bagian yang bermasalah pada insiden ini adalah verifikasi. Lapisan pengekalan (custody) sebenarnya tidak rusak; ini justru yang perlu diingat. Dalam roadmap Blockstream Mei, ada jembatan tipe BitVM 1-of-n; gagasan utamanya adalah menurunkan risiko “kepercayaan” dari sekumpulan orang yang bisa bersekongkol menjadi cukup jika ada satu orang yang jujur. Rancangan itu mengatur skenario bersekongkol dan kabur, tetapi tidak bisa mengatur bahwa semua orang mungkin menjalankan kode yang sama dan membaca kesalahan yang sama di tempat yang sama. Meski di federasi ada seratus anggota yang jujur, mereka tetap membaca buku besar yang sama yang sudah terkontaminasi.
Jadi, bagi orang-orang yang memegang BTC dengan berbagai kemasan atau BTC lintas-chain, jumlah penandatangan bukan metrik yang berarti. Saya akan menanyakan tiga hal: siapa yang punya hak untuk mencetak bukti (credential) baru; setelah bukti itu dicetak, apa yang dipakai untuk melakukan verifikasi; dan apakah pihak-pihak yang memverifikasi benar-benar menghitung semuanya secara independen. Poin ketiga kali ini adalah kunci. #Bitcoin di rantai utama sendiri sama sekali tidak ada masalah; yang selalu bermasalah adalah lapisan yang menempel di sampingnya.
Model federasi kali ini juga punya sisi baik, setidaknya itu harus diakui. Rantai bisa dihentikan, sehingga piutang buruk berhenti di situ; jika bertemu celah inflasi pada rantai lain yang tidak bisa dihentikan oleh siapa pun, bukti tanpa backing akan menyebar terus ke seluruh hilir—dan tidak bisa lagi “dikembalikan”.
Patch sudah dirilis pada dini hari 9 September, tetapi rantai masih berhenti di tahap 7 September dini hari. Di sisi kode, semuanya sudah siap; yang macet adalah bagaimana menghapus peg-out yang tidak valid itu dari catatan, serta siapa yang harus menutup kekurangannya. Saat ini alamat cadangan menyimpan 3601 bitcoin; L-BTC yang menunggu penebusan masih ada lebih dari 4100 keping. Resmi mengatakan saat restart mereka akan menolak peg-out yang tidak valid itu, lalu memulihkan backing yang cukup; tetapi tidak disebutkan siapa yang akan mengisi lubang tersebut. Jika pada akhirnya Blockstream atau anggota federasi sendiri yang menutupnya, ini adalah insiden kecelakaan kode; kritik yang menargetkan custody tidak akan benar-benar tepat sasaran. Namun jika lubang itu dibebankan ke pemegang kepala (head) L-BTC, maka kritik tersebut akan punya bukti.
Perhatikan saldo pada alamat cadangan itu. Begitu rantai kembali menghasilkan blok, apakah saldo sudah dipulihkan atau belum, akan lebih langsung daripada apa pun pengumuman.
Kejadian bermula pada 6 September. Seseorang memanfaatkan sebuah celah di Elements untuk membuat sekitar 4000 L-BTC di Liquid tanpa penyertaan (backing) bitcoin. Bukti-bukti ini kemudian diserahkan kepada anggota federasi SideSwap, melewati proses peg-out yang sepenuhnya normal. Dalam waktu sedikit lebih dari setengah jam, mendekati 4000 $BTC meninggalkan alamat cadangan federasi; jika dikonversi dengan harga saat itu, nilainya lebih dari 300 juta dolar AS. Sebelum kejadian, alamat itu memiliki 4205 koin; setelah penarikan tersebut dan beberapa pemrosesan berikutnya, sisa akhirnya hanya 197 koin. Rantai kemudian dihentikan, dan sampai sekarang belum dibuka lagi.
Celahnya ada di lapisan confidential transaction. Liquid menyembunyikan nominal transfer; node memverifikasi bahwa saldo transaksi “seimbang” menggunakan range proof. Memverifikasi sekali bukti seperti ini menghabiskan banyak daya komputasi, jadi Elements menyimpan hasil verifikasi yang sudah dilakukan dalam cache agar bisa dipakai ulang. Kunci cache ini kurang menyertakan konteks untuk aset dan skrip; akibatnya, sebuah bukti yang pernah diverifikasi di tempat lain bisa dipakai untuk menvalidasi penerbitan baru yang sama sekali berbeda. Dalam Elements 23.3.4 yang kemudian dirilis secara resmi, perbaikannya disebut: perkuat kunci cache untuk range proof, dan sekaligus menambah saklar agar node tidak perlu melakukan cache.
Ambang batas (threshold) itu sendiri tidak bermasalah. Dari lima belas kunci, jika terkumpul sebelas tanda tangan, begitulah aturannya—dan para penandatangan memang benar-benar valid. Node fungsi yang mereka verifikasi adalah apakah peg-out ini diprakarsai oleh anggota yang memegang hak PAK; soal apakah pada awalnya ada bitcoin sungguhan yang masuk ke L-BTC tersebut tidak masuk dalam cakupan pemeriksaannya. Node SideSwap dan node fungsi yang tersebar di seluruh dunia menjalankan basis kode Elements yang sama, bertemu celah cache yang sama, sehingga jawabannya berasal dari tempat yang sama—tidak ada pemeriksaan independen masing-masing. Jika threshold ditingkatkan lagi, hasilnya tidak akan berbeda.
Soal menilai kelompok ini, pihak luar belum sepakat. Di rantai utama, mereka meninggalkan pesan yang mengaku white-hat dan meminta dihubungi di rantai itu; Blockstream membalas dengan alamat email keamanan. Pada malam 7 September, 3400 bitcoin kembali ke alamat cadangan, sisanya 598,5 koin sampai sekarang belum digerakkan. CTO Ledger, Charles Guillemet, saat itu mengatakan bahwa white-hat tidak akan menarik habis sebuah jembatan dulu, lalu datang mencari cara menghubungi Anda. Belakangan ia melunakkan ucapannya: ia mengakui ini memang tidak seperti praktik white-hat pada umumnya, namun organisasi kriminal biasa pun tidak akan secara proaktif menghubungi para korban. Dengan meninggalkan uang itu, ia lebih memilih menyebutnya pemerasan. Samson Mow dari JAN3 menambahkan bahwa permintaan untuk mengirim ke Signal berasal dari alamat lain.
Saya tidak menerima istilah “white-hat”. Orang yang berdiskusi soal syarat sambil menggenggam uang bukanlah white-hat. Tapi ini dua hal yang berbeda: apakah uangnya bisa kembali atau tidak. Saat ini Blockstream juga tidak punya tuas yang lebih baik.
Bagian yang bermasalah pada insiden ini adalah verifikasi. Lapisan pengekalan (custody) sebenarnya tidak rusak; ini justru yang perlu diingat. Dalam roadmap Blockstream Mei, ada jembatan tipe BitVM 1-of-n; gagasan utamanya adalah menurunkan risiko “kepercayaan” dari sekumpulan orang yang bisa bersekongkol menjadi cukup jika ada satu orang yang jujur. Rancangan itu mengatur skenario bersekongkol dan kabur, tetapi tidak bisa mengatur bahwa semua orang mungkin menjalankan kode yang sama dan membaca kesalahan yang sama di tempat yang sama. Meski di federasi ada seratus anggota yang jujur, mereka tetap membaca buku besar yang sama yang sudah terkontaminasi.
Jadi, bagi orang-orang yang memegang BTC dengan berbagai kemasan atau BTC lintas-chain, jumlah penandatangan bukan metrik yang berarti. Saya akan menanyakan tiga hal: siapa yang punya hak untuk mencetak bukti (credential) baru; setelah bukti itu dicetak, apa yang dipakai untuk melakukan verifikasi; dan apakah pihak-pihak yang memverifikasi benar-benar menghitung semuanya secara independen. Poin ketiga kali ini adalah kunci. #Bitcoin di rantai utama sendiri sama sekali tidak ada masalah; yang selalu bermasalah adalah lapisan yang menempel di sampingnya.
Model federasi kali ini juga punya sisi baik, setidaknya itu harus diakui. Rantai bisa dihentikan, sehingga piutang buruk berhenti di situ; jika bertemu celah inflasi pada rantai lain yang tidak bisa dihentikan oleh siapa pun, bukti tanpa backing akan menyebar terus ke seluruh hilir—dan tidak bisa lagi “dikembalikan”.
Patch sudah dirilis pada dini hari 9 September, tetapi rantai masih berhenti di tahap 7 September dini hari. Di sisi kode, semuanya sudah siap; yang macet adalah bagaimana menghapus peg-out yang tidak valid itu dari catatan, serta siapa yang harus menutup kekurangannya. Saat ini alamat cadangan menyimpan 3601 bitcoin; L-BTC yang menunggu penebusan masih ada lebih dari 4100 keping. Resmi mengatakan saat restart mereka akan menolak peg-out yang tidak valid itu, lalu memulihkan backing yang cukup; tetapi tidak disebutkan siapa yang akan mengisi lubang tersebut. Jika pada akhirnya Blockstream atau anggota federasi sendiri yang menutupnya, ini adalah insiden kecelakaan kode; kritik yang menargetkan custody tidak akan benar-benar tepat sasaran. Namun jika lubang itu dibebankan ke pemegang kepala (head) L-BTC, maka kritik tersebut akan punya bukti.
Perhatikan saldo pada alamat cadangan itu. Begitu rantai kembali menghasilkan blok, apakah saldo sudah dipulihkan atau belum, akan lebih langsung daripada apa pun pengumuman.
