Closed code423n4 closed 2 years ago
Not applicable. Those are calls to our own gateway functions and they are not returning anything. They revert if things go wrong
We can verify here: https://github.com/code-423n4/2022-07-axelar/blob/3729dd4aeff8dc2b8b9c3670a1c792c81fc60e7c/contracts/AxelarGateway.sol#L300-L313
That all those selectors map out to function with a 0 return value, contract existence is guaranteed by calling self
For those reasons, I agree with the sponsor
Lines of code
https://github.com/code-423n4/2022-07-axelar/blob/3729dd4aeff8dc2b8b9c3670a1c792c81fc60e7c/contracts/AxelarGateway.sol#L320
Vulnerability details
When executing a function call, two data are returned (success condition and return data).
It was observed that after executing the command via a function call, the contract verifies the success condition to ensure that the call did not revert. However, it does not verify the return data of the call. It might be possible that the function call has failed, but it does not revert and return a
false
boolean instead. In this case, a failed execution will be wrongly marked as having been successfully executed in the system, and it cannot be re-executed again.https://github.com/code-423n4/2022-07-axelar/blob/3729dd4aeff8dc2b8b9c3670a1c792c81fc60e7c/contracts/AxelarGateway.sol#L320
Recommendation
Verify both success condition and return data returned by the function call to ensure that the call did not fail.