feat(pin sigcheck): pinning signature validation implementation #40
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TheCompact’s ValidityLib is using Solady's SignatureCheckerLib.
In the Solady version that TheCompact is using,
isValidSignatureNowCalldata()
checks the signature length to decide whether to performecrecover
(then ERC1271 fallback) based on the signature length (over 65 bytes it uses ERC1271)..However, In the current Solady version,
isValidSignatureNowCalldata()
willEXTCODESIZE
check, ifEXTCODESIZE
is non-zero, it goes straight to ERC1271.Note: with the currently pinned Solady version, there is no security risk!
Considering EIP7702 is around the cordner, this opens up some attack vectors specifically for credible commitments, should the newer Solady version be used.
According to EIP7702 Spec:
Attack Scenario:
Remediation:
isValidSignatureNowCalldata()
to TheCompact repository, to prevent future dependency upgrades to introduce the attack scenario mentioned above