Apa itu Smart Contract Audit?

AnggaDanarP
7 min readJul 10, 2023

--

Photo by Anne Nygård on Unsplash

Seperti yang kita tahu smart contract menjadi sebuah teknologi yang cukup dibicarakan sehingga banyak programmer berbonodng-bondong belajar untuk menulis smart contract. Smart contract yang terkenal akan sistem keamanan dan immutability atau data transaksinya yang tidak bisa dirubah menjadi hal yang menarik untuk dipelajari. Namun tak heran ada orang yang memanfaatkan kelebihan smart contract tersebut untuk keuntungan mereka sendiri yang mengakibatkan developer pembuat smart contract rugi besar atau istilah diretas.

Maka dari itu munculah konsep baru dalam segi kemanan sebagai tindakan preventif untuk smart contract yang akan dideploy pada jaringan blockchain yaitu “Auditing” untuk menghindari hal-hal yang tidak diinginkan serta menghindari kode program yang buruk.

Audit smart contract melibatkan analisis yang terperinci terhadap kode program kontrak untuk mengidentifikasi masalah keaman dan pengkodean yang tidak benar dan tidak efisien. Proses audit merupakan bagian yang terpenting karena untuk memastikan keamanan dan keandalan smart contract sebagai aplikasi yang berinteraksi dengan jaringan blockchain.

Banyak developer menyebutkan bahwa dengan kita menggunakan smart contract, kode program yang didistribusikan bisa disebut dengan hukum. Dengan kata lain tidak ada ruang kesalahan atau error yang dapat diberikan. Kontrak akan berjalan sesuai dengan kode yang dituliskan dan saat smart contract telah digunakan tidak ada entitas yang dapat merubah bahkan menghapus kode programnya. Jika memang ada kode program yang ingin diperbaiki maka developer harus melakukan deploy ulang dengan smart contract yang baru yang tentunya akan memakan banyak biaya dan waktu. Sehingga auditor sangat membantu memastikan bahwa pengkodena aman dan terlindungi.

Photo by Austin Distel on Unsplash

Seberapa Penting Smart Contract Audit

Walaupun teknologi blockchain aman, aplikasi blockchain memiliki kerentanan keamanan. Salah satu insiden keamanan paling terkenal yang melibatkan smart contract adalah pencurian senilai $50 juta pada tahun 2016. Para peretas mengeksploitasi kode yang rentan pada sebuah dana investasi blockchain, DAO, yang dikendalikan melalui smart contract. Sebuah tim audit keamanan smart contract dapat membantu untuk mengurangi risiko tersebut.

Biaya yang dibutuhkan untuk membuat dan menggunakan smart contract adalah sekitar $7.000 hingga $45.000. Untuk sebuah kontrak yang akan digunakan oleh sebuah organisasi besar, harganya dapat mencapai sekitar $100.000. Metodologi audit smart contract menggabungkan analisis manual baris demi baris dengan analisis otomatis menggunakan rangkaian alat uji. Audit dapat memberikan ketenangan pikiran bahwa keamanan blockchain Anda ketat sebelum Anda melanjutkan ke implementasi smart contract. Audit juga dapat meyakinkan investor dan pelanggan bahwa kontrak akan berjalan sesuai dengan rencana dan aset keuangan mereka aman.

Dalam mengembangkan aplikasi blockchain, kode bebas bug bukanlah sebuah kebaikan, melainkan sebuah keharusan. Dengan laporan terperinci, Anda dapat yakin bahwa keamanan smart contract Anda baik dan aplikasi siap untuk digunakan.

Photo by Alexander Mils on Unsplash

Bagaimana Cara Kerja Audit?

Audit smart contract merupakan sebuah proses yang komprehensif. Smart contract dapat terdiri dari ribuan atau puluhan ribu baris kode. Bahkan masalah yang jelas terkadang hilang dalam jumlah yang sangat banyak. Alat pengujian dan auditor manusia harus menemukan kesalahan dan potensi kerentanan dalam pengkodean yang tertulis dan apa yang hilang. Mari kita uraikan proses audit keamanan smart contract.

Photo by freestocks on Unsplash

Dokumentasi

Langkah pertama dari audit adalah mengumpulkan semua dokumentasi yang relevan. Ini termasuk buku putih, basis kode, dan materi lainnya yang terkait dengan smart contract. Dengan membaca dokumentasi desain, auditor dapat memperoleh pemahaman tingkat tinggi mengenai aplikasi blockchain.

Tanpa akses ke dokumentasi, auditor tidak akan memiliki cara untuk mengetahui apa yang dirancang untuk dilakukan oleh smart contract. Dokumentasi, termasuk spesifikasi lengkap untuk proyek, sangat penting untuk proses audit. Agar auditor dapat melihat kode berfungsi sebagaimana mestinya, mereka harus mengetahui apa yang ingin dicapai oleh kode tersebut.

Pada tahap ini, pengembang dan auditor harus menyetujui pembekuan kode. Tidak ada lagi kode yang akan ditulis, atau audit kontrak tidak akan mempertimbangkan kode apa pun yang ditulis setelah titik itu.

Menjalankan Test Menggunakan Tools

Setelah auditor memiliki pemahaman yang baik tentang kode dan aplikasi, mereka akan menjalankan pengujian otomatis dengan berbagai alat. Sejauh ini, ini merupakan cara termudah untuk mendeteksi potensi masalah. Auditor akan melakukan berbagai langkah, termasuk pengujian integrasi yang mengeksplorasi sejumlah besar kode, pengujian unit yang melihat fungsi individu, dan pengujian penetrasi untuk menyelidiki kerentanan keamanan.

Cakupan baris adalah cara yang bagus untuk mengukur seberapa baik pengujian mencakup kode. Cakupan baris yang tinggi menunjukkan bahwa pengujian melakukan pekerjaan yang baik dalam mengeksplorasi semua baris kode dalam aplikasi. Setelah pengujian otomatis selesai, auditor akan beralih ke pengujian manual.

Pengujian Manual

Meskipun pengujian otomatis dapat mengidentifikasi kemungkinan kerentanan dalam kode, namun pengujian tersebut tidak dapat memahami apa yang ingin dicapai oleh pengembang blockchain dengan aplikasinya. Mereka juga dapat memberikan hasil negatif yang salah. Hal ini menunjukkan mengapa peninjauan kode secara manual sangatlah penting. Dengan membaca kode dan memahami bagaimana semuanya cocok satu sama lain, auditor mengidentifikasi potensi masalah yang terlewatkan oleh pengujian otomatis.

Ketika tim audit menganalisis kode, mereka dapat merujuk kembali ke spesifikasi proyek dan dokumentasi pendukung lainnya untuk melihat apakah kode berfungsi sebagaimana mestinya. Campuran pengujian manual dan otomatis sangat penting untuk memastikan tidak ada yang lolos dari celah-celah.

Resolve issues

Setelah auditor menemukan masalah dalam kode, mereka akan bekerja sama dengan tim proyek untuk menyelesaikannya. Proses ini bisa jadi panjang dan sulit, tetapi sangat penting untuk keberhasilan proyek. Dengan menyelesaikan semua masalah, Anda dapat memastikan bahwa smart contract Anda siap untuk digunakan.

Dalam hal aplikasi blockchain, keamanan adalah hal yang paling penting. Oleh karena itu, sangat penting untuk memiliki tim auditor yang berpengalaman untuk membantu mengidentifikasi dan memitigasi potensi masalah pada kode Anda. Sebelum memulai proses penerapan, pastikan bahwa Anda telah menyediakan waktu yang cukup untuk melakukan audit keamanan secara menyeluruh.

Audit Report

Setelah audit selesai, auditor akan memberikan laporan yang merinci temuan mereka. Laporan ini akan menjadi sumber daya yang berharga bagi tim proyek dan siapa pun yang terlibat dalam aplikasi. Laporan ini akan membantu mengidentifikasi potensi masalah yang mungkin terlewatkan dan memberikan peta jalan untuk menyelesaikannya.

Durasi Audit Smart Contract

Waktu yang dibutuhkan untuk menyelesaikan audit keamanan smart contract tergantung pada ukuran dan kompleksitas kode. Umumnya, tim audit dapat menyelesaikan laporan terperinci dalam beberapa hari. Akan tetapi, aplikasi yang lebih besar mungkin membutuhkan waktu lebih lama untuk diaudit. Menyediakan waktu untuk audit keamanan secara menyeluruh sangatlah penting untuk kesuksesan aplikasi blockchain Anda.

Kerentanan Smart Contract yang Umum

Berikut ini adalah kerentanan umum yang menjadi bagian dari daftar periksa audit smart contract saat ini.

Photo by Azamat E on Unsplash

Reentrancy Issues

Serangan reentrancy dapat terjadi ketika fungsi smart contract memanggil kontrak eksternal yang tidak dipercaya, memungkinkan kontrak eksternal tersebut untuk menguras dana pengguna atau melakukan tindakan jahat lainnya dengan memanggil kontrak asli secara rekursif.

Integer Overflow dan Underflow

Integer overflow atau underflow dapat terjadi ketika smart contract melakukan operasi aritmatika yang menghasilkan angka yang melebihi kapasitas penyimpanan saat ini, yang mengarah ke perhitungan yang salah.

Frontrunning Opportunities

Kode yang tidak terstruktur dengan baik dapat mengungkapkan informasi tentang pembelian di masa depan oleh dApp, yang dapat digunakan oleh pengguna lain untuk mengunci keuntungan yang dijamin dengan mengorbankan protokol.

Replay Attack

Serangan replay terjadi ketika data ditunda atau diulang secara jahat untuk menumbangkan penerima, terutama selama peristiwa hard fork di mana pesan pada sistem yang diperbarui digunakan untuk mengekstrak dana dari sistem lama.

Random Number Vulnerability

Jika sebuah dApp mengunggulkan nomor acak dengan nomor yang diketahui publik, seperti hash blok, ini rentan terhadap eksploitasi, itulah sebabnya mengapa banyak protokol yang menggunakan Chainlink VRF untuk keacakan.

Function Visibility Errors

Fungsi yang dimaksudkan untuk menjadi privat harus didefinisikan sebagai privat, karena properti visibilitas default di Solidity adalah publik. Jika bersifat publik, siapa pun dapat memanggil fungsi tersebut.

Centralization Risks

Sentralisasi memperkenalkan satu titik kegagalan yang dapat merusak keamanan protokol jika satu kunci privat atau yang serupa disalahgunakan. Penguncian waktu dan pemberian hak istimewa kepada DAO adalah teknik umum yang menangani risiko sentralisasi.

Unlocked Compiler Version

Ada beberapa versi kompiler untuk Solidity. dApps harus mengunci versi kompiler yang mereka gunakan sehingga pengguna tidak dapat mengkompilasinya dengan versi yang berbeda, yang dapat menyebabkan bytecode yang berbeda dan komplikasi yang tidak diinginkan.

Kesimpulan

Pada beberapa project, smart contract audit masih dianggap sepele karena menganggap bahwa orang yang pemangku tertinggi dalam sebuah project sangat percaya kepada developer yang menulis smart contract. Selain itu smart contract developer juga merasa yakin bahwa apa yang dia kerjakan sesuai dengan kebutuhan alur dari project. Meskipun mempunyai harga yang cukup mahal untuk menyewa jasa dari auditor smart contract, hal ini cukup berimbas pada user dimana mereka akan percaya dengan smart contract yang telah didistribusikan serta tentunya menghindari dari peretasan atau kerugian smart contract oleh orang yang tidak bertanggung jawab.

--

--

AnggaDanarP
0 Followers

just a stupid people trying to be cool from learning something new.