[BIP-758] Update Bug Bounty Program scope for v3 assets

Introduction

Balancer Bug Bounty, hosted by Immunefi, has transitioned to the care of Balancer DAO after [BIP-687]. It’s imperative that we update the scope of the program to embrace v3 assets.

We are also introducing a change to KYC requirements, whereas there was no KYC in the past, Immunefi will conduct light KYC onboarding of security researchers according to the terms of use of the platform, which should result in no impact on the amount of relevant reports received.

After consulting with Immunefi team and contributions from DAO members, here are the proposed overview of the program:

Rewards by threat level

Rewards are distributed according to the impact of the vulnerability based on the Immunefi Vulnerability Severity Classification System V2.1. This is a simplified 5-level scale, with separate scales for websites/apps, smart contracts, and blockchains/DLTs, focusing on the impact of the vulnerability reported.

Smart Contracts

  • Critical Up to USD 1 000 000
  • High Up to USD 250 000
  • Medium Up to USD 25 000

All Critical/High severity bug reports must come with a PoC with an end-effect impacting an asset-in-scope in order to be considered for a reward. Explanations and statements are not accepted as PoC and code is required.

Critical smart contract vulnerabilities are further capped at 10% of economic damage, taking into account the funds at risk at the moment of the bug report submission. However, there is a minimum reward of USD 250,000. Additionally, the maximum reward is capped at USD 1 000 000, even if 10% of the damage in USD equivalent is greater than USD 1 000 000.

High severity smart contract vulnerabilities are also further capped at 10% of economic damage, taking into account the funds at risk at the moment of the bug report submission. However, there is a minimum reward of 50 000 USD. Additionally, the maximum reward is capped at USD 250 000, even if 10% of the damage is greater than USD 250 000.

Vulnerabilities involving non-standard ERC20 tokens are considered out of scope, as it would be trivial to insert an exploit into a token for the sake of applying to this bug bounty. A standard, Balancer-compatible ERC20 token is one that conforms to all EIP-20 interfaces and exhibits expected behavior in implementation; i.e., transfers move exactly N tokens from sender to recipient, and balances do not change by any means other than transfers. Notably, tokens with transfer fees, rebasing supplies, streaming mechanics, or multiple entrypoints are not compatible with Balancer, but that list is not exhaustive.

Known issues such as those previously highlighted in the following audit reports, past security contests and public disclosures are considered out of scope (list is not exhaustive):

Payouts are handled by the Balancer team directly and are denominated in USD. However, payouts are done in ETH or USDC, at the discretion of the team.

First level KYC is required by security researchers to participate in the program, following Immunefi’s terms of use.

Assets in Scope

Target Type
Balancer: BAL Token (0xba100000625a3754423978a60c9317c58a424e3d) | Address 0xba100000625a3754423978a60c9317c58a424e3d | Etherscan Smart Contract - BalancerGovernanceToken
Balancer: Authorizer (0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6) | Address 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6 | Etherscan Smart Contract - Authorizer
Balancer: Vault (0xBA12222222228d8Ba445958a75a0704d566BF2C8) | Address 0xBA12222222228d8Ba445958a75a0704d566BF2C8 | Etherscan Smart Contract - Vault
WeightedPoolFactory | Address 0x897888115Ada5773E02aA29F775430BFB5F34c51 | Etherscan Smart Contract - WeightedPoolFactory
Balancer: Weighted Pool 2 Tokens Factory (0xA5bf2ddF098bb0Ef6d120C98217dD6B141c74EE0) | Address 0xA5bf2ddF098bb0Ef6d120C98217dD6B141c74EE0 | Etherscan Smart Contract - WeightedPool2TokensFactory
ComposableStablePoolFactory | Address 0xDB8d758BCb971e482B2C45f7F8a7740283A1bd3A | Etherscan Smart Contract - ComposableStablePoolFactory
Balancer: Metastable Pool Factory (0x67d27634E44793fE63c467035E31ea8635117cd4) | Address 0x67d27634E44793fE63c467035E31ea8635117cd4 | Etherscan Smart Contract - MetaStablePoolFactory
NoProtocolFeeLiquidityBootstrappingPoolFactory | Address 0x0F3e0c4218b7b0108a3643cFe9D3ec0d4F57c54e | Etherscan Smart Contract - NoProtocolFeeLiquidityBootstrappingPoolFactory
BatchRelayerLibrary | Address 0xeA66501dF1A00261E3bB79D1E90444fc6A186B62 | Etherscan Smart Contract - BatchRelayerLibrary (V6)
BalancerRelayer | Address 0x35Cea9e57A393ac66Aaa7E25C391D52C74B5648f | Etherscan Smart Contract - BalancerRelayer (V6)
AuthorizerAdaptor | Address 0x8F42aDBbA1B16EaAE3BB5754915E0D06059aDd75 | Etherscan Smart Contract - AuthorizerAdaptor
BALTokenHolderFactory | Address 0xB848f50141F3D4255b37aC288C25C109104F2158 | Etherscan Smart Contract - BALTokenHolderFactory
BalancerTokenAdmin | Address 0xf302f9F50958c5593770FDf4d4812309fF77414f | Etherscan Smart Contract - BalancerTokenAdmin
GaugeAdder | Address 0x5DbAd78818D4c8958EfF2d5b95b28385A22113Cd | Etherscan Smart Contract - GaugeAdder (V4)
Vyper_contract | Address 0xC128a9954e6c874eA3d62ce62B468bA073093F25 | Etherscan Smart Contract - VotingEscrow
Vyper_contract | Address 0xC128468b7Ce63eA702C1f104D55A2566b13D3ABD | Etherscan Smart Contract - GaugeController
BalancerMinter | Address 0x239e55F427D44C3cc793f49bFB507ebe76638a2b | Etherscan Smart Contract - BalancerMinter
Vyper_contract | Address 0xe5F96070CA00cd54795416B1a4b4c2403231c548 | Etherscan Smart Contract - LiquidityGaugeV5 (V2)
LiquidityGaugeFactory | Address 0xf1665E19bc105BE4EDD3739F88315cC699cc5b65 | Etherscan Smart Contract -LiquidityGaugeFactory (V2)
SingleRecipientGaugeFactory | Address 0x4fb47126Fa83A8734991E41B942Ac29A3266C968 | Etherscan Smart Contract - SingleRecipientGaugeFactory (V2)
Vyper_contract | Address 0x67F8DF125B796B05895a6dc8Ecf944b9556ecb0B | Etherscan Smart Contract - VotingEscrowDelegation (V2)
VotingEscrowDelegationProxy | Address 0x6f5a2eE11E7a772AeB5114A20d0D7c0ff61EB8A0 | Etherscan Smart Contract - VotingEscrowDelegationProxy
ArbitrumRootGaugeFactory | Address 0x1c99324EDC771c82A0DCCB780CC7DDA0045E50e7 | Etherscan Smart Contract - ArbitrumRootGaugeFactory (V2)
PolygonRootGaugeFactory | Address 0xa98Bce70c92aD2ef3288dbcd659bC0d6b62f8F13 | Etherscan Smart Contract - PolygonRootGaugeFactory (V2)
FeeDistributor | Address 0xD3cf852898b21fc233251427c2DC93d3d604F3BB | Etherscan Smart Contract - FeeDistributor (V2)
SmartWalletChecker | Address 0x7869296Efd0a76872fEE62A058C8fBca5c1c826C | Etherscan Smart Contract - SmartWalletChecker
DistributionScheduler | Address 0xbfD9769b061E57e478690299011A028194D66e3C | Etherscan Smart Contract - DistributionScheduler
Vyper_contract | Address 0x2E96068b3D5B5BAE3D7515da4A1D2E52d08A2647 | PolygonScan Smart Contract - RewardsOnlyGauge
ChildChainGaugeFactory | Address 0x22625eEDd92c81a219A83e1dc48f88d54786B017 | PolygonScan Smart Contract - ChildChainGaugeFactory V2
Vyper_contract | Address 0xc9b36096f5201ea332Db35d6D195774ea0D5988f | PolygonScan Smart Contract - ChildChainGauge V2

V3 Assets in scope

All smart contracts of BalancerV2 can be found at GitHub - balancer/balancer-v2-monorepo: Balancer V2 Monorepo, and for Balancer V3 in https://github.com/balancer-labs/balancer-v3-monorepo. However, only those in the Assets in Scope table are considered as in-scope of the bug bounty program.

If a Critical impact can be caused to any other asset managed by Balancer that isn’t on this table but for which the impact is in the Impacts in Scope section below, you are encouraged to submit it for the consideration by the project.

Impacts in Scope

Only the following impacts are accepted within this bug bounty program. All other impacts are not considered as in-scope, even if they affect something in the assets in scope table.

Smart Contracts

Critical

  • Theft of >1% of total funds in the Vault
  • Permanent freezing of >1% of total funds in the Vault

High

  • Theft of deposited funds in excess of gas costs or swap fees
  • Permanent freezing of funds in excess of gas costs or swap fees

Medium

  • Temporary freezing of deposited funds in excess of gas costs or swap fees, potentially affecting multiple users
  • Theft of unclaimed yield
  • Permanent freezing of unclaimed yield
  • Individual losses of funds in excess of gas costs or swap fees, affecting a single user at the time (e.g. missing slippage checks)

Low

  • Individual DoS on a particular operation, affecting a single user at the time

Out of Scope & Rules

The following vulnerabilities are excluded from the rewards for this bug bounty program:

  • Attacks that the reporter has already exploited themselves, leading to damage
  • Attacks requiring access to leaked keys/credentials
  • Attacks requiring access to privileged addresses (governance, strategist)
  • Known issues acknowledged in past audits and / or security contests.

Smart Contracts and Blockchain

  • Incorrect data supplied by third party oracles
    • Not to exclude oracle manipulation/flash loan attacks
  • Basic economic governance attacks (e.g. 51% attack)
  • Lack of liquidity
  • Best practice critiques
  • Sybil attacks
  • Centralization risks

The following activities are prohibited by this 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
2 Likes

tl;dr;

  • Add V3 contracts to existing immunefi program
  • New program needs light KYC for payouts
  • Impact description was adjusted to better reflect potential issues and their severity for the V3 release
  • The rest of the terms and conditions remain mostly the same as before
2 Likes

Thanks for the clear specifications and update!

https://snapshot.org/#/s:balancer.eth/proposal/0x78e1e1243888b3c6f0bd6f4d4eeae66e8a753fb58db97502f3ddf6a6098bef6c

1 Like