Дописи
avatar

Reentrancy розшифровано — ця помилка смартконтракту все ще виводить мільйони в 2026 році, і шаблон Checks-Effects-Interactions, який її зупиняє в коді Reentrancy — це не магія. Це помилка порядку: ваш контракт оновлює свій стан ПІСЛЯ того, як здійснює зовнішній виклик, а не до нього, і атакуючий знову викликає його під час цієї прогалини. Виправте порядок — і помилка зникне. DAO втратив близько 3,6 млн ETH (приблизно $60 млн, близько 5% усіх ETH, що тоді існували) через саме цю помилку 17 червня 2016 року. Наслідки призвели до розколу Ethereum на ETH і ETC. Десять років потому вона все ще виводить кошти. Solv Protocol втратив $2,73 млн через reentrancy 5 березня 2026 року, а в травні 2026 року було вкрадено близько $52 млн у різних onchain-протоколах (DeFiLlama через CryptoTimes, 31 травня 2026 року). Вразливий шаблон: прочитати баланс, надіслати ETH за допомогою низькорівневого виклику, а потім встановити баланс на нуль. Функція receive() атакуючого повторно входить у withdraw(), перш ніж нуль буде застосовано, і цикл продовжується, поки контракт не спорожніє. Два виправлення, які використовуються разом: Checks-Effects-Interactions. Спочатку перевірте, потім оновіть ВСІ стани, а потім здійсніть зовнішній виклик останнім. Перемістіть balances[msg.sender] = 0 вище виклику — тоді повторний виклик прочитає нуль і скасується. Захист nonReentrant від OpenZeppelin. Мутекс у сховищі (NOT_ENTERED до ENTERED), який скасовує повторний вхід. Використовуйте його РАЗОМ із CEI, а не окремо. Дві речі, які більшість розробників все ще неправильно роблять. 1. .transfer() більше не є захистом: ліміт газу 2300 перестав бути безпечним припущенням після того, як EIP-1884 підвищив вартість SLOAD у 2019 році. Використовуйте .call{value:}("") разом із CEI. 2. Тільки для читання reentrancy обходить стандартний захист, оскільки функція view, що читає під час оновлення, повертає пошкоджені дані і може отруїти оракул цін (dForce, $3,64 млн). Тільки для освітніх цілей. Не фінансова порада. Підпишіться на щоденні інсайти — де блокчейн зустрічається з ІШ, один задовольняючий свайп за раз. #Solidity #SmartContractSecurity #Web3Security #Ethereum #DeFi #SmartContracts #BlockchainDeveloper #SolidityDev #EVM #OpenZeppelin #Reentrancy #Web3Dev #BlockchainSecurity #DeFiSecurity #SmartContractAudit #CodeSecurity #OnChain #BlockchainEducation

Цей контент призначений виключно для інформаційних та освітніх цілей. Він може містити думки третіх осіб, спонсорований контент або рекламні матеріали, за які автор може отримувати оплату. Жодна інформація в цій стрічці не є інвестиційною порадою чи гарантією прибутковості. Ви несете повну відповідальність за власні інвестиційні рішення. Перед початком торгівлі завжди проводьте власне дослідження та дотримуйтесь обережності. Ми не гарантуємо точність інформації від третіх осіб і не несемо відповідальності за будь-які збитки. Минулі результати не є показником майбутніх. Дивіться наші Умови спільноти та Заяву про ризики для отримання детальної інформації.

avatarОпублікуйте відповідь

Коментувати