The code is using OpenZeppelin's Context contract which is intended to allow meta-transactions. It works by doing a call to _msgSender() instead of querying msg.sender directly, because the method allows those special transactions. The problem is that the executeMetaTransaction function in NativeMetaTransaction.sol and initialize function in MembershipERC1155.sol use msg.sender directly instead of _msgSender(), which breaks this intent and will not allow meta-transactions at all in the methods that have those functions, which are one of the important ones in the those aforementioned contracts.
Important Lines of code for reference purposes
Places where Function _msgSender() were used;
Then for Function msg.sender;
Impact:
Low, because protocol will still function normally, but an expectedly desired types of transactions won't work
Likelihood:
High, because it is certain that he issue will occur as code is
Manual Review
Change the code in the executeMetaTransaction and initialize functions to use _msgSender() instead of msg.sender.
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.