Blog

Diterjemah secara automatik · Baca dalam bahasa Inggeris

Modul SSO 2 - Kelemahan Kontrak Pintar: Pandangan Mendalam tentang Serangan Kemasukan Semula

Kontrak pintar menawarkan ketelusan tetapi membawa risiko. Artikel ini mendedahkan kelemahan seperti Kemasukan Semula, dengan kerugian $150M DAO sebagai contoh. Limpahan Integer menyebabkan kemunduran $900M BeautyChain. DAOMaker kehilangan $4M akibat kelemahan Kawalan Akses. Serangan FlashLoan menyaksikan Harves Finance kehilangan $38M.

Oleh Markos Mebellis

Modul SSO 2 - Kelemahan Kontrak Pintar: Pandangan Mendalam tentang Serangan Kemasukan Semula
Pada halaman ini

Kontrak pintar merevolusikan industri global dengan kecekapan, ketelusan dan ciri tidak boleh ubahnya. Namun, reka bentuk terbuka dan automatiknya juga mendedahkannya kepada risiko. Untuk memaksimumkan potensinya sambil meminimumkan ancaman, adalah penting untuk memahami kelemahannya dan kemungkinan laluan serangan. Membina dan menyelenggara kontrak ini memerlukan perhatian teliti dan pematuhan amalan terbaik. Artikel ini menyelami kelemahan biasa, menggambarkannya dengan kes dunia sebenar untuk meningkatkan kefahaman. Mari lihat artikel berikut, ihsan Salus Security.

Kelemahan Utama:

**Kemasukan Semula:** Di sini, penyerang mengeksploitasi jurang, memasuki semula fungsi sebelum operasi utama selesai atau nilai dikemas kini.

Kemasukan Semula Fungsi Tunggal: Ini berlaku apabila kontrak berinteraksi dengan kontrak nakal, membenarkan kontrak tersebut memasuki semula sesuatu fungsi. Contohnya, kontrak berniat jahat boleh berulang kali memasuki semula fungsi 'withdrawBalance', menyedut lebih banyak ether sebelum baki dikemas kini.

Serangan Ketara:

  • The DAO (2016): Selepas mengumpul $150 juta, ia digodam akibat kelemahan pengkodan. Ini menyebabkan perpecahan dalam rangkaian Ethereum.
  • PolyDex (2021): Kehilangan $500k akibat serangan reentrancy pada Kontrak Pintar PLX Locker.
  • Bacon Protocol (2022): Mengalami kerugian $1M akibat pepijat reentrancy dalam fungsi lend().
  • Lendf.Me (2020): Kehilangan kira-kira $24.7 juta merentas pelbagai mata wang kripto.

**Kemasukkembalian Silang Fungsi:**Timbul daripada keadaan dikongsi antara fungsi berbeza dan perlindungan kemasukkembalian yang lemah. Contoh 'balances' di atas menunjukkan bahawa walaupun 'withdrawAll' mempunyai perlindungan, penyerang masih boleh mengeksploitasi fungsi 'transfer'.

Insiden Terkenal:

  • DFX Finance (2022): Kehilangan lebih $7 juta akibat serangan yang mengeksploitasi fungsi tanpa perlindungan kemasukkembalian.
  • Hundred Finance (2022): Kehilangan kira-kira $6.5 juta selepas serangan kemasukkembalian mengeksploitasi fungsi borrowFresh.
  • Fei Protocol (2022): Kehilangan kira-kira $80 juta akibat serangan yang mengeksploitasi kelemahan Reentrancy.

**Reentrancy Merentas Kontrak:** Berpunca daripada keadaan dikongsi merentas kontrak berbeza dan urutan pengubahsuaian pemboleh ubah yang salah. Walaupun fungsi mempunyai perlindungan, fungsi lain seperti 'burnAccount' masih boleh dieksploitasi.

Serangan Terkemuka:

  • Rari Capital (2021): Kehilangan kira-kira $10 juta (~2600 ETH) dalam masa kurang sejam.
  • ValueDefi (2021): Kehilangan 5345.314 WBNB akibat pengiraan saham tidak sah yang bergantung pada data luaran.

Reentrancy Baca Sahaja:

Kerentanan kemasukan semula baca sahaja mengeksploitasi fungsi yang, walaupun tidak mengubah keadaan kontrak, masih boleh menghasilkan output yang salah apabila keadaan tidak konsisten.

Serangan Penting:

  • QuickSwap (2022): Penyerang menyalahgunakan pinjaman kilat untuk mengubah harga spot aset, menipu 138 ETH dan 700 token MATIC. Ini berlaku akibat kelemahan dalam oracle Curve LP.
  • dForce (2023): Pepijat kemasukan semula baca sahaja terdapat dalam kod yang mengakses oracle harga pada rantaian Arbitrum dan Optimism dengan Curve Finance.
  • Sentimente (2023): Serangan yang mengeksploitasi kelemahan kemasukan semula baca sahaja menyebabkan kecurian $1 juta. Nasib baik, 90% telah dipulangkan oleh pelaku.
  • Sturdy (2023): Kehilangan kira-kira 442 ETH akibat isu kebolehmulihan baca sahaja Balancer di mana harga B-stETH-STABLE telah diusik.

Pencegahan Kerentanan Kebolehmulihan:

  1. Sentiasa patuhi corak semak-kesan-interaksi.
  2. Gunakan perlindungan kemasukan semula untuk semua operasi sensitif.
  3. Kendalikan setiap panggilan luaran dengan teliti.

Limpahan Integer:

Apabila pengiraan melebihi had, ia melimpah, sering menghasilkan nilai sama ada terlalu kecil atau terlalu besar.

Serangan Ilustratif:

  • BeautyChain (2018): Penyerang meraih 10^58 BEC melalui limpahan integer, melepaskan sejumlah besar $900 juta.
  • Poolz (2023): Menyebabkan kerugian kira-kira $665,000 merentas rantaian Ethereum, Binance dan Polygon.

Langkah Balas Limpahan Integer:

  1. Gunakan kaedah pengiraan selamat seperti pustaka safeMath.
  2. Utamakan semakan sempadan untuk memastikan hasil kekal dalam julat.
  3. Gunakan versi pengkompil solidity 0.8.0 atau lebih baharu untuk pengesanan limpahan terbina dalam.

Kawalan Akses:
Kerentanan kawalan akses timbul daripada ketiadaan kekangan akses yang ketat pada fungsi yang mengendalikan operasi penting.

  • Serangan Terkemuka:
  • DAOMaker (2021): Sebanyak ~$4M disedut keluar selepas init fungsi dibiarkan terdedah.
  • GymNetwork (2022): Penggodam mengambil kesempatan daripada kelemahan pengesahan dalam depositFromOtherContract(), membolehkan penambahan baki secara haram tanpa sebarang pembayaran sebenar. Kerugian? Kira-kira 2,475.91 WBNB.
  • Tempdao (2023): Pendekatan kawalan akses yang longgar untuk fungsi migrateStake menyebabkan kerugian melebihi $2.34 juta.

Kerentanan Kawalan Akses

  • Penerangan: Kerentanan yang timbul akibat mekanisme sekatan yang tidak mencukupi yang mengawal akses dan keistimewaan kepada operasi tertentu dalam sesuatu sistem.

Langkah Pencegahan:

  1. Semakan Kebenaran Ketat: Sentiasa kuatkuasakan protokol kebenaran yang ketat untuk fungsi, terutamanya yang mengendalikan operasi sensitif.
  2. Mekanisme Berbilang Tandatangan: Untuk tugasan yang memerlukan keputusan bersama, gunakan protokol berbilang tandatangan yang memerlukan berbilang kelulusan sebelum melaksanakan operasi sensitif.

Vektor Serangan Lazim

  • Penerangan: Pelbagai kaedah atau saluran yang digunakan oleh penyerang untuk mengeksploitasi kelemahan dalam sistem, terutamanya dalam kontrak pintar.

Contoh Ketara:

  • Serangan FlashLoan: Mengeksploitasi ciri pinjaman segera sistem kewangan terdesentralisasi untuk melaksanakan aktiviti berniat jahat.
  • Front-Running: Penyerang mengetahui transaksi tertunggak pengguna lain dan bertindak ke atasnya dengan menawarkan yuran gas yang lebih tinggi.

Serangan FlashLoan

  • Penerangan: Walaupun pada asasnya bukan serangan, FlashLoan ialah ciri DeFi yang membolehkan pengguna meminjam jumlah besar secara serta-merta tanpa cagaran. Ia telah dieksploitasi akibat kelemahan logik dalam interaksi dan hubungan kontrak.

Serangan Ketara:

  1. Harves Finance (2020.10.26): Mengakibatkan kerugian $38 juta.
  2. InverseFinance (2022.6.16): Menyebabkan kerugian 53.2445 WBTC dan 99,976.29 USDT.
  3. NewFreeDAO (2022.9.8): Mengalirkan 4,481 WBNB, bersamaan kira-kira $1.25 juta.
  4. Lodestar (2022.12.11): Dieksploitasi melalui manipulasi harga oracle.
  5. 0vix (2023.4.28): Mengakibatkan kerugian $2 juta pada rantaian Polygon.

Cadangan Pencegahan:

  1. Kenali ciri Flashloan semasa pembangunan projek.
  2. Untuk penentuan harga yang tepat, gunakan purata berwajaran masa atau berbilang oracle.

Front-running

  • Penerangan: Penyerang mengetahui transaksi pengguna lain daripada memPool dan mengambil kesempatan dengan menawarkan yuran gas yang lebih tinggi.

Serangan Ketara:

  1. Sushi Badger Digg (2021.1.25): Mengakibatkan kerugian sebanyak 81.68 ETH.
  2. Kolam Sushiswap Ape-ETH (2022.5.17): Penyerang memperoleh keuntungan kira-kira 0.3 ETH.
  3. Uniswap (2023.4.2): Menyebabkan kerugian sekitar $25 juta melalui serangan sandwic.

Cadangan Pencegahan:

  1. Gunakan perlindungan slippage semasa berdagang.
  2. Laksanakan dagangan pada waktu bukan puncak, terutamanya dalam pasaran yang tidak menentu.
  3. Gunakan FlashBot rpc oleh 1inch untuk menghantar dagangan terus kepada pelombong, sekali gus memintas memPool.

Ringkasan

Tahniah! Anda telah menamatkan Modul 2 - Kelemahan Kontrak Pintar: Tinjauan Mendalam tentang Serangan Reentrancy dan Eksploitasi Biasa

Mari semak pembelajaran anda:

Kerentanan Kemasukan Semula - Penyerang mengeksploitasi jurang, memasuki semula fungsi sebelum ia selesai sepenuhnya.

  • Kemasukan Semula Fungsi Tunggal: Kontrak berniat jahat memasuki semula fungsi dalam kontrak lain.
  • Kemasukan Semula Merentas Fungsi: Keadaan dikongsi antara fungsi berbeza dieksploitasi akibat perlindungan kemasukan semula yang lemah.
  • Kemasukan Semula Merentas Kontrak: Mengeksploitasi keadaan dikongsi merentas kontrak berbeza.
  • Kemasukkepalaan Baca Sahaja: Mengeksploitasi fungsi yang menghasilkan output tersilap apabila keadaan tidak konsisten.

Limpahan Integer - Pengiraan melebihi had ditetapkan, menghasilkan nilai ekstrem.

Kerentanan Kawalan Akses - Berpunca daripada ketiadaan kekangan akses yang ketat pada fungsi penting.

Vektor Serangan Biasa - Kaedah yang digunakan oleh penyerang untuk mengeksploitasi kelemahan sistem.

**Serangan FlashLoan **- Ciri DeFi yang membenarkan pinjaman besar secara segera tanpa cagaran tetapi dieksploitasi disebabkan kelemahan logik.

Serangan Front-running- Penyerang mengetahui transaksi yang belum selesai dan mengambil kesempatan dengan menawarkan yuran gas yang lebih tinggi.

Artikel ini dibawakan kepada anda oleh:

Ringkasan — ilustrasi