Immunefi Vulnerability Severity Classification System - v2.3
At Immunefi, we classify bugs on a simplified 4-level scale:
- Critical
- High
- Medium
- Low
The development of this scale took into consideration multiple factors that may affect a vulnerability and its likelihood of exploitation, but finalizes them largely by the impact that they cause.
The table below is mostly concerned with the conseque nce of a successful exploit. Keep in mind that if the exploit requires elevated privileges or uncommon user interaction, the level of the bug may be downgraded to reflect that or rejected.
A more in-depth discussion of each impact listed below is available on our Help Center.
Blockchain/DLT
Level | Impact | |||
---|---|---|---|---|
4. Critical | - Network not being able to confirm new transactions (total network shutdown) - Unintended permanent chain split requiring hard fork (network partition requiring hard fork) - Direct loss of funds - Permanent freezing of funds (fix requires hardfork) | |||
3. High | - Unintended chain split (network partition) - Temporary freezing of network transactions by delaying one block by 500% or more of the average block time of the preceding 24 hours beyond standard difficulty adjustments - Causing network processing nodes to process transactions from the mempool beyond set parameters - RPC API crash affecting projects with greater than or equal to 25% of the market capitalization on top of the respective layer | |||
2. Medium | - Increasing network processing node resource consumption by at least 30% without brute force actions, compared to the preceding 24 hours - Shutdown of greater than or equal to 30% of network processing nodes without brute force actions, but does not shut down the network - A bug in the respective layer 0/1/2 network code that results in unintended smart contract behavior with no concrete funds at direct risk | |||
1. Low | - Shutdown of greater than 10% or equal to but less than 30% of network processing nodes without brute force actions, but does not shut down the network - Modification of transaction fees outside of design parameters |
Smart Contracts
Level | Impact | |||
---|---|---|---|---|
4. Critical | - Manipulation of governance voting result deviating from voted outcome and resulting in a direct change from intended effect of original results - Direct theft of any user funds, whether at-rest or in-motion, other than unclaimed yield - Direct theft of any user NFTs, whether at-rest or in-motion, other than unclaimed royalties - Permanent freezing of funds - Permanent freezing of NFTs - Unauthorized minting of NFTs - Predictable or manipulable RNG that results in abuse of the principal or NFT - Unintended alteration of what the NFT represents (e.g. token URI, payload, artistic content) - Protocol insolvency | |||
3. High | - Theft of unclaimed yield - Theft of unclaimed royalties - Permanent freezing of unclaimed yield - Permanent freezing of unclaimed royalties - Temporary freezing of funds - Temporary freezing NFTs | |||
2. Medium | - Smart contract unable to operate due to lack of token funds - Block stuffing - Griefing (e.g. no profit motive for an attacker, but damage to the users or the protocol) - Theft of gas - Unbounded gas consumption | |||
1. Low | - Contract fails to deliver promised returns, but doesn't lose value |
Websites and Apps
Level | Impact | |||
---|---|---|---|---|
4. Critical | - Execute arbitrary system commands - Retrieve sensitive data/files from a running server, such as: - /etc/shadow - database passwords - blockchain keys (this does not include non-sensitive environment variables, open source code, or usernames) - Taking down the application/website - Taking down the NFT URI - Taking state-modifying authenticated actions (with or without blockchain state interaction) on behalf of other users without any interaction by that user, such as: - Changing registration information - Commenting - Voting - Making trades - Withdrawals, etc. - Changing the NFT metadata - Subdomain takeover with already-connected wallet interaction - Direct theft of user funds - Malicious interactions with an already-connected wallet, such as: - Modifying transaction arguments or parameters - Substituting contract addresses - Submitting malicious transactions - Direct theft of user NFTs - Injection of malicious HTML or XSS through NFT metadata | |||
3. High | - Injecting/modifying the static content on the target application without JavaScript (persistent), such as: - HTML injection without JavaScript - Replacing existing text with arbitrary text - Arbitrary file uploads, etc. - Changing sensitive details of other users (including modifying browser local storage) without already-connected wallet interaction and with up to one click of user interaction, such as: - Email or password of the victim, etc. - Improperly disclosing confidential user information, such as: - Email address - Phone number - Physical address, etc. - Subdomain takeover without already-connected wallet interaction | |||
2. Medium | - Changing non-sensitive details of other users (including modifying browser local storage) without already-connected wallet interaction and with up to one click of user interaction, such as: - Changing the first/last name of user - Enabling/disabling notifications - Injecting/modifying the static content on the target application without JavaScript (reflected), such as: - Reflected HTML injection - Loading external site data - Redirecting users to malicious websites (open redirect) | |||
1. Low | - Changing details of other users (including modifying browser local storage) without already-connected wallet interaction and with significant user interaction, such as: - Iframing leading to modifying the backend/browser state (must demonstrate impact with PoC) - Taking over broken or expired outgoing links, such as: - Social media handles, etc. - Temporarily disabling user to access target site, such as: - Locking up the victim from login - Cookie bombing, etc. |
Out of Scope & Rules
These are the default impacts recommended to projects to mark as out of scope for their bug bounty program. The actual list of out of scope impacts differ from program to program.
- Impacts requiring attacks that the reporter has already exploited themselves, leading to damage
- Impacts caused by attacks requiring access to leaked keys/credentials
- Impacts caused by attacks requiring access to privileged addresses (including, but not limited to: governance and strategist contracts) without additional modifications to the privileges attributed
- Impacts relying on attacks involving the depegging of an external stablecoin where the attacker does not directly cause the depegging due to a bug in code
- Mentions of secrets, access tokens, API keys, private keys, etc. in Github will be considered out of scope without proof that they are in-use in production
- Best practice recommendations
- Feature requests
- Impacts on test files and configuration files unless stated otherwise in the bug bounty program
- Impacts requiring phishing or other social engineering attacks against project's employees and/or customers.
Smart Contracts/Blockchain DLT
- Incorrect data supplied by third party oracles
- Not to exclude oracle manipulation/flash loan attacks
- Impacts requiring basic economic and governance attacks (e.g. 51% attack)
- Lack of liquidity impacts
- Impacts from Sybil attacks
- Impacts involving centralization risks
Websites and Apps
- Theoretical impacts without any proof or demonstration
- Impacts involving attacks requiring physical access to the victim device
- Impacts involving attacks requiring access to the local network of the victim
- Reflected plain text injection (e.g. url parameters, path, etc.)
- This does not exclude reflected HTML injection with or without JavaScript
- This does not exclude persistent plain text injection
- Any impacts involving self-XSS
- Captcha bypass using OCR without impact demonstration
- CSRF with no state modifying security impact (e.g. logout CSRF)
- Impacts related to missing HTTP Security Headers (such as X-FRAME-OPTIONS) or cookie security flags (such as “httponly”) without demonstration of impact
- Server-side non-confidential information disclosure, such as IPs, server names, and most stack traces
- Impacts causing only the enumeration or confirmation of the existence of users or tenants
- Impacts caused by vulnerabilities requiring un-prompted, in-app user actions that are not part of the normal app workflows
- Lack of SSL/TLS best practices
- Impacts that only require DDoS
- UX and UI impacts that do not materially disrupt use of the platform
- Impacts primarily caused by browser/plugin defects
- Leakage of non sensitive API keys (e.g. Etherscan, Infura, Alchemy, etc.)
- Any vulnerability exploit requiring browser bugs for exploitation (e.g. CSP bypass)
- SPF/DMARC misconfigured records)
- Missing HTTP Headers without demonstrated impact
- Automated scanner reports without demonstrated impact
- UI/UX best practice recommendations
- Non-future-proof NFT rendering
The following activities are prohibited by default on bug bounty programs on Immunefi. However, projects may add further restrictions to their own program:
- Any testing on mainnet or public testnet deployed code; all testing should be done on local-forks of either public testnet or mainnet
- 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 that are executed against project assets
- Automated testing of services that generates significant amounts of traffic
- Public disclosure of an unpatched vulnerability in an embargoed bounty
- Any other actions prohibited by the Immunefi Rules