본문 바로가기
블록체인/DASP

[DASP Top 10] Unchecked Low Level Calls

by Dr.Ratel 2022. 11. 24.
반응형

Unchecked Low Level Calls


가능한 낮은 수준(Low Level)의 함수 호출(Call)을 하지 말것. 반환 값을 제대로 처리하지 않으면 예기찮은 동작으로 이어질 수 있다. 

Solidity에서 취약점을 가진 함수는 대표적으로 'call()', 'callcode()', 'delegatecall()' 그리고 'send()' 가 있다. 이런 함수들은 flase로 설정된 부울 값을 반환하고, 코드를 계속 실행하게 한다. 


CODE EXAMPLE

send()의 반환 값 확인을 잊었을때 발생할 수 있는 문제

function withdraw(uint256 _amount) public {
require(balances[msg.sender] >= _amount);
balances[msg.sender] -= _amount;
etherLeft -= _amount;
msg.sender.send(_amount);
}

호출(call)을 사용하여 이를 수용하지 않는 스마트 계약에 에테르를 보내는 경우(e.g.지불해야 할 예비 함수가 없음), EVM은 반환값을 false로 대체하는데 위의 경우 반환 값을 확인하지 않기 때문에 함수의 계약 상태 변경은 되돌리지 않으며, etherLeft 변수는 결국 잘못된 값을 추적함

반응형

'블록체인 > DASP' 카테고리의 다른 글

[DASP Top 10] Denial of Service (DoS)  (0) 2022.11.25
[DASP Top 10] Arithmetic  (0) 2022.11.24
[DASP Top 10] Access Control  (0) 2022.11.18
[DASP Top 10] Reentrancy  (0) 2022.11.15
DASP TOP 10  (0) 2022.11.12

댓글