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

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

by Danny_Kim 2023. 8. 25.

🔑 100배 수익 경험자의 노하우가 담긴 치트키 공개 🔑

  1. 네이버, 카카오 임직원들이 듣고 있는 비트코인 강의
  2. 아무도 알려주지 않은 비트코인, 이더리움의 리스크
  3. 블록체인 전문가들도 놓치기 쉬운 비트코인, 이더리움의 핵심 가치
  4. 천배 수익이 가능한 디파이(DeFi), 코인 생태계 지도
  5. 토큰 제작, 1억 연봉의 블록체인 개발자로 거듭나자!

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

🔑 100배 수익 경험자의 노하우가 담긴 치트키 공개 🔑

  1. 네이버, 카카오 임직원들이 듣고 있는 비트코인 강의
  2. 아무도 알려주지 않은 비트코인, 이더리움의 리스크
  3. 블록체인 전문가들도 놓치기 쉬운 비트코인, 이더리움의 핵심 가치
  4. 천배 수익이 가능한 디파이(DeFi), 코인 생태계 지도
  5. 토큰 제작, 1억 연봉의 블록체인 개발자로 거듭나자!

댓글