mStable
Submit a BugProgram Overview
Released in May 2020, mStable is a protocol that unites stablecoins, lending and swapping into one robust and easy to use standard. Three major problems confront stablecoin users: significant fragmentation in same-peg assets; lack of native yield when it is being increasingly demanded by users; lack of insurance against permanent capital loss. mStable’s products (SWAP, SAVE and EARN) are built specifically to address these pain-points.
This bug bounty program is further covered by the Armor Alliance Bug Bounty Challenge.
Verification
Verification of mStable's bug bounty program on Immunefi is available at
See verificationRewards by Threat Level
Rewards are distributed according to the impact of the vulnerability based on the Immunefi Vulnerability Severity Classification System. This is a simplified 5-level scale, with separate scales for websites/apps and smart contracts/blockchains, encompassing everything from consequence of exploitation to privilege required to likelihood of a successful exploit.
Payouts up to USD 50 000 are handled by mStable directly and are denominated in USD. Payouts are made in mUSD. Payouts higher than USD 50 000 are further covered by the Armor Alliance Bug Bounty Challenge and remaining amounts are paid in ARMOR and are subject to a vesting schedule of up to 24 months.
Smart Contracts and Blockchain
- Critical
- Level
- USD $100,000
- Payout
- high
- Level
- USD $8,000
- Payout
- medium
- Level
- USD $4,000
- Payout
- low
- Level
- USD $1,250
- Payout
- none
- Level
- USD $0
- Payout
Assets in Scope
Any Proxy contracts listed in the Assets in Scope table also include the currently active logic contracts, and any external or internal libraries that are used in these.
- StakedTokenMTA: Vault that stakes MTA
- Type
- StakedTokenBPT: Vault that stakes the MTA/ETH 80/20 Balancer Pool Token (BPT).
- Type
- Masset: mUSD
- Type
- SavingsContract: mUSD Savings Contract
- Type
- Masset: mBTC
- Type
- SavingsContract: imBTC
- Type
- FeederLogic: Library contract for Feeder Pools
- Type
- FeederManager: Library contract for Feeder Pools
- Type
- MassetManager: Manager contract for mAssets
- Type
- SavingsManager: Validates and distributes system revenue to savers
- Type
- InvariantValidator: Builds on and enforces the StableSwap invariant
- Type
- BoostedSavingsVault: Savings Vault
- Type
- FeederPool: BUSD Feeder Pool
- Type
- FeederPool: GUSD Feeder Pool
- Type
- FeederPool: HBTC Feeder Pool
- Type
- FeederPool: TBTC Feeder Pool
- Type
- FeederPool: alUSD Feeder Pool
- Type
- Liquidator: Liquidator
- Type
- QuestManager: Quest Manager that can add, complete and expire quests
- Type
- BoostedSavingsVault: GUSD Feeder Pool Vault
- Type
- BoostedSavingsVault: HBTC Feeder Pool Vault
- Type
- BoostedSavingsVault: TBTC Feeder Pool Vault
- Type
- SaveWrapper: Facilitates minting, deposits and staking of massets (mUSD and mBTC)
- Type
- BoostDirector: Supports the directing of staked Meta (vMTA) balances to boosted vaults.
- Type
- Nexus: Resolves module addresses
- Type
- RewardsDistributor: Distributes MTA rewards to vaults
- Type
- DelayedProxyAdmin: Administors proxy contracts with a one week time delay
- Type
- SignatureVerifier: Used to verify quest completions signatures
- Type
- PAaveIntegration: mUSD Aave V2 integration
- Type
- CompoundIntegration: mUSD Compound Integration
- Type
- BoostedSavingsVault: imBTC Vault
- Type
- CompoundIntegration: BUSD FP Iron Bank Integration for mBTC
- Type
- BoostedSavingsVault: BUSD Feeder Pool Vault
- Type
- CompoundIntegration: GUSD FP Iron Bank Integration for mBTC
- Type
- BoostedSavingsVault: alUSD Feeder Pool Vault
- Type
- InterestValidator: Collects interest and gov fees from Feeder Pools
- Type
- RevenueRecipient: Receives governance fees and deposits to Balancer pool
- Type
- AlchemixIntegration: alUSD FP integration to Alchemix's alUSD staking pool
- Type
- Masset: mUSD
- Type
- MassetManager: Library contract for mUSD
- Type
- MassetManager: Library contract for mUSD
- Type
- SavingsContract: imUSD
- Type
- FeederPool: FRAX Feeder Pool
- Type
- SavingsManager: Validates and distributes system revenue to savers
- Type
- Pliquidator: Liquidates wmatic rewards or USDC
- Type
- Masset: imUSD Vault
- Type
- DelayedProxyAdmin: Time delayed proxy admin
- Type
- PAaveIntegration: Aave integration contract
- Type
- InterestValidator: Validates the platform interest collection from the Feeder Pools
- Type
- SaveWrapper: Facilitates minting, deposits and staking of massets (mUSD and mBTC)
- Type
- Nexus: Resolves module addresses
- Type
- RewardsDistributor: Distributes MTA rewards to vaults
- Type
- Basic Rewards Forwarder
- Type
- https://github.com/mstable/mStable-contracts/blob/master/contracts/emissions/BridgeForwarder.sol
- Target
- Bridge Forwarder
- Type
- https://github.com/mstable/mStable-contracts/blob/master/contracts/emissions/EmissionsController.sol
- Target
- Emissions Controller
- Type
- https://github.com/mstable/mStable-contracts/blob/master/contracts/emissions/L2BridgeRecipient.sol
- Target
- L2 Bridge Recipient
- Type
- L2 Emissions Controller
- Type
Prioritized Vulnerabilities
We are especially interested in receiving and rewarding vulnerabilities of the following types:
- Loss of collateral or unfair payouts in the mStable StakedToken contracts, resulting in a loss of user funds
- Loss of collateral or stealing of funds from the mAsset, resulting in it becoming under-collateralized
- Unfair payouts through SAVE, MINT, REDEEM or SWAP functionalities that results in under-collateralized or affected system
- Manipulating or circumvention of mStable governance mechanism
- Locking or freezing or any of the mStable contracts or inability to upgrade
- Ineffective or error prone forge validation mechanisms
Additionally, mStable seeks reports of the following Immunefi Common Vulnerabilities.
Out of Scope & Rules
The following Immunefi Commonly Excluded Vulnerabilities are excluded from the mStable bug bounty program.
The following activities are prohibited by bug bounty program:
- Any testing with mainnet or public testnet contracts; all testing should be done on private testnets
- Any testing with pricing oracles or third party smart contracts
- Attempting phishing or other social engineering attacks against our employees and/or customers
- Any testing with third party systems and applications (e.g. browser extensions) as well as websites (e.g. SSO providers, advertising networks)
- Any denial of service attacks
- Automated testing of services that generates significant amounts of traffic
- Public disclosure of an unpatched vulnerability in an embargoed bounty