You are viewing a single comment's thread from:

RE: ZPER 토큰 컨트렉트 코드 위험 - 후오비 SMT, BEC 해킹 사건

in #kr3 years ago

안녕하세요. 저는 지퍼 팀 멤버입니다.
먼저 지퍼에 관심 가져주셔서 정말 감사합니다. 팀이 부족한 부분이 많아서 작성자님 같은 분들의 관심과 지적, 조언을 감사하게 듣고 있습니다. 앞으로도 많은 관심과 지적 부탁드립니다. 다만, 팀이 많이 바빠서 작성자님과 같은 많은 분들의 의견을 하나하나 다 찾아다니기 힘드니, 지퍼의 소통 채널을 이용해 주셨으면 하는 바람이 있습니다. ^^
아, 그리고 먼저 댓글에 썼지만, 지적 해주실때 좀 더 자세히 검토 해주셨으면 합니다. 이쪽 함수엔 문제가 없는데 마치 전체가 문제가 있는것처럼 얘기하시면 깜짝 깜짝 놀랍니다. ㅎㅎ . 지퍼엔 바운티 프로그램도 있으니 참고해주세요!! ^^

Sort:  

텔레그램에서 질문했는데 이 부분은 답변을 못 들었습니다^^

safeMath 를 안 썼고, 오버플로우 체크를 안 한 것이 핵심이죠.

그로 인해 연산 기능을 포함한 모든 함수의 오버플로우가 일어날 가능성이 있죠.

지금 저기있는 transfer함수에서 오버플로우가 어떻게 가능한지 설명 해주시겠어요?

98, 99 Line 참조하시면 될 듯 합니다.
transfer 를 콜하는 것이랑은 별 관련이 없어요.
기본적인 Smart-Contract Audit 과정도 없었던 것 같네요.

safeMath를 안 쓴 이유 설명해 주시겠어요??

    for(i = 0; i < _amount.length; i++)
        sum += _amount[i];

https://blog.matryx.ai/batch-overflow-bug-on-ethereum-erc20-token-contracts-and-safemath-f9ebcc137434

https://medium.com/@merunasgrincalaitis/how-to-audit-a-smart-contract-most-dangerous-attacks-in-solidity-ae402a7e7868

그 밑에서 transfer를 콜하고 transfer함수 안에서 balances값을 바꾸는데 왜 관련이 없죠? 세이프메쓰의 기능을 그냥 다른 코드에 넣으면 되는데 왜 굳이 그 라이브러리를 똑같이 가져다 써야하죠?