Mengamankan Pindah

Dec 13 2022
oleh Aptos Labs dan OtterSec Jaringan Aptos menggunakan bahasa kontrak pintar Move sebagai model pemrograman yang mendasarinya. Meskipun Move dirancang untuk ekosistem kontrak pintar yang aman, penerapan Move yang salah dapat membahayakan properti tersebut.

oleh Aptos Labs dan OtterSec

Jaringan Aptos menggunakan bahasa kontrak pintar Move sebagai model pemrograman yang mendasarinya. Meskipun Move dirancang untuk ekosistem kontrak pintar yang aman, penerapan Move yang salah dapat membahayakan properti tersebut. Di Aptos Labs, kami berkomitmen untuk menjadikan Move seaman mungkin, bersama dengan komunitas. Kami berdua berinvestasi dalam alat untuk menulis kontrak pintar yang benar (misalnya Move Prover, yang dikembangkan terutama oleh Aptos), serta ketepatan komponen inti runtime seperti Move Virtual Machine. Dalam artikel ini kami menjelaskan bagaimana kami, bersama dengan mitra kami, mencapai yang terakhir melalui audit, bug bounty, fuzzing, dan penguatan keamanan dari implementasi yang mendasarinya.

Apa yang kita amankan?

Keamanan Move didasarkan pada beberapa properti dasar. Properti ini ditentukan berdasarkan bytecode yang digunakan oleh mesin eksekusi Move dan tidak bergantung pada bahasa sumber:

  • Keamanan jenis : Setiap nilai memiliki jenis yang unik dan tidak dapat dimaafkan. Misalnya, tidak mungkin untuk mengambil beberapa nilai dari tipe `address` dan mengubahnya menjadi token keamanan yang relevan dengan tipe `signer`.
  • Enkapsulasi modular : Sumber daya dalam penyimpanan hanya dapat dimanipulasi dari kode di dalam modul yang mendeklarasikan sumber daya tersebut. Hanya fungsi dengan visibilitas yang cocok yang dapat disebut lintas modul.
  • Kepemilikan dan masa pakai : Sistem kemampuan Move memberlakukan bahwa nilai tidak disalin, dijatuhkan, disimpan, atau digunakan sebagai kunci kecuali kemampuan yang sesuai dideklarasikan untuk jenis nilai.
  • Keamanan referensi : Referensi tidak hidup lebih lama dari nilai yang mereka tunjuk. Referensi yang dapat diubah dimiliki secara eksklusif, sehingga pembuatan alias tidak dimungkinkan.

Berikut ini adalah pertanyaan yang kami minati:

  1. Apakah pemverifikasi bytecode selesai , dan apakah ini menjamin bahwa semua properti di atas terpenuhi untuk setiap program? Hal ini penting karena melanggar salah satu sifat di atas berpotensi mengakibatkan hilangnya aset.
  2. Bisakah program bytecode Pindahkan yang diberikan merusak mesin eksekusi? Karena dalam mesin negara yang direplikasi, semua node menjalankan program yang sama, ini dapat digunakan untuk menghentikan jaringan.
  3. Bisakah program tertentu menyebabkan mesin eksekusi kehabisan sumber daya (memori atau waktu)? Ini dapat dimanfaatkan untuk serangan DoS yang memperlambat atau menangguhkan jaringan.

Inti dari pengembangan kode bebas bug adalah praktik rekayasa perangkat lunak yang disiplin yang dipasangkan dengan alat yang tepat. Di Aptos, kami mengikuti proses ketat peninjauan kode wajib serta pengujian dan integrasi berkelanjutan, dikombinasikan dengan praktik terbaik ekosistem Rust. Selain aspek tradisional ini, kami juga menerapkan pengukuran berikut untuk menjaga Move tetap aman seperti yang dirancang.

Audit dan Konsultasi

Salah satu pengukuran yang paling dihormati di industri untuk mendapatkan kepercayaan pada jaringan blockchain adalah audit. Di Aptos Labs, kami mengontrak Certik ( report ) dan Holburn untuk mengaudit mesin Move Virtual. Berbagai isu kritis ditemukan, salah satunya pada kategori keamanan tipe.

Selain audit eksternal, Aptos Labs memimpin dan mengorganisir upaya audit komunitas, yang berfokus pada pemverifikasi bytecode . Insinyur dari Mysten Labs, Starcoin, dan perusahaan audit seperti MoveBit dan OtterSec bekerja sama dengan insinyur Aptos untuk upaya ini, menginvestasikan waktu audit sekitar 6 minggu orang. Hasil ini ditangkap dalam spreadsheet ini , mengacu pada lusinan dokumen yang dibuat selama audit ini. Upaya audit ini menemukan dan mengatasi banyak masalah sebelum Aptos masuk ke mainnet.

Terakhir, namun tidak kalah pentingnya, kami memiliki kerja sama yang erat dengan OtterSec . Tim OtterSec melakukan tinjauan kode manual dan mengembangkan teknologi fuzzing untuk berbagai target, mengidentifikasi beberapa masalah kritis baik dalam kode kerangka kerja Move VM dan Aptos. Mereka juga memimpin upaya untuk menambahkan logika pertahanan-dalam-kedalaman yang berlebihan ke Move VM (lihat di bawah), yang memengaruhi pekerjaan desain kami yang sedang berlangsung untuk mengurangi hilangnya kerentanan dana lebih lanjut.

Hadiah Bug

Aptos Labs menjalankan program hadiah bug . Untuk jenis bug kritis yang dapat menyebabkan hilangnya aset, hadiah hingga $1.000.000 ditawarkan. Demikian pula, crash bug dapat dihargai hingga $100.000.

Dengan program hadiah, kami telah bekerja sama dengan sekumpulan peneliti keamanan berbakat untuk menemukan dan memperbaiki bug. Beberapa dari bug tersebut berada dalam kategori kritis, sementara bug lainnya telah ditemukan crash dengan menggunakan fuzzers.

Aptos Labs telah memenuhi komitmennya dalam hadiah bug, dan hadiah yang signifikan telah dibayarkan. Selain itu, Aptos Labs terus memanfaatkan keahlian whitehats yang kami temui melalui program bounty dan berniat untuk terus bekerja sama dengan komunitas ini.

Fuzzing

Program hadiah memotivasi kami untuk berinvestasi dalam fuzzing di Aptos Labs sendiri. Kode Move VM telah dimodifikasi untuk mengimplementasikan sifat fuzzing Karat `Sewenang-wenang` pada titik-titik yang relevan, sehingga memungkinkan penggunaan 'cargo fuzz' untuk menghasilkan dan memvalidasi modul bytecode secara dinamis. Kami memiliki beberapa pekerjaan berkelanjutan yang berjalan dengan target fuzzing tersebut.

Redundansi

Salah satu cara untuk mencapai jaminan keamanan ekstra adalah melalui redundansi. Kami menambahkan apa yang disebut mode paranoid ke Move VM, yang menerapkan keamanan jenis dan aturan lain yang disebutkan di atas pada waktu eksekusi. Sementara pemverifikasi bytecode sudah memeriksa properti tersebut ketika kode memasuki sistem, mode paranoid memverifikasi ulang pemeriksaan yang sama lagi selama waktu eksekusi bytecode. Mode paranoid dibahas secara luas dalam komunitas Move, dengan insinyur Aptos yang memimpin desain. Untuk informasi lebih lanjut lihat PR ini (versi final) dan PR ini (versi menengah).

Apa berikutnya?

Di Aptos Labs, kami berkomitmen untuk membuat Move seaman mungkin, dan banyak berinvestasi di area ini. Di sini kami menjelaskan upaya berkelanjutan seputar audit, bug bounty, fuzzing, dan hardening yang dilakukan oleh kami dan mitra kami. Ke depan, kami berencana untuk terus berinvestasi di ruang ini. Kami akan terus menawarkan program bug bounty, melibatkan auditor keamanan terkemuka, dan mendorong pengembangan alat penguatan keamanan, misalnya, teknologi fuzzing.