Incorrect msg.sender in context of a blueprint execution can cause a loss of funds
When executing a blueprint the action is done on behalf of the publisher not necassarily the msg sender.
In the snippet above we get the address of the active publisher.
Above shows how the publisher is set for a tx. First we increment the blueprint noce and we set the publisher. Then the logic of the call is executed, and the publisher is then reset again.
The code will call this user function like so below
to get the real user address to make the code compatible with blue print execution.
However, when handing ETH / WETH / refund call, the msg.sender is still used instead of LibTractor._user()
In LibWETH.sol
when handling refund:
this is a issue.
suppose a blueprint action involve some action, that involves convert token to ETH then relies on the refundETH() to send the ETH out to the LibTractor._user() => publisher, the ETH is actually sent to msg.sender instead of publisher.
The incorrect user has now received the eth.
In certain cases the incorrect user may receive another users funds. Loss of funds for the publisher when executing blueprint
Manual review
ensure the correct user is sent eth/ weth etc... When calling via blueprint execution
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.