Reentrancy Dipecahkan - Kebocoran Kontrak Pintar yang Masih Menguras Jutaan Pada 2026, dan Pola Checks-Effects-Interactions yang Menghentikannya dalam Kod
Reentrancy bukanlah sihir. Ia adalah kesilapan urutan: kontrak anda mengemas kini keadaannya SETELAH ia membuat panggilan luaran, bukan sebelumnya, dan penyerang memanggil semula semasa jurang itu. Perbaiki urutannya, dan kecacatan itu hilang.
DAO kehilangan sekitar 3.6 juta ETH (kira-kira $60 juta, sekitar 5% daripada semua ETH yang wujud ketika itu) akibat kesilapan tepat ini pada 17 Jun 2016. Akibatnya, Ethereum terpecah menjadi ETH dan ETC.
Sepuluh tahun kemudian, ia masih menguras dana. Solv Protocol kehilangan $2.73 juta akibat reentrancy pada 5 Mac 2026, dan sekitar $52 juta dicuri daripada pelbagai protokol onchain pada Mei 2026 (DeFiLlama melalui CryptoTimes, 31 Mei 2026).
Pola rentan: baca baki, hantar ETH dengan panggilan aras rendah, KEMUDIAN tetapkan baki kepada sifar. Fungsi receive() penyerang memasuki semula withdraw() sebelum sifar itu sampai, dan berulang sehingga kontrak menjadi kosong.
Dua penyelesaian, digunakan bersama:
Checks-Effects-Interactions. Sahkan, kemas kini SEMUA keadaan, kemudian buat panggilan luaran TERAKHIR. Pindahkan balances[msg.sender] = 0 ke atas panggilan, maka panggilan re-entrant akan membaca sifar dan membatalkan.
Pengawal nonReentrant OpenZeppelin. Sebuah mutex penyimpanan (NOT_ENTERED ke ENTERED) yang membatalkan pada masuk semula. Gunakan ia DAN CEI, bukan salah satu sahaja.
Dua perkara yang masih salah oleh kebanyakan pembangun.
1. .transfer() bukan lagi perisai: subsidi gas 2300 berhenti menjadi anggapan selamat apabila EIP-1884 meningkatkan gas SLOAD pada 2019. Gunakan .call{value:}("") dengan CEI.
2. Reentrancy baca-sahaja melintasi pengawal piawai, kerana fungsi view yang membaca semasa pengemaskinian mengembalikan keadaan rosak dan boleh meracuni oracle harga (dForce, $3.64 juta).
Hanya untuk tujuan pendidikan. Bukan nasihat kewangan.
Ikuti untuk wawasan harian - di mana blok rantai bertemu AI, satu sapuan memuaskan pada satu masa.
#Solidity #SmartContractSecurity #Web3Security #Ethereum #DeFi #SmartContracts #BlockchainDeveloper #SolidityDev #EVM #OpenZeppelin #Reentrancy #Web3Dev #BlockchainSecurity #DeFiSecurity #SmartContractAudit #CodeSecurity #OnChain #BlockchainEducation