Owner Can Disable Core Protocol Tokens, Leading to a Denial of Service for Key Markets
The setAllowedSellToken()
function grants the owner excessive privileges that conflict with the protocol's core design. It allows the owner to disable core protocol tokens (WETH, WBTC, WSOL) that are foundational to the platform's operation. While administrative privileges are expected, these privileges should not extend to undermining the guaranteed, foundational markets of the protocol. This capability creates a direct vector for denying service to key markets and breaks the implicit promise made to users upon the contract's initialization.
The OrderBook
is explicitly initialized with addresses for core tokens iWETH
, iWBTC
, and iWSOL
in its constructor. This action establishes them not merely as tradable assets, but as foundational pillars of the protocol, creating an implicit guarantee of their availability to users.
However, the administrative function setAllowedSellToken()
fails to protect these core assets, only safeguarding iUSDC
.
The Core of the Issue: Expected vs. Excessive Privilege
While it is standard for an owner to manage a whitelist of optional, community-voted tokens, the issue here is that the owner's privilege extends to the protocol's foundational assets. This is not a standard administrative power; it is the power to unilaterally alter the core identity and functionality of the protocol post-deployment.
As a result, the owner can at any time call setAllowedSellToken(address(iWETH), false)
, breaking the implicit guarantee and freezing all new market activity for WETH.
This excessive privilege creates a powerful and centralized point of failure.
Denial of Service (DoS) on Core Functionality: The owner can unilaterally halt new orders for foundational assets, effectively shutting down a key market guaranteed at launch.
Broken Protocol Promise: Allowing core, constructor-defined tokens to be disabled breaks the implicit promise of their availability, making the protocol's behavior unpredictable and untrustworthy.
Excessive Centralization Risk: This goes beyond simple maintenance, granting the owner control over the protocol's fundamental features, which is a significant centralization risk.
Medium. The action can be performed at any time by the owner with a single transaction. It does not require special conditions and could even be triggered by mistake.
The following test proves that the owner can disable WETH, a core protocol token, preventing new orders from being created.
Test File: test/CoreTokenDisabling.t.sol
Successful Test Output:
Protect all core tokens from being disabled. The setAllowedSellToken
function should be restricted to managing non-core, community-added tokens only.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.