There's no logic to spend funds in the Dispenser alias on Arbitrum. Setting the recipient of a createRetryableTicket call to Dispenser contract would lead to loss of the refund
Proof of Concept
In ArbitrumDepositProcessorL1#_sendMessage, if refundAccount==address(0), it is set to msg.sender i.e. Dispenser contract address
Lines of code
https://github.com/code-423n4/2024-05-olas/blob/main/tokenomics/contracts/staking/ArbitrumDepositProcessorL1.sol#L136 https://github.com/code-423n4/2024-05-olas/blob/main/tokenomics/contracts/staking/ArbitrumDepositProcessorL1.sol#L182 https://github.com/code-423n4/2024-05-olas/blob/main/tokenomics/contracts/staking/ArbitrumDepositProcessorL1.sol#L190
Vulnerability details
Impact
There's no logic to spend funds in the Dispenser alias on Arbitrum. Setting the recipient of a createRetryableTicket call to Dispenser contract would lead to loss of the refund
Proof of Concept
In ArbitrumDepositProcessorL1#_sendMessage, if refundAccount==address(0), it is set to msg.sender i.e. Dispenser contract address
But there is no logic to use the refund that gets sent to the Dispenser alias on Arbitrum. Hence, refunds are lost
Tools Used
Manual Review
Recommended Mitigation Steps
Assessed type
ETH-Transfer