<!-- canonical: https://0xsimao.com/findings/vertex-disable-initializers-call-constructor -->

# Missing disableInitializers() call in the constructor

Medium · Three Sigma · Hybrid orderbook DEX · 3rd April 2024

Finding 3S-Vertex-M01 of the Vertex security review.

- Report: /reports/vertex
- Source: https://github.com/0xsimao/audits/blob/main/Three%20Sigma/2024-04-03-vertex.pdf

---

### Description

When using Initializable.sol, it's a good practice calling disableInitializers() in the
constructor, such that the implementation itself can't be initialized. The call is missing in
the [Clearinghouse.sol](https://github.com/vertex-protocol/vertex-contracts-3sigma-audit/blob/foundry-set-up/contracts/Clearinghouse.sol), [Endpoint.sol](https://github.com/vertex-protocol/vertex-contracts-3sigma-audit/blob/foundry-set-up/contracts/Endpoint.sol), [OffchainExchange.sol](https://github.com/vertex-protocol/vertex-contracts-3sigma-audit/blob/foundry-set-up/contracts/OffchainExchange.sol), [PerpEngine.sol](https://github.com/vertex-protocol/vertex-contracts-3sigma-audit/blob/foundry-set-up/contracts/PerpEngine.sol), [SpotEngine.sol](https://github.com/vertex-protocol/vertex-contracts-3sigma-audit/blob/foundry-set-up/contracts/SpotEngine.sol),
[ClearinghouseLiq.sol](https://github.com/vertex-protocol/vertex-contracts-3sigma-audit/blob/foundry-set-up/contracts/ClearinghouseLiq.sol) and [Verifier.sol](https://github.com/vertex-protocol/vertex-contracts-3sigma-audit/blob/foundry-set-up/contracts/Verifier.sol) (commented out).
ClearingHouse may be selfdestructed via the [delegateCall()](https://github.com/vertex-protocol/vertex-contracts-3sigma-audit/blob/main/contracts/Clearinghouse.sol#L480-L482).

### Recommendation

Use:

```solidity
constructor() {
    _disableInitializers();
}
```

### Status

Acknowledged

Disclosed by 0xSimao (https://0xsimao.com/).

---

Related findings:

- [Missing `disableInitializers()` call in `StandardIDOPool::constructor()`](https://0xsimao.com/findings/blast-ido-pools-disable-initializers-standard-constructor): Blast IDO Pools
- [Missing _disableInitializers() call in the constructor](https://0xsimao.com/findings/clip-finance-ii-disable-initializers-call-constructor): Clip Finance Strategy Upgrade
- [Missing disableInitializers() call in the constructor](https://0xsimao.com/findings/ostium-disable-initializers-call-constructor): Ostium
- [Initializable constracts should call _disableInitializers() in the constructor instead of using the initializer modifier](https://0xsimao.com/findings/mitosis-initializable-constracts-initializers-initializer): Mitosis
