59691 sc low missing disableinitializers allows direct implementation initialization leading to vault takeover
Description
Brief/Intro
Vulnerability Details
contract FirelightVault is
FirelightVaultStorage,
ERC4626Upgradeable,
AccessControlUpgradeable,
PausableUpgradeable,
ReentrancyGuardUpgradeable
{
// ...
// Missing constructor with _disableInitializers()
@> /// @custom:oz-upgrades-unsafe-allow constructor
@> constructor() {
@> _disableInitializers();
@> }
// ...
function initialize(
IERC20 _asset,
string memory _name,
string memory _symbol,
bytes memory _initParams
) public initializer {
InitParams memory initParams = abi.decode(_initParams, (InitParams));
__ERC20_init(_name, _symbol);
__ERC4626_init(_asset);
__Pausable_init();
__ReentrancyGuard_init();
__AccessControl_init();
// ...Impact Details
References
Proof of Concept
Proof of Concept
Fix
Previous#59715 [SC-Low] periodattimestamp will return different period for the same timestamp inputNext59635 sc low timestamp agnostic periodattimestamp misreports historical periods breaking time locked logic
Was this helpful?