1. Beranda
  2. Glosarium
  3. Audit smart contract

Audit smart contract

Dikenal juga sebagai Audit keamanan · Audit DeFi

Definisi

Audit smart contract adalah tinjauan keamanan independen atas kode sebuah protokol untuk mencari kerentanan sebelum, atau tidak lama setelah, protokol itu beroperasi. Audit menurunkan risiko dalam cakupan dan tanggal yang disebutkan, tetapi bukan janji bahwa kodenya bebas bug.

Smart contract adalah perangkat lunak yang tidak biasa. Ia memegang uang secara langsung, berjalan di ruang publik tempat siapa pun dapat mempelajarinya, dan setelah di-deploy sulit atau mustahil diubah. Satu baris yang terlewat dapat membuat penyerang menguras sebuah protokol dalam satu transaksi. Audit adalah pertahanan utama sebelum peluncuran: para spesialis membaca kode sebelum penyerang melakukannya.

Apa yang dicari auditor

  • Kesalahan logika: kode yang melakukan apa yang tertulis tetapi bukan apa yang dimaksudkan, seperti rumus imbalan yang membayar dua kali.
  • Kontrol akses: fungsi yang dapat dipanggil siapa saja padahal seharusnya hanya untuk administrator.
  • Reentrancy: panggilan eksternal yang memungkinkan penyerang masuk kembali ke sebuah fungsi sebelum panggilan pertama selesai, bug di balik peretasan The DAO pada 2016.
  • Manipulasi harga: logika yang memercayai harga yang dapat digeser dalam satu transaksi, sering kali melalui oracle yang lemah.
  • Desain ekonomi: insentif yang dapat dimanfaatkan pihak bermodal besar bahkan ketika setiap baris kode bekerja sesuai tulisannya.

Auditor menggabungkan tinjauan manual dengan alat otomatis dan, semakin sering, verifikasi formal, yang membuktikan secara matematis bahwa kode memenuhi spesifikasi tertulis.

Dua model audit

Dalam audit firma tradisional, tim kecil insinyur keamanan mempelajari basis kode selama periode tetap lalu menyerahkan laporan. Dalam audit kompetitif, banyak peneliti independen meninjau kode yang sama sekaligus dan dibayar sesuai temuan yang mereka dapatkan. Kedua model cenderung menangkap hal yang berbeda, sehingga protokol sering memakai keduanya.

Cara membaca laporan audit

Mulailah dengan cakupannya: kontrak mana, versi kode mana, dan tanggal berapa. Audit atas versi satu tidak banyak berarti untuk versi dua. Lalu baca temuan berdasarkan tingkat keparahan. Temuan kritis dan tinggi dapat menyebabkan hilangnya dana; temuan sedang biasanya membutuhkan kondisi tertentu; temuan rendah dan informasional berkaitan dengan kebersihan kode. Untuk setiap temuan, periksa apakah ditandai sudah diperbaiki, diakui, atau dipersoalkan, dan apakah perbaikannya ditinjau ulang.

Contoh sederhana

Sebuah laporan mencantumkan satu temuan tingkat tinggi: kesalahan pembulatan memungkinkan pengguna menarik sedikit lebih banyak daripada yang dimasukkannya, dan jika diulang di ribuan transaksi dapat menguras sebuah vault. Tim memperbaikinya sebelum peluncuran dan auditor mengonfirmasi perbaikannya. Tidak ada pihak luar yang pernah mendengar tentang bug itu. Itulah audit yang menjalankan tugasnya, dan itulah alasan bagian temuan lebih penting daripada logo di sampul.

Risiko dan batasan

Audit adalah snapshot. Kode berubah setelah tinjauan, kontrak baru berinteraksi dengannya, dan teknik serangan terus berkembang. Sejumlah eksploit DeFi yang mahal menimpa protokol yang sudah diaudit, sering kali melalui kode di luar cakupan atau melalui cara beberapa protokol berinteraksi. Audit juga tidak dapat menilai bagian offchain dari sebuah sistem, seperti cara kunci dikelola atau dari apa cadangan terdiri. Itulah sebabnya audit berguna terutama sebagai satu lapisan di antara beberapa lapisan: bug bounty yang terus memberi imbalan kepada peneliti setelah peluncuran, pemantauan runtime yang mengawasi transaksi secara langsung, dan bukti cadangan untuk aset itu sendiri.

Bagaimana Tori Finance menggunakannya

Smart contract Tori Finance diaudit oleh Sherlock dan Nethermind. Audit adalah satu lapisan keamanan Tori Finance, bersama pemantauan runtime oleh Hypernative dan bukti cadangan oleh Accountable.

Pertanyaan yang sering diajukan

Apakah protokol yang sudah diaudit masih bisa diretas?

Ya. Audit mencakup kode tertentu pada waktu tertentu. Perubahan setelahnya, kode di luar cakupan, interaksi dengan protokol lain, dan teknik serangan baru semuanya dapat menimbulkan kerugian.

Apa arti kritis, tinggi, sedang, dan rendah dalam audit?

Itu adalah peringkat temuan berdasarkan dampak dan kemungkinan terjadinya. Masalah kritis dan tinggi dapat menyebabkan hilangnya dana atau protokol yang rusak, masalah sedang membutuhkan kondisi tertentu, dan temuan rendah serta informasional bersifat minor atau berkaitan dengan kualitas kode.

Berapa lama audit smart contract berlangsung?

Tergantung ukuran dan kompleksitas kodenya. Kontrak kecil mungkin butuh beberapa hari; protokol besar bisa butuh beberapa minggu, biasanya diikuti tinjauan yang lebih singkat atas perbaikannya.

Sumber

Ditulis oleh tim Tori Finance. Bukan saran investasi. Imbal hasil dapat berubah; modal Anda berisiko.