Description: The FirelightVault implementation contract is upgradeable but lacks a constructor that calls _disableInitializers(). This allows any external actor to call the public initialize() function on the deployed implementation contract's address, granting themselves administrative control over the implementation contract's internal state. While this does not allow the attacker to control or affect the proxy contract's state, funds, or upgrade mechanism due to the separation of storage, it violates a fundamental security principle of the proxy pattern. This leaves the implementation contract in a state where it could be used for phishing or to mislead off-chain tooling, and it goes against established security best practices for upgradeable contracts.
Remediation: Add a constructor to the FirelightVault contract to disable the initializer. This ensures the implementation contract can never be initialized, securing it as intended. The /// @custom:oz-upgrades-unsafe-allow constructor pragma should be included for compatibility with standard upgrade tooling.