본문 바로가기
블록체인교육/블록체인보안

[블록체인 보안] 스마트컨트랙트 취약성(ecRecover address(0) 반환)

by Danny_Kim 2023. 8. 25.

🔑 코인 투자 추천 링크 🔑

  1. 비트코인, 알트코인 투자 노하우 모두 공개
  2. OKX 거래소 - 20% 수수료 할인
  3. 플립스터 거래소 - USDT 15% 이자
  4. 해시키 거래소 - HSK 에어드랍

ecRecover가 address(0)을 반환하는 문제

 

SimpleBank 계약에서 transfer 함수는 매시지 해시와 서명(v,r,s 값)을 입력으로 받음.

이 함수는 서명을 복구하여 서명한 주소를 얻은 다음 이 주소가 관리자(admin)와 같은지 확인함

취약점은 ecRecover 함수가 서명 매개변수가 잘못된 경우에 0x0주소를 반환할 수 있다는 점

만약 v값이 27이나 28이 아닌 경우에도 0x0 주소를 반환할 것임

 

조치방안

Ecrecover 함수의 결과가 0 아닌지 확인하거나 대신 openzeppelin ECDSA라이브러리를 사용

 

테스트소스

https://github.com/SunWeb3Sec/DeFiVulnLabs/blob/main/src/test/ecrecover.sol

 

코드취약성

 

테스트

 

참고문헌

https://web3sec.notion.site/ecRecover-returns-address-0-a97e7c73079642a9919e9a0511da94c5

🔑 코인 투자 추천 링크 🔑

  1. 비트코인, 알트코인 투자 노하우 모두 공개
  2. OKX 거래소 - 20% 수수료 할인
  3. 플립스터 거래소 - USDT 15% 이자
  4. 해시키 거래소 - HSK 에어드랍

댓글