Created
March 16, 2026 07:03
-
-
Save denniswon/80db91c5f2d4db883312479f1336db00 to your computer and use it in GitHub Desktop.
[Low/informational[ Complete Triage: All 30 Findings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Complete Triage: All 30 Findings | |
| Core Protocol — Actionable Fixes | |
| ┌─────┬─────────────────────────────────────────────────────────────────────┬───────────────┬─────────────────────────────────────────────────┐ | |
| │ # │ Finding │ Verdict │ Action │ | |
| ├─────┼─────────────────────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────┤ | |
| │ #4 │ IRegoVerifier calldata return type │ Valid │ Fix — change to memory in interface │ | |
| ├─────┼─────────────────────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────┤ | |
| │ #10 │ Missing TaskChallengedSuccessfully event in │ Valid │ Fix — add event emission │ | |
| │ │ challengeDirectlyVerifiedAttestation │ │ │ | |
| ├─────┼─────────────────────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────┤ | |
| │ #23 │ taskCreationBufferWindow not set in initialize() │ Partially │ Fix — set default in initialize or document │ | |
| │ │ │ valid │ │ | |
| ├─────┼─────────────────────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────┤ | |
| │ #26 │ Sentinel collision via crafted expireAfter │ Partially │ Fix — guard against sentinel value in │ | |
| │ │ │ valid │ createAttestationHash │ | |
| └─────┴─────────────────────────────────────────────────────────────────────┴───────────────┴─────────────────────────────────────────────────┘ | |
| Core Protocol — Won't Fix (informational/theoretical) | |
| ┌─────┬─────────────────────────────────────────────────────┬───────────────┬─────────────────────────────────────────────────────────────────┐ | |
| │ # │ Finding │ Verdict │ Reason │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #1 │ 32-bit block truncation │ Partially │ Year 2106 issue, 80 years away. Consistent truncation. │ | |
| │ │ │ valid │ │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #5 │ IdentityRegistry reinitializer │ Invalid │ Function doesn't exist (evaluated earlier) │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #8 │ Missing contract check in sanityCheckAttestation │ Valid but low │ Malformed input causes revert either way, just with unclear │ | |
| │ │ │ │ error. Defense-in-depth. │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #16 │ RegoVerifier unchecked return │ Invalid │ SP1 verifier reverts on failure, doesn't return bool │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #18 │ ECDSAOperatorTableUpdater 32-bit timestamp │ Partially │ Year 2106, matches EigenLayer upstream pattern │ | |
| │ │ │ valid │ │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #22 │ DestinationTaskResponseHandler missing constructor │ Valid but low │ Deployment-time misconfiguration caught at first use │ | |
| │ │ validation │ │ │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #27 │ Missing owner validation in PolicyFactory │ Valid but low │ Deployer error, not exploitable │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #28 │ PolicyClientRegistry ERC165 without zero check │ Partially │ address(0) gives opaque revert instead of NotPolicyClient │ | |
| │ │ │ valid │ │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #29 │ NewtonPolicyData.attest missing checks │ Invalid │ Expiration checked by signature + downstream enforcement │ | |
| ├─────┼─────────────────────────────────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┤ | |
| │ #30 │ ECDSAOperatorTableUpdater zero root return │ Invalid │ View function, integrators handle zero │ | |
| └─────┴─────────────────────────────────────────────────────┴───────────────┴─────────────────────────────────────────────────────────────────┘ | |
| Example Contract Findings (all lower priority, no core impact) | |
| ┌─────┬───────────────────────────────────────────────────┬─────────────┬────────────────────────────┐ | |
| │ # │ Finding │ File │ Quick Assessment │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #2 │ Zero-denominator in SharedVault │ examples/ │ Standard ERC4626 edge case │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #3 │ Missing max-shares bound in ERC4626Router │ examples/ │ Parameter validation gap │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #6 │ Unchecked multiplication in SharedVault │ examples/ │ Overflow concern │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #7 │ Unbounded enumeration in PolicyFactory │ core (view) │ Off-chain DoS only │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #9 │ Unbounded enumeration in PolicyClientRegistry │ core (view) │ Off-chain DoS only │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #11 │ Ignored _validateAttestation return │ examples/ │ Gate bypass in example │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #12 │ Rounding dust in SupporterRewardManager │ examples/ │ Arithmetic precision │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #13 │ Unauthenticated setters in NewtonProtectedERC20 │ examples/ │ Access control gap │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #14 │ Unprotected init in RewardManagerFactory │ examples/ │ Missing access control │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #15 │ Misleading comment in ERC20ProtectedProxy │ examples/ │ Code quality │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #17 │ Overflow in SupporterRewardManager claim │ examples/ │ Arithmetic overflow │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #19 │ Missing beneficiary validation in PersonalVault │ examples/ │ Zero-address check │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #20 │ Missing validation in SupporterRewardManager init │ examples/ │ Zero-address check │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #21 │ Disabled policy gate in ERC20Protected │ examples/ │ Design choice │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #24 │ Intent field misuse in ERC20ProtectedProxy │ examples/ │ Parameter mapping │ | |
| ├─────┼───────────────────────────────────────────────────┼─────────────┼────────────────────────────┤ | |
| │ #25 │ Proxy gating DoS in ERC20Protected │ examples/ │ Architecture issue │ | |
| └─────┴───────────────────────────────────────────────────┴─────────────┴────────────────────────────┘ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment