★ Reinitializable implementation (no _disableInitializers)
Aave v3's assessment for RD-F-143 — scored yellow on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
VersionedInitializable uses a version integer stored in unstructured storage to prevent re-initialization. It does NOT call _disableInitializers() in the constructor (predates that OZ pattern). Implementation contract could in theory be initialized directly if version slot is in default state, though this would not affect proxy-delegated user funds. Latent footgun; has not been triggered in 50 months of v3.x upgrades.
Sources #
- GitHubAave V3 Origin - VersionedInitializable patternaave-dao/aave-v3-origin VersionedInitializable.solretrieved 2026-04-27
Methodology #
Determine whether the implementation contract does not call `_disableInitializers()` in its constructor, leaving re-initialization possible.
See the full factor methodology and distribution across all protocols →