Normal Behavior:
The buySnow
function should allow users to purchase tokens by paying either ETH (msg.value) or WETH (safeTransferFrom), but not both simultaneously.
Vulnerability:
If a user approves a large WETH allowance to the contract and then calls buySnow
with less or more ETH (failing the msg.value
check), the function will execute the else
branch, charging WETH while still keeping the sent ETH. This results in the user paying both ETH and WETH for a single token purchase.
Likelihood: High
Reason 1: Occurs whenever a user with WETH approval sends non-matching ETH.
Impact:
Impact 1: Funds theft, users lose both ETH and WETH for a single transaction
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.