Pertimbangan keselamatan mengatasi semua pertimbangan lain dalam perisian secara umum dan pada blockchain secara khusus. Sekiranya keselamatan gagal, tidak ada perkara lain yang penting. Blockchain membuktikan urus niaga terdesentralisasi dan tidak boleh dipercayai, tetapi banyak kelemahan keselamatan blockchain tetap ada.

Eksploitasi keselamatan ada pada tahap reka bentuk dan seni bina, pada tahap pengekodan, dan pada tahap operasi. Sekiranya anda tertanya-tanya, ya, blockchain boleh diretas.

Kerentanan Keselamatan Blockchain – Dari sini hingga keabadian

Berlian adalah selama-lamanya, dan kontrak pintar berlangsung selagi blockchain yang digunakan terus digunakan. Akibatnya, semua bug dan kerentanan keselamatan blockchain juga hidup selagi kontrak berlaku.

Biasanya, setiap blockchain menyediakan bahasa pengaturcaraannya sendiri untuk melaksanakan kontrak pintar. Mari lihat lebih dekat.

Bahasa Kontrak Pintar

Persekitaran blockchain merangkumi bahasa mereka sendiri untuk mengembangkan kontrak pintar.

Platform Ethereum, misalnya, merangkumi bahasa Soliditi untuk menulis kontrak pintar. Pencipta merancang Solidity untuk menjadi bahasa Turing yang lengkap.

Bahasa yang lengkap Turing pada dasarnya membolehkan pengaturcara untuk melaksanakan apa sahaja yang mampu dilakukan oleh sistem yang mendasari. Akibatnya, ini memberikan kebolehan pengaturcara seperti menerapkan gelung dalam kod, yang berpotensi menyebabkan kerentanan keselamatan blockchain.

Kelengkapan Turing

Bahasa-bahasa lengkap yang menarik mengandungi kerumitan secara semula jadi, dan kerumitan mengundang bug dan kelemahan.

Rangkaian Bitcoin juga mempunyai bahasa pengaturcaraan yang disebutnya Skrip. Skrip sengaja tidak lengkap untuk meningkatkan keselamatan.

Semakin sedikit pilihan yang diberikan kepada pengaturcara, semakin kecil kemungkinan kelemahan keselamatan blockchain memasuki sistem.

Untuk meminimumkan risiko melepaskan kod yang salah ke alam liar, pengaturcara harus memahami perangkap dan anti-pola umum yang terdapat dalam pengaturcaraan kontrak pintar. (Anti-corak mewakili amalan pengaturcaraan yang buruk).

Hack DAO: Masalah Kemasukan Semula

gambar kerentanan keselamatan blockchain

Hack DAO

Masalah kemasukan semula mungkin berada di kedudukan tertinggi di kalangan pengaturcara kerentanan keselamatan blockchain yang dikodkan ke dalam kontrak pintar. Reentrancy menguruskan akaun melalui beberapa perbelanjaan untuk transaksi yang sama. Kes penggunaan memproses pengembalian dana sesuai dengan eksploitasi ini, tetapi cacat ini mempengaruhi segala jenis transaksi jika tidak ditangani pada tahap reka bentuk dan pengekodan.

Dalam salah satu serangan cryptocurrency yang paling terkenal sehingga kini, penggodam DAO mengeksploitasi reentrancy. Tidak ada pemimpin organisasi yang menentukan cara menjalankan DAO (atau Decentralized Autonomous Organisation), dan DAO mengusulkan untuk memberdayakan pengguna dengan kemampuan untuk memilih projek untuk dilaburkan dalam.

Ia mengumpulkan dana lebih dari $ 150 juta pada bulan pertama. Pada 17 Jun 2016, penggodam mengeluarkan $ 50 juta dari organisasi itu melalui cacat masuk semula. Garpu keras dari Ethereum Classic (ETC) hingga Ethereum (ETH) menghasilkan usaha untuk menyelesaikan masalah yang dibuat oleh peretasan ini.

Anti-Corak Rentan untuk Masuk Semula

Logik reentrant yang lemah untuk kod kelihatan seperti ini:

berfungsi untuk memproses pembayaran () {

(1) periksa kesahihan transaksi, penerima, dan baki akaun;

(2) memproses transaksi;

(3) kemas kini keadaan sistem untuk menunjukkan transaksi telah diproses;

}

Pada pandangan pertama, logiknya kelihatan betul dan lengkap, tetapi cacat itu berada dalam urutan melakukan langkah 2 sebelum langkah 3.

Walaupun panggilan pertama ke fungsi terus memproses langkah 2, panggilan lain untuk transaksi yang sama dapat memasuki fungsi. Oleh kerana maklumat keadaan masih dalam keadaan awal dan belum diproses pada langkah 3, panggilan kedua akan diperiksa sebagai transaksi yang sah untuk diproses.

Akibatnya, sistem menghabiskan mata wang untuk kewajiban yang sama untuk kali kedua. Penggodam melancarkan banyak urus niaga ke fungsi sebelum keadaan ditetapkan dengan betul.

Penyembuhan untuk Kemasukan Semula

Perubahan pada algoritma ini membetulkan masalah di atas:

berfungsi untuk memproses pembayaran () {

(1) periksa kesahihan transaksi, penerima, dan baki akaun;

(2) kemas kini keadaan sistem untuk menunjukkan transaksi telah diproses;

(3) memproses transaksi;

}

Kod ini mesti merangkumi semua pengendalian pengecualian yang diperlukan, dan ia juga merangkumi semua pergantungan logik.

Limpahan

Overflow adalah satu lagi kelemahan keselamatan yang perlu diketahui oleh pengaturcara.

Beberapa bahasa pengaturcaraan memberikan ketikan yang kuat, dan yang lain memberikan penaipan yang lemah. Bahasa yang ditaip dengan kuat menolak untuk membenarkan pengaturcara memberikan data rentetan ke pemboleh ubah angka, misalnya, dan bahasa yang ditaip lemah memungkinkan tindakan tersebut.

Bahasa yang ditaip dengan kuat menguatkuasakan sekatan. Sekiranya susunan terdiri daripada sepuluh elemen, pengaturcara tidak dapat mencuba untuk mengakses elemen kesebelas. Bahasa yang ditaip lemah membenarkan tingkah laku seperti itu, tetapi terhasil akibatnya. Sekiranya nilai maksimum yang dibenarkan oleh pemboleh ubah adalah 99, dan anda memberikannya nilai 100, tonton keruntuhan semasa anda menjalankannya!

Akibatnya, overflow adalah eksploitasi yang digunakan oleh penggodam. Sekiranya penggodam memasukkan parameter ke kontrak pintar yang berada di luar jangkauan kod yang dapat diproses, hasilnya akan terhempas. Kemalangan seperti itu mendorong banyak eksploitasi. Kemalangan itu boleh mencetuskan serangan penolakan perkhidmatan (serangan DDoS), dan maklumat penting mengenai dalaman sistem kadangkala menampakkan diri dalam mesej ralat.

Dalam aplikasi web, penggodam sering mengisi memori dengan kod jahat mereka sendiri, jadi ketika program itu terhenti dan menuju ke tempat yang tidak disengaja dalam ingatan, kod jahat tersebut dijalankan.

Bahasa yang ditaip lemah memberikan kekuatan dan fleksibiliti dinamik, tetapi mereka juga memerlukan reka bentuk dan ujian yang lebih ketat untuk dikuatkan terhadap serangan.

Hydra Berkepala Banyak

gambar kerentanan keselamatan blockchain

Banyak masalah keselamatan yang melanda dunia perisian. Ketika teknologi baru muncul, ancaman baru muncul. Selain eksploitasi yang disebutkan di atas, kelemahan ketara ini hanya mewakili beberapa kelemahan keselamatan blockchain yang lain.

Kriptografi yang buruk menimbulkan banyak sakit kepala. Kriptografi memastikan privasi, dan apabila privasi pecah, semuanya hancur. Pasukan IOTA membuat kesilapan menulis perpustakaan kriptografi mereka sendiri dari awal pada versi awal produk mereka. Masalah yang wujud dalam menjalankan kriptografi anda sendiri adalah bahawa semua perisian yang kompleks mengandungi bug, jadi anda dijamin mempunyai kriptografi kereta.

Perpustakaan kriptografi yang ditubuhkan terus diperiksa oleh ahli akademik dan terbukti boleh dipercayai dari masa ke masa melalui kehidupan di alam liar.

Dalam dunia dompet, penjanaan nombor rawak mesti betul-betul rawak. Terutama pada hari-hari awal cryptocurrency, beberapa dompet gagal memenuhi syarat ini.

Alamat cryptocurrency memerlukan alamat yang mesti unik. Keunikan berasal dari penjana nombor rawak, dan penjana nombor rawak memerlukan benih untuk memulakan proses. Sekiranya benih gagal betul-betul rawak, sistem akan gagal.

Salah satu hasil dari kebiasaan buruk bermaksud alamat yang sama akan dibuat berkali-kali. Bayangkan senario di mana dompet memberikan alamat X kepada orang A, dan kemudian suatu ketika kemudian memberikan alamat X kepada orang B. Apabila pembayaran pergi ke alamat X, ia hanya akan diberikan kepada satu orang. Orang mana yang mendapat wang?

Masalah lain dengan keburukan buruk timbul apabila penggodam mengetahui algoritma yang digunakan untuk membuat benih. Penggodam menjana semula benih untuk dirinya sendiri dan memiliki sistem.

Jalan Akan Selamanya dan Pesta Tidak Akan Berakhir

Keselamatan adalah pertempuran yang tidak pernah berakhir, dan walaupun pengaturcara, arkitek, dan penguji menghapus semua kelemahan dari kod tersebut, kelemahan operasi tetap ada.

Dalam persekitaran Bukti Kerja, jika pelaku buruk menguasai 51% rangkaian, integriti akan hancur. Teori permainan memberikan pengurangan untuk serangan ini. Cryptocurrency baru dengan rangkaian kecil mendedahkan banyak risiko serangan ini. Tetapi serangan 51% merosakkan nilai mata wang, jadi penyerang hanya menyakiti diri sendiri.

Blockchains hidup di internet dan berkongsi semua pendedahan yang sama kepada penggodam seperti internet. Contohnya, andaikan anda membeli duit syiling dari bursa di laman web. Serangan suntikan, skrip silang laman, serangan pancingan data dan semua peretasan laman web tradisional lain berlaku.

Pemikiran Akhir

Sama seperti pengaturcara terhadap bug, pengaturcara mesti memperhatikan keselamatan dalam perkembangannya. Beberapa alat ada untuk membantu pengaturcara dalam tugas tersebut, tetapi pengaturcara harus terlebih dahulu memahami kelemahan diri untuk melindungi mereka.

The Projek Keselamatan Aplikasi Desentralisasi (DASP) berhasrat untuk menjadi tempat penyimpanan maklumat dan sumber mengenai keselamatan blockchain. Mereka memodelkan diri mereka pada Projek Keselamatan Aplikasi Web Terbuka (OWASP). OWASP Top 10 tahunan pasti menyenaraikan kelemahan aplikasi web utama yang ada sekarang. DASP Top 10 berharap dapat menyediakan sumber yang setara untuk blockchain.

Tidak semua serangan diketahui sebelumnya. Eksploitasi sifar-hari mentakrifkan penggodam eksploitasi yang diketahui sebelum orang lain melakukannya. Oleh itu, pengaturcara mesti berfikir seperti penyerang semasa merancang dan melaksanakan perisian. Sekiranya anda tidak menemui kelemahan dalam kod anda, harap penggodam mencari keuntungan untuk mencarinya.