🔑 코인 투자 추천 링크 🔑
재진입 취약점
EtherStore 재진입 취약점은 스마트계약설계의 결함으로, 공격자가 재진입을 악용하여
EtherStore 계약으로부터 자신이 권한이 있는 금액보다 더 많은 자금을 인출할 수 있는 문제임.
이 취약점은 EtherStore 계약의 withdrawFunds 함수에서 발생함.
여기서 Ether가 공격자 주소로 전송되고 나서 잔액을 업데이트 하기 때문임.
이로 인해 공격자의 계약은 잔액 업데이트 이전에 withdrawfunds 함수로 재진입 호출을 수행할 수 있음.
이로써 여러차례의 인출이 발생하고 EtherSotre 계약에서 모든 Ether가 흡수될 수 있음.
시나리오.
EtherStore는 간단한 금고로, 모든 사람의 이더를 관리할 수 있음.
하지만 이는 취약함.
보안방법
check-effect-interation을 따르고 openzeppelin reentrancy guard를 사용할것.
테스트 소스
https://github.com/SunWeb3Sec/DeFiVulnLabs/blob/main/src/test/Reentrancy.sol
재진입 공격 취약코드
재진입 공격 테스트
재진입 공격 성공
참고
https://web3sec.notion.site/Reentrancy-6eb97f96a3454f6085808c079f922146
댓글