Skip to content

[Bug]: Bypass NodeOperator approve in Dashboard #1504

@failingtwice

Description

@failingtwice

Summary

Vault owner can bypass NodeOperator approval in Dashboard by connecting without Dashboard and then moving vault ownership to Dashboard, effectively bypassing the isApprovedToConnect check. This check enforces consensus on settledGrowth to ensure correct fee calculation.

Expected Behavior

SettledGrowth in Dashboard should not allow the vault owner to cheat/grief node operator on reconnect.

Potential Impact

Without NO's approval to connect, the fee might be outdated and node operator may lose fees.

Steps to Reproduce

  1. Initial state: I create vault using factory createVaultWithDashboard, DEFAULT_ADMIN_ROLE is me
  2. Dashboard owns the StakingVault (set during factory deployment) and is connected to vaultHub
    times goes and fees are paid
  3. I voluntaryDisconnect => everything is ok and on next report, ownership is transferred to dashboard (connection.owner)
  4. Transfer away from Dashboard: Use Dashboard.abandonDashboard(me) to transfer ownership (pending)
  5. I accept ownership stakingVault.acceptOwnership() => I am the owner
  6. I transfer pending owner of stakingvault to vaultHub to connect : stakingVault.transferOwnership(VAULT_HUB)
  7. I call VAULT_HUB.connectVault(stakingVault), connection.owner will be me
  8. call VaultHub#transferVaultOwnership(stakingVault,dashboard)
    and the functions from dashboard works because they are stateless

and i bypassed isApprovedToConnect

Possible Solutions

Get rid of isApprovedToConnect altogether. Instead reset settledGrowth to 0. So that before reconnection, the vault owner must cooperate with the node operator to update the settled growth.

Guidelines

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions