Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
7299b38
feat: ecdsa validator with stateless validation
leekt Nov 3, 2025
d5cbf02
feat: ecdsa signer with stateless validation logic
leekt Nov 3, 2025
bc99663
feat: signature policy
leekt Nov 4, 2025
53e86c0
Remove all submodules
leekt Nov 4, 2025
f898564
Purge broken submodules and metadata
leekt Nov 4, 2025
04cb212
removed hooks and actions
leekt Nov 4, 2025
8acbec3
merge recent commits
leekt Nov 4, 2025
e418592
cleanup
leekt Nov 4, 2025
702616c
gitignore
leekt Nov 4, 2025
eaddd42
temp
leekt Nov 4, 2025
ef6564d
compilable
leekt Nov 4, 2025
23b5614
fix: signer ordering
leekt Nov 5, 2025
b051dd0
TimelockPolicy
leekt Nov 5, 2025
9ab44f6
cleanup mess
leekt Nov 5, 2025
543ee02
foundry.toml
leekt Nov 5, 2025
1d65788
tests
leekt Nov 6, 2025
7b8de1e
testBase
leekt Nov 6, 2025
c2061cc
test file done
leekt Nov 6, 2025
57eca15
finished test cases
leekt Nov 6, 2025
b439f3e
removed isInitialized function
leekt Nov 12, 2025
9bc5eb2
Merge pull request #34 from zerodevapp/fix/remove_isInitialized
leekt Nov 18, 2025
db37cbc
change address and WebAuthn.sol
leekt Jan 9, 2026
0937ec5
Merge pull request #35 from zerodevapp/fix/webauthn_release
leekt Jan 9, 2026
d395c44
feat: ecdsa validator with stateless validation
leekt Nov 3, 2025
5deb90d
feat: ecdsa signer with stateless validation logic
leekt Nov 3, 2025
581985f
feat: signature policy
leekt Nov 4, 2025
ef5a618
Remove all submodules
leekt Nov 4, 2025
b41c1d4
Purge broken submodules and metadata
leekt Nov 4, 2025
335a67c
removed hooks and actions
leekt Nov 4, 2025
88a4d4c
merge recent commits
leekt Nov 4, 2025
dea31e1
cleanup
leekt Nov 4, 2025
a0057e1
gitignore
leekt Nov 4, 2025
6e0996d
temp
leekt Nov 4, 2025
3ab3b19
compilable
leekt Nov 4, 2025
afbab8c
fix: signer ordering
leekt Nov 5, 2025
f3438c1
TimelockPolicy
leekt Nov 5, 2025
dba4b6e
cleanup mess
leekt Nov 5, 2025
29c4991
foundry.toml
leekt Nov 5, 2025
943dbdb
tests
leekt Nov 6, 2025
bd999e1
testBase
leekt Nov 6, 2025
e7af1e5
test file done
leekt Nov 6, 2025
27ef3dc
finished test cases
leekt Nov 6, 2025
6ae157f
removed isInitialized function
leekt Nov 12, 2025
223c693
Merge branch 'dev/0.2.0' of github.com:zerodevapp/kernel-7579-plugins…
leekt Jan 26, 2026
0578d2a
fix(TimelockPolicy): enforce timelock for ERC-1271 signatures
leekt Feb 2, 2026
b2f5abc
fix(TimelockPolicy): invalidate stale proposals on reinstall
leekt Feb 2, 2026
c836b9d
fix(ECDSA): add input validation and signer checks
leekt Feb 2, 2026
393d35a
fix(WeightedECDSASigner): prevent reinstall without uninstall
leekt Feb 2, 2026
a417666
fix(WeightedECDSASigner): limit max signatures to prevent gas griefing
leekt Feb 2, 2026
c69926b
fix(SignaturePolicy): add documentation and input validation
leekt Feb 2, 2026
14cb24f
Fix dead proposal creation code
leekt Feb 2, 2026
6d158ca
test: add BTT tests for WeightedECDSAGasGriefing
leekt Feb 2, 2026
2f88be1
test: add BTT tests for TimelockEpochValidation
leekt Feb 2, 2026
f1d9a5f
test: add BTT tests for SignaturePolicyCallerValidation
leekt Feb 2, 2026
d6c7871
test: add BTT tests for TimelockSignaturePolicy
leekt Feb 2, 2026
baa9fa6
test: add comprehensive BTT tests for TOB-KERNEL-1 fix
leekt Feb 2, 2026
ca7137b
update
leekt Feb 2, 2026
9b03092
btt for ecdsa
leekt Feb 2, 2026
fea23de
btt
leekt Feb 2, 2026
97ded5e
fix: timelockpolicy does not accept erc1271
leekt Feb 2, 2026
be75d0b
fix: removed MAX_SIGNATURES
leekt Feb 3, 2026
756b869
separated tree for erc1271 and erc4337
leekt Feb 3, 2026
783c13f
Fix userOpHash bypass vulnerability
leekt Feb 2, 2026
6f5c701
test: add BTT tests for WeightedECDSA userOpHash and double-count fixes
leekt Feb 2, 2026
40d36da
test: merged btt tests
leekt Feb 3, 2026
27ec844
Merge pull request #37 from zerodevapp/fix/tob-kernel-2
leekt Feb 6, 2026
c2381b0
Merge pull request #42 from zerodevapp/fix/tob-kernel-20
leekt Feb 6, 2026
45631f9
Merge pull request #41 from zerodevapp/fix/tob-kernel-16
leekt Feb 6, 2026
ec02411
Merge pull request #40 from zerodevapp/fix/tob-kernel-14
leekt Feb 6, 2026
37da3aa
fix(TimelockPolicy): add upper bounds for delay and expirationPeriod
leekt Feb 6, 2026
ecb7630
fix(TimelockPolicy): correct ERC-7579 no-op detection encoding
leekt Feb 6, 2026
d4c3302
Merge pull request #48 from zerodevapp/fix/tob-kernel-18
leekt Feb 6, 2026
6d864e5
Merge pull request #47 from zerodevapp/fix/tob-kernel-5
leekt Feb 6, 2026
df553e7
fix(TimelockPolicy): add grace period to prevent race conditions
leekt Feb 2, 2026
7709731
test: add BTT tests for TimelockCancellationRace
leekt Feb 2, 2026
15afeb0
refactor: rename SignaturePolicy to CallerPolicy
leekt Feb 6, 2026
17f78f7
fix(TimelockPolicy): make permissionless proposals inert until sessio…
leekt Feb 9, 2026
4b66879
feat(TimelockPolicy): add proposer to ProposalCreated event
leekt Feb 9, 2026
17d950e
fix(TimelockPolicy): remove createProposal, proposals only via no-op …
leekt Feb 9, 2026
28ee229
fix(TimelockPolicy): remove dead code and add callDataLength overflow…
leekt Feb 9, 2026
3705223
Merge pull request #44 from zerodevapp/fix/tob-kernel-21
leekt Feb 9, 2026
351b99e
Merge fix/tob-kernel-21 (grace period) into fix/tob-kernel-1
leekt Feb 9, 2026
4a83f3f
fix(TimelockPolicy): add mode check and fix executeUserOp offset in n…
leekt Feb 9, 2026
810bc68
fix(TimelockPolicy): correct ERC-7579 no-op detection encoding
leekt Feb 9, 2026
d0bbbb1
test: add EntryPoint integration tests for TimelockPolicy
leekt Feb 11, 2026
52dac36
Merge pull request #49 from zerodevapp/fix/delete_createProposal
leekt Feb 11, 2026
9f966f5
fix(TimelockPolicy): replace grace period with guardian cancellation
leekt Feb 12, 2026
d043f60
fix(TimelockPolicy): use LibERC7579.decodeSingle for no-op detection
leekt Feb 12, 2026
c9f666b
test(TimelockPolicy): update tests for guardian cancellation and no-o…
leekt Feb 12, 2026
8033d31
test(TimelockPolicy): add comprehensive guardian cancellation test cases
leekt Feb 12, 2026
edbc28a
refactor: remove redundant signature length check in TimelockPolicy
leekt Feb 12, 2026
5df2237
Merge pull request #46 from zerodevapp/fix/tob-kernel-19
leekt Feb 12, 2026
524f483
Merge pull request #43 from zerodevapp/fix/tob-kernel-15
leekt Feb 12, 2026
6b81e58
Merge pull request #38 from zerodevapp/fix/tob-kernel-12
leekt Feb 12, 2026
d307e68
test: add TimelockNoOpDetection test cases
leekt Feb 23, 2026
f438af3
Merge pull request #50 from zerodevapp/fix/tob-kernel-21-attempt-2
leekt Feb 24, 2026
60406c0
Merge branch 'dev/0.2.0' into fix/tob-kernel-1
leekt Feb 24, 2026
79e908f
Merge branch 'fix/tob-kernel-1' of github.com:zerodevapp/kernel-7579-…
leekt Feb 24, 2026
574e94c
fix: add zero-owner guard in ECDSAValidator validation functions
leekt Feb 24, 2026
6344004
fix: add install-time input validation with require-customError pattern
leekt Feb 24, 2026
33c161c
chore: replace string literal requires/reverts with custom errors
leekt Feb 24, 2026
a7614be
test: update TimelockPolicy tests for custom error selectors
leekt Feb 24, 2026
3162c8f
docs: add security assumption NatSpec to TimelockPolicy, ECDSAValidat…
leekt Feb 24, 2026
e13d652
test: fix broken 64-byte signature test in TimelockPolicy
leekt Feb 24, 2026
d78afb3
Merge pull request #53 from zerodevapp/fix/tob-kernel-5-v2
leekt Apr 7, 2026
338401e
Merge pull request #54 from zerodevapp/fix/tob-kernel-13-zero-signer
leekt Apr 7, 2026
d556bb0
Merge branch 'fix/tob-kernel-1' into chore/custom_errors
leekt Apr 7, 2026
39ceadc
Merge pull request #55 from zerodevapp/chore/custom_errors
leekt Apr 7, 2026
cc349f5
Merge pull request #52 from zerodevapp/docs/security_warnings
leekt Apr 7, 2026
250cee4
Merge pull request #36 from zerodevapp/fix/tob-kernel-1
leekt Apr 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 19 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
**/log
# Compiler files
cache/
out/

# Ignores development broadcast logs
!/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/

# Docs
docs/

# Dotenv file
.env

coverage/
lcov.info
log/

110 changes: 0 additions & 110 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,110 +0,0 @@
[submodule "validators/webauthn/lib/forge-std"]
path = validators/webauthn/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "signers/ecdsa/lib/forge-std"]
path = signers/ecdsa/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "validators/webauthn/lib/openzeppelin-contracts"]
path = validators/webauthn/lib/openzeppelin-contracts
url = https://github.com/openzeppelin/openzeppelin-contracts
[submodule "signers/ecdsa/lib/kernel_v3"]
path = signers/ecdsa/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "signers/ecdsa/lib/solady"]
path = signers/ecdsa/lib/solady
url = https://github.com/vectorized/solady
[submodule "policies/signature-caller/lib/forge-std"]
path = policies/signature-caller/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "policies/signature-caller/lib/kernel_v3"]
path = policies/signature-caller/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "policies/call-policy/lib/forge-std"]
path = policies/call-policy/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "policies/call-policy/lib/kernel_v3"]
path = policies/call-policy/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "policies/ratelimit/lib/forge-std"]
path = policies/ratelimit/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "policies/gas/lib/forge-std"]
path = policies/gas/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "policies/gas/lib/kernel_v3"]
path = policies/gas/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "policies/ratelimit/lib/kernel_v3"]
path = policies/ratelimit/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "policies/timestamp/lib/forge-std"]
path = policies/timestamp/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "policies/timestamp/lib/kernel_v3"]
path = policies/timestamp/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "signers/webauthn/lib/forge-std"]
path = signers/webauthn/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "signers/webauthn/lib/openzeppelin-contracts"]
path = signers/webauthn/lib/openzeppelin-contracts
url = https://github.com/openzeppelin/openzeppelin-contracts
[submodule "policies/sudo/lib/forge-std"]
path = policies/sudo/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "policies/sudo/lib/kernel_v3"]
path = policies/sudo/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "actions/recovery/lib/forge-std"]
path = actions/recovery/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "actions/recovery/lib/kernel_v3"]
path = actions/recovery/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "hooks/onlyEntrypoint/lib/forge-std"]
path = hooks/onlyEntrypoint/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "hooks/onlyEntrypoint/lib/kernel_v3"]
path = hooks/onlyEntrypoint/lib/kernel_v3
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "signers/webauthn/lib/kernel"]
path = signers/webauthn/lib/kernel
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "hooks/spendlingLimits/lib/forge-std"]
path = hooks/spendlingLimits/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "hooks/spendlingLimits/lib/kernel"]
path = hooks/spendlingLimits/lib/kernel
url = https://github.com/zerodevapp/kernel
branch = release/v3.1
[submodule "hooks/spendlingLimits/lib/solady"]
path = hooks/spendlingLimits/lib/solady
url = https://github.com/vectorized/solady
[submodule "hooks/caller/lib/forge-std"]
path = hooks/caller/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "hooks/caller/lib/kernel"]
path = hooks/caller/lib/kernel
url = https://github.com/zerodevapp/kernel
[submodule "validators/erc1271/lib/forge-std"]
path = validators/erc1271/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "validators/erc1271/lib/kernel"]
path = validators/erc1271/lib/kernel
url = https://github.com/zerodevapp/kernel
[submodule "validators/erc1271/lib/safe-smart-account"]
path = validators/erc1271/lib/safe-smart-account
url = https://github.com/safe-global/safe-smart-account
[submodule "lib/safe-smart-account"]
path = lib/safe-smart-account
url = https://github.com/safe-global/safe-smart-account
16 changes: 16 additions & 0 deletions AUDIT_OVERVIEW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Audit Overview – ERC-7579 Plugins

**Scope** `src/policies`, `src/signers`, `src/validators` (WebAuthn excluded) **Rev** 1.2 **Date** 2025-11-06

**Module IDs** 1 `VALIDATOR`, 2 `EXECUTOR` (unused), 3 `FALLBACK` (unused), 4 `HOOK`, 5 `POLICY`, 6 `SIGNER`, 7 `STATELESS_VALIDATOR`, 8 `STATELESS_VALIDATOR_WITH_SENDER`. Modules only claim IDs they fully implement.

**Policies**
- SignaturePolicy — types 5/10; tracks caller allowlists per `(id, wallet)`; stateless helper expects caller list in calldata.
- TimelockPolicy — types 5/7/10; proposal → execute flow with delay/expiry; detects no-op calldata; proposals keyed by `(account, calldata hash, nonce)`.

**Signers**
- ECDSASigner — types 6/7/10; one signer per `(id, wallet)`; eth-signed fallback; stateless helpers take signer address from calldata.
- WeightedECDSASigner — types 6/7/10; weighted guardians + threshold; enforces ascending signer order; stateless helper uses supplied guardian data.

**Validators**
- ECDSAValidator — types 1/4/7/10; single owner per account; `preCheck` enforces owner-only execution; stateless helpers take owner from calldata.
16 changes: 0 additions & 16 deletions README.md

This file was deleted.

34 changes: 0 additions & 34 deletions actions/recovery/.github/workflows/test.yml

This file was deleted.

14 changes: 0 additions & 14 deletions actions/recovery/.gitignore

This file was deleted.

66 changes: 0 additions & 66 deletions actions/recovery/README.md

This file was deleted.

6 changes: 0 additions & 6 deletions actions/recovery/foundry.toml

This file was deleted.

1 change: 0 additions & 1 deletion actions/recovery/lib/forge-std
Submodule forge-std deleted from bb4cee
1 change: 0 additions & 1 deletion actions/recovery/lib/kernel_v3
Submodule kernel_v3 deleted from 991234
4 changes: 0 additions & 4 deletions actions/recovery/remappings.txt

This file was deleted.

10 changes: 0 additions & 10 deletions actions/recovery/src/RecoveryAction.sol

This file was deleted.

Loading