Analisis Keamanan Kontrak NFT: Tinjauan Peristiwa Paruh Pertama 2022 dan Diskusi Masalah Umum
Pada paruh pertama tahun 2022, terjadi banyak insiden keamanan di bidang NFT, yang menyebabkan kerugian ekonomi yang besar. Menurut statistik, selama enam bulan ini terjadi 10 insiden keamanan NFT yang signifikan, dengan total kerugian mencapai 64,9 juta dolar AS. Metode serangan terutama meliputi eksploitasi kerentanan kontrak, kebocoran kunci pribadi, dan phishing. Perlu dicatat bahwa serangan phishing di platform Discord sangat merajalela, hampir setiap hari ada server yang diserang, mengakibatkan banyak pengguna menderita kerugian akibat mengklik tautan berbahaya.
Analisis Kejadian Keamanan Tipikal
Peristiwa TreasureDAO
Pada 3 Maret, platform perdagangan TreasureDAO mengalami serangan, lebih dari 100 NFT dicuri. Masalahnya terletak pada fungsi buyItem dari kontrak TreasureMarketplaceBuyer. Fungsi ini tidak memeriksa jenis token saat menghitung total harga, langsung mengalikan jumlah dengan harga satuan. Hal ini menyebabkan penyerang dapat memanggil fungsi buyItem dari kontrak TreasureMarketplace tanpa biaya pembayaran token ERC-20 sebesar 0.
Penyebab utamanya adalah kebingungan logika yang disebabkan oleh pencampuran token ERC-1155 dan ERC-721. Token ERC-721 itu sendiri tidak memiliki konsep jumlah, tetapi kontrak menghitung harga pembelian berdasarkan jumlah, dan dalam implementasi transfer akhir, tidak ada pemisahan logika.
peristiwa airdrop APE Coin
Pada 17 Maret, peretas mendapatkan lebih dari 60.000 APE Coin dari airdrop melalui pinjaman kilat. Masalahnya terletak pada kontrak airdrop AirdropGrapesToken. Kontrak menggunakan alpha.balanceOf() dan beta.balanceOf() untuk menentukan kepemilikan NFT BAYC/MAYC oleh pemanggil, tetapi cara ini hanya dapat memperoleh status kepemilikan NFT pengguna secara instan, dan status ini dapat dimanipulasi melalui pinjaman kilat. Penyerang memanfaatkan celah ini dengan meminjam NFT BAYC melalui pinjaman kilat dan mendapatkan airdrop yang sesuai.
Peristiwa Revest Finance
Pada 27 Maret, proyek Revest Finance diserang, dengan kerugian sekitar 120.000 USD. Ini adalah contoh klasik dari serangan reentrancy ERC-1155. Masalah terletak pada kontrak Revest. Ketika pengguna menggunakan depositAdditionalToFNFT() untuk menambah aset yang dijaminkan FNFT, kontrak perlu terlebih dahulu menghancurkan FNFT lama, kemudian mencetak FNFT baru. Namun, selama proses pencetakan, fungsi min() tidak memeriksa apakah FNFT yang akan dicetak sudah ada, dan variabel status fnftId diinkremen setelah fungsi _mint(). Di dalam _min() terdapat panggilan eksternal tersembunyi ERC-1155 _doSafeTransferAcceptanceCheck(), yang menyebabkan celah reentrancy.
NBA mencuri keuntungan
Pada 21 April, proyek NBA mengalami serangan. Masalah terletak pada mekanisme verifikasi tanda tangan kontrak The_Association_Sales. Terdapat dua risiko keamanan utama: penyalahgunaan tanda tangan dan penggunaan ulang tanda tangan. Penggunaan ulang tanda tangan terjadi karena kontrak tidak menyimpan tanda tangan yang telah digunakan, sehingga penyerang dapat menggunakan tanda tangan yang sama berkali-kali. Penyalahgunaan tanda tangan terjadi karena parameter info vData memory tidak melakukan verifikasi msg.sender saat meneruskan parameter, sehingga tanda tangan dapat disalahgunakan.
Akutar事件
Pada 23 April, kontrak AkuAuction dari proyek NFT Akutar terkunci karena kerentanan yang menyebabkan 11539ETH (sekitar 34 juta dolar AS) terkunci. Kontrak tersebut memiliki dua kerentanan logika:
Fungsi refund processRefunds menggunakan fungsi call untuk melakukan refund, dan hasil refund dijadikan sebagai kondisi penilaian require. Penyerang dapat dengan sengaja revert dalam fallback, yang mengakibatkan seluruh operasi refund kontrak tidak dapat dilakukan.
Dua kondisi pemeriksaan dalam fungsi pengembalian dana tidak mempertimbangkan situasi di mana pengguna dapat menawar beberapa NFT, yang menyebabkan operasi pengembalian dana pihak proyek tidak dapat dilaksanakan.
Peristiwa XCarnival
Pada 24 Juni, protokol pinjaman NFT XCarnival diserang, dan hacker memperoleh 3087 Ethereum (sekitar 3,8 juta dolar AS). Masalah terletak pada fungsi pledgeAndBorrow dari kontrak XNFT. Fungsi ini tidak memeriksa apakah alamat xToken yang diberikan oleh penyerang ada dalam daftar putih proyek saat mempertaruhkan NFT, dan tidak melakukan pemeriksaan status catatan jaminan saat meminjam, sehingga penyerang dapat menggunakan catatan jaminan yang tidak valid berulang kali untuk meminjam.
Pertanyaan Umum tentang Audit Kontrak NFT
Penandatanganan yang disalahgunakan dan digunakan kembali:
Data tanda tangan kurang verifikasi eksekusi berulang, seperti kurangnya nonce pengguna, yang mengakibatkan data tanda tangan yang dapat digunakan kembali untuk mencetak NFT.
Pemeriksaan tanda tangan tidak wajar, seperti tidak memeriksa keadaan di mana penandatangan adalah alamat nol, yang menyebabkan pengguna mana pun dapat melakukan pencetakan koin melalui pemeriksaan.
Celah logika:
Administrator kontrak dapat mencetak koin dengan cara khusus tanpa batasan jumlah total, mengakibatkan jumlah NFT yang sebenarnya melebihi yang diperkirakan.
Pada lelang NFT, pemenang dapat menggunakan serangan ketergantungan urutan transaksi untuk mengubah harga tawaran dan mendapatkan NFT dengan harga rendah.
Serangan Reentrancy ERC721/ERC1155:
Menggunakan fungsi pemberitahuan transfer (fungsi onERC721Received), kontrak NFT mengirim panggilan ke kontrak tujuan transfer yang dapat menyebabkan serangan reentrancy.
Ruang lingkup otorisasi terlalu besar:
Memerlukan otorisasi _operatorApprovals saat staking atau lelang, bukan otorisasi token tunggal, meningkatkan risiko pencurian NFT.
Manipulasi harga:
Harga NFT bergantung pada jumlah token yang dimiliki oleh kontrak tertentu, penyerang dapat memanfaatkan pinjaman kilat untuk meningkatkan harga token, yang mengakibatkan NFT yang dipertaruhkan dilikuidasi secara abnormal.
Mengingat seringnya kejadian keamanan kontrak NFT, dan celah yang ditemukan selama proses audit seringkali sesuai dengan serangan yang sebenarnya, mencari perusahaan keamanan profesional untuk melakukan audit menyeluruh terhadap kontrak NFT menjadi sangat penting.
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
16 Suka
Hadiah
16
6
Posting ulang
Bagikan
Komentar
0/400
BrokeBeans
· 23jam yang lalu
Kontrak bermasalah lagi, siapa yang berani membeli?
Lihat AsliBalas0
CryptoNomics
· 08-13 15:20
*sigh* menerapkan analisis rantai Markov, peretasan ini menunjukkan 73,4% korelasi dengan audit kontrak yang buruk. secara statistik tak terhindarkan.
Lihat AsliBalas0
blockBoy
· 08-13 15:19
Wah, setiap hari ada celah.
Lihat AsliBalas0
ILCollector
· 08-13 15:17
Aduh, puluhan juta dolar begitu saja menguap, saya benar-benar merasa sakit hati untuk saudara yang mengalami Cut Loss.
Analisis Risiko Keamanan Kontrak NFT: Tinjauan Peristiwa Paruh Pertama 2022 dan Poin Audit
Analisis Keamanan Kontrak NFT: Tinjauan Peristiwa Paruh Pertama 2022 dan Diskusi Masalah Umum
Pada paruh pertama tahun 2022, terjadi banyak insiden keamanan di bidang NFT, yang menyebabkan kerugian ekonomi yang besar. Menurut statistik, selama enam bulan ini terjadi 10 insiden keamanan NFT yang signifikan, dengan total kerugian mencapai 64,9 juta dolar AS. Metode serangan terutama meliputi eksploitasi kerentanan kontrak, kebocoran kunci pribadi, dan phishing. Perlu dicatat bahwa serangan phishing di platform Discord sangat merajalela, hampir setiap hari ada server yang diserang, mengakibatkan banyak pengguna menderita kerugian akibat mengklik tautan berbahaya.
Analisis Kejadian Keamanan Tipikal
Peristiwa TreasureDAO
Pada 3 Maret, platform perdagangan TreasureDAO mengalami serangan, lebih dari 100 NFT dicuri. Masalahnya terletak pada fungsi buyItem dari kontrak TreasureMarketplaceBuyer. Fungsi ini tidak memeriksa jenis token saat menghitung total harga, langsung mengalikan jumlah dengan harga satuan. Hal ini menyebabkan penyerang dapat memanggil fungsi buyItem dari kontrak TreasureMarketplace tanpa biaya pembayaran token ERC-20 sebesar 0.
Penyebab utamanya adalah kebingungan logika yang disebabkan oleh pencampuran token ERC-1155 dan ERC-721. Token ERC-721 itu sendiri tidak memiliki konsep jumlah, tetapi kontrak menghitung harga pembelian berdasarkan jumlah, dan dalam implementasi transfer akhir, tidak ada pemisahan logika.
peristiwa airdrop APE Coin
Pada 17 Maret, peretas mendapatkan lebih dari 60.000 APE Coin dari airdrop melalui pinjaman kilat. Masalahnya terletak pada kontrak airdrop AirdropGrapesToken. Kontrak menggunakan alpha.balanceOf() dan beta.balanceOf() untuk menentukan kepemilikan NFT BAYC/MAYC oleh pemanggil, tetapi cara ini hanya dapat memperoleh status kepemilikan NFT pengguna secara instan, dan status ini dapat dimanipulasi melalui pinjaman kilat. Penyerang memanfaatkan celah ini dengan meminjam NFT BAYC melalui pinjaman kilat dan mendapatkan airdrop yang sesuai.
Peristiwa Revest Finance
Pada 27 Maret, proyek Revest Finance diserang, dengan kerugian sekitar 120.000 USD. Ini adalah contoh klasik dari serangan reentrancy ERC-1155. Masalah terletak pada kontrak Revest. Ketika pengguna menggunakan depositAdditionalToFNFT() untuk menambah aset yang dijaminkan FNFT, kontrak perlu terlebih dahulu menghancurkan FNFT lama, kemudian mencetak FNFT baru. Namun, selama proses pencetakan, fungsi min() tidak memeriksa apakah FNFT yang akan dicetak sudah ada, dan variabel status fnftId diinkremen setelah fungsi _mint(). Di dalam _min() terdapat panggilan eksternal tersembunyi ERC-1155 _doSafeTransferAcceptanceCheck(), yang menyebabkan celah reentrancy.
NBA mencuri keuntungan
Pada 21 April, proyek NBA mengalami serangan. Masalah terletak pada mekanisme verifikasi tanda tangan kontrak The_Association_Sales. Terdapat dua risiko keamanan utama: penyalahgunaan tanda tangan dan penggunaan ulang tanda tangan. Penggunaan ulang tanda tangan terjadi karena kontrak tidak menyimpan tanda tangan yang telah digunakan, sehingga penyerang dapat menggunakan tanda tangan yang sama berkali-kali. Penyalahgunaan tanda tangan terjadi karena parameter info vData memory tidak melakukan verifikasi msg.sender saat meneruskan parameter, sehingga tanda tangan dapat disalahgunakan.
Akutar事件
Pada 23 April, kontrak AkuAuction dari proyek NFT Akutar terkunci karena kerentanan yang menyebabkan 11539ETH (sekitar 34 juta dolar AS) terkunci. Kontrak tersebut memiliki dua kerentanan logika:
Peristiwa XCarnival
Pada 24 Juni, protokol pinjaman NFT XCarnival diserang, dan hacker memperoleh 3087 Ethereum (sekitar 3,8 juta dolar AS). Masalah terletak pada fungsi pledgeAndBorrow dari kontrak XNFT. Fungsi ini tidak memeriksa apakah alamat xToken yang diberikan oleh penyerang ada dalam daftar putih proyek saat mempertaruhkan NFT, dan tidak melakukan pemeriksaan status catatan jaminan saat meminjam, sehingga penyerang dapat menggunakan catatan jaminan yang tidak valid berulang kali untuk meminjam.
Pertanyaan Umum tentang Audit Kontrak NFT
Penandatanganan yang disalahgunakan dan digunakan kembali:
Celah logika:
Serangan Reentrancy ERC721/ERC1155:
Ruang lingkup otorisasi terlalu besar:
Manipulasi harga:
Mengingat seringnya kejadian keamanan kontrak NFT, dan celah yang ditemukan selama proses audit seringkali sesuai dengan serangan yang sebenarnya, mencari perusahaan keamanan profesional untuk melakukan audit menyeluruh terhadap kontrak NFT menjadi sangat penting.