the withdraw() can be used by user to claim a token, however this function didnt check of the user had already claimed or not, therefore setting claimed[_token][_to] = true; is useless, therefore the user can claimed in multiple times, till the contract is drained.
Lines of code
https://github.com/code-423n4/2022-02-concur/blob/main/contracts/Shelter.sol#L52
Vulnerability details
Impact
the withdraw() can be used by user to claim a token, however this function didnt check of the user had already claimed or not, therefore setting claimed[_token][_to] = true; is useless, therefore the user can claimed in multiple times, till the contract is drained.
Proof of Concept
https://github.com/code-423n4/2022-02-concur/blob/main/contracts/Shelter.sol#L52