In [`NativeMetaTransaction::executeMetaTransaction`](https://github.com/Cyfrin/2024-11-one-world/blob/1e872c7ab393c380010a507398d4b4caca1ae32b/contracts/meta-transaction/NativeMetaTransaction.sol#L33) whenever the low-level call fails same transaction can be replayed by anyone.
In this function the problem is whenever the low-level call fails due to conditions that can change the whole transaction reverts which causes the nonce not to change, Hence breaking the invariant (increase nonce for user (to avoid re-use)) in the code . As we can see the nonce plays a key role in the verification and if it doesn't change attackers or anyone can replay the transaction to harm sender.
The same issue was found [here](https://solodit.cyfrin.io/issues/h-04-eip712metatransactionexecutemetatransaction-failed-txs-are-open-to-replay-attacks-code4rena-rolla-rolla-contest-git) please check the example out.
Nonce can be reused and as a result anyone can replay failed transactions.
manual review
Failed transactions should still increase nonce
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.