솔리디티 깨부수기 - Security
솔리디티 깨부수기 - Security 1강 재진입 공격(re-entrancy attack) 이란?
D_One
2022. 7. 30. 16:20
안녕하세요,
오랜만에 인사드리네요, 제가 블로그는 너무 소홀히 했네요.
알람이 안와서 계속 잊어버리고 있었습니다.
답글 못 달아주신분 죄송합니다 ㅠㅠ;;
유튜브는 알람이 잘 와서 확인하기 쉬우니 제가 만약 답글이 없다면 유튜브에 달아주시면 감사하겠습니다.
사실 제가 최근에 ERC20강의를(https://inf.run/5qrS) 오픈을 했는데요.
해당 강의에서 재진입 공격에 대해서 계속 언급하게 돼서 솔리디티 깨부수기 - Security강의를 찍고자 합니다.
사실 스마트 컨트랙트 잘 작성을 해도, 보안이 없다면 정말 큰문제가 되기에 보안이 정말 중요합니다!
TLDR ; 유튜브에서 편하게 확인하세요 :))
https://www.youtube.com/watch?v=mFbZE-p4ges
재진입 공격이란?
트랜잭션이 끝나기도 전에 재진입해 이더를 탈취하는 공격!
먼저 그림1을 보시면 은행을 나타내는 스마트 컨트랙트 Bank가 있습니다.
Bank는 2개의 함수 Deposit()과 Withdraw() 함수가 있습니다.
Deposit함수는 Bank 스마트 컨트랙트에 이더를 입금하는 함수입니다.
Withdraw함수는 Bank 스마트 컨트랙트에 예치한 이더를 출금하는 함수입니다.
그림 2를 보시면 User1,User2, User3은 Deposit함수를 통해 각 2 이더씩 Bank에게 입금하고 있습니다.
즉 Bank에는 총 6이더가 있습니다.
그림 3을 보시면 Attacker 스마트 컨트랙트는 1이더를 입금하고 있습니다.
즉 Bank에는 총 7이더가 있습니다.