📢 대니월드 공식 홈페이지가 'TradingRoom'으로 변경되었습니다
모든 최신 시황과 교육 자료를 가장 빠르게 받는 방법!
지금 아래 버튼을 클릭해 이메일 구독을 완료해 주세요.
재진입 취약점
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
댓글