51567 sc low contract cannot be paused missing public pause and unpause functions
Submitted on Aug 4th 2025 at 04:22:59 UTC by @MMophule for Attackathon | Plume Network
Report ID: #51567
Report Type: Smart Contract
Report severity: Low
Target: https://github.com/immunefi-team/attackathon-plume-network-nucleus-boring-vault/blob/main/src/base/Roles/TellerWithMultiAssetSupportPredicateProxy.sol
Impacts:
Unable to Pause Contract
Description
Brief/Intro
The contract inherits from the OpenZeppelin Pausable contract, but does not implement the required public pause() and unpause() functions. OpenZeppelin's Pausable only provides internal _pause() and _unpause() functions, so the inheriting contract must expose public functions (usually access-controlled) that call those internals.
Vulnerability Details
Because there are no public pause() and unpause() functions implemented, the contract cannot be paused via the standard mechanisms provided by OpenZeppelin's Pausable.
Impact Details
During potential hacks or black swan events, being unable to pause the contract can prevent administrators from mitigating further harm. This was assessed as medium in impact.
Proof of Concept
The contract and any subcontracts inheriting from it do not include public functions that call _pause() and _unpause(), so pause/unpause functionality is effectively unavailable.
Suggested Fix (implicit)
Ensure the contract exposes appropriately access-controlled public functions that call _pause() and _unpause() (for example, pause() and unpause() guarded by an admin/owner role).
Was this helpful?