Uninitialised UUPS proxy implementation → brick contracts
UUPS upgradeable contracts must initialise the implementation contract itself. If skipped, anyone can call `initialise()` and become its owner — then call `selfdestruct` to brick every proxy referencing it (Parity Multisig 2017).
§ Context
Assumed environment: target deployed UUPS proxies via OpenZeppelin Upgrades. The deploy script didn't disable initialisers on the implementation, or didn't disable selfdestruct semantics on pre-0.8.18 Solidity.
§ Steps
- 01Every proxy DELEGATECALL fails foreverImpactT1486— Data Encrypted for Impact
- 02Spot uninitialised implementation contractReconnaissanceW-RECON-FINGERPRINT— Tech Stack Fingerprinting
- 03Trigger selfdestruct via owner-only functionImpactT1485— Data Destruction
- 04Call initialize() — become ownerPrivilege EscalationW3-PROXY-INIT— Uninitialised UUPS Proxy Implementation
§ References
§ Frequently asked
- What is the "Uninitialised UUPS proxy implementation → brick contracts" attack path?
- UUPS upgradeable contracts must initialise the implementation contract itself. If skipped, anyone can call `initialise()` and become its owner — then call `selfdestruct` to brick every proxy referencing it (Parity Multisig 2017). It chains 4 steps drawn from real-world offensive-security techniques.
- What starting position does this attack require?
- The first step is Every proxy DELEGATECALL fails forever (T1486) — a impact primitive. Assumed environment: target deployed UUPS proxies via OpenZeppelin Upgrades.
- What is the final impact of this kill-chain?
- The final step lands on Call initialize() — become owner (W3-PROXY-INIT), which falls under Privilege Escalation. From here, an operator typically pivots into post-exploitation or maintains persistence.
- How can defenders detect or prevent this attack?
- Detection and prevention vary per step. Refer to each linked MITRE ATT&CK entry under "References" — every technique on that page lists defensive controls, detection telemetry, and known threat-actor usage.
§ Related dossiers
- Shared techniques2
ERC-4337 paymaster sponsor drain
A paymaster sponsors all UserOperations without per-user gas accounting. Spam tiny UserOps from many bundled addresses — paymaster pays the gas until its deposit hits zero.
- Shared techniques2
MOVEit Transfer (CVE-2023-34362) → mass data exfil (Cl0p)
Pre-auth SQLi in MOVEit's web UI forges an admin session. .NET deserialisation chain drops a webshell as SYSTEM. Cl0p's 2023 mass-exfil playbook: download every file under /var/files.