According to the Solidity docs:
"The low-level functions call,delegatecall and staticcall return true as their first return value if the account called is non-existent, as part of the design of the EVM. Account existence must be checked prior to calling if needed".
Lines of code
https://github.com/ERC725Alliance/ERC725/blob/7171a0e25e83cfe4c4dec6262bb62b4422c0478f/implementations/contracts/ERC725XCore.sol#L177 https://github.com/ERC725Alliance/ERC725/blob/7171a0e25e83cfe4c4dec6262bb62b4422c0478f/implementations/contracts/ERC725XCore.sol#L194 https://github.com/ERC725Alliance/ERC725/blob/7171a0e25e83cfe4c4dec6262bb62b4422c0478f/implementations/contracts/ERC725XCore.sol#L211
Vulnerability details
Impact
Transfers may fail silently.
Proof of Concept
call
,delegatecall
andstaticcall
returntrue
as their first return value if the account called is non-existent, as part of the design of the EVM. Account existence must be checked prior to calling if needed".ERC725XCore#_executeCall ERC725XCore#_executeStaticCall ERC725XCore#_executeDelegateCall
Tools Used
Manual Review
Recommended Mitigation Steps
Check for the account's existence prior to transferring.
Assessed type
Token-Transfer