initialization

Solid

Detect initialization bugs in upgradeable contracts — missing `_disableInitializers()`, re-init attacks, parent-init not chained, constructor-vs-initializer confusion, public `initialize`. Activate on OZ Upgradeable, UUPS, Transparent proxy, Initializable, or any contract with `initialize` / `__init`.

AI & Automation 38 stars 5 forks Updated 2 days ago MIT

Install

View on GitHub

Quality Score: 82/100

Stars 20%
53
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Initialization detection ## When this applies - OZ `Initializable` / `*Upgradeable` contracts - Custom upgradeable contracts with `initialize()` functions - Beacon proxies, UUPS, Transparent — all flavors - Factory-deployed clones (EIP-1167 minimal proxies) - Any deploy script that uses `delegatecall` for setup ## Detection patterns ### Implementation contract not init-locked (CRITICAL) ```solidity contract Vault is Initializable, OwnableUpgradeable { function initialize() external initializer { __Ownable_init(msg.sender); } // ← no constructor disabling initializers } ``` Anyone can call `initialize` on the *implementation* address directly. Fix: ```solidity /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); } ``` ### Public initializer on deployed proxy (CRITICAL) Proxy deployment script forgets to call `initialize` atomically → attacker calls it first → owns the contract. Fix: deploy + initialize in same tx via factory or initializer-on-deploy proxy. ### Re-init via `reinitializer(N)` accessible to anyone (HIGH) ```solidity function reinitialize() external reinitializer(2) { // ← no auth __Pausable_init(); } ``` Add `onlyOwner` or `onlyProxyAdmin`. ### Parent init not called (HIGH) ```solidity function initialize() external initializer { // __Pausable_init() missing — pausable state defaults to wrong values } ``` Verify every parent's `__X_init()` is chained. ### Logic in constructor instead of i...

Details

Author
iktok90-design
Repository
iktok90-design/ai-smart-contract-auditor
Created
1 weeks ago
Last Updated
2 days ago
Language
JavaScript
License
MIT

Bundled in these plugins

Similar Skills

Semantically similar based on skill content — not just same category