스마트컨트랙트보안2 [블록체인 보안] 스마트컨트랙트 취약성(ecRecover address(0) 반환) 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 코드취약성 테스트.. 2023. 8. 25. [블록체인 보안] 솔리디티 해킹관련 파운더리 셋팅 및 테스트(selfdestruct) 1. 파운더리 설치 curl -L https://foundry.paradigm.xyz | bash foundryup 2. hello_foundry 초기화 forge init hello_foundry ls forge build forge test 3. 예제 테스트 1. Self Destruct - 가이드 https://web3sec.notion.site/Selfdestruct-4c64f3ceb02f477f9dfc0079b66c84a6 - 예제샘플소스 https://github.com/SunWeb3Sec/DeFiVulnLabs/blob/main/src/test/Selfdestruct.sol 테스트 폴더에 해당 파일 저장. - 아래 명령 실행. forge test --contracts src/test/Self.. 2023. 8. 24. 이전 1 다음