All Vulnerabilities

Browse our complete database of 38 smart contract vulnerabilities

Showing 38 vulnerabilities

πŸ”Access Control & Authorization

Delegatecall Untrusted Callee

Delegatecall to Untrusted Callee `Delegatecall` is a special variant of a message call. It is almost identical to a regular message call except the t...

CriticalLearn more β†’
πŸ”Access Control & Authorization

Insufficient Access Control

Insufficient Access Control Access control is often imperative in management and ownership of smart contracts. It's important to consider ways in whi...

CriticalLearn more β†’
πŸ”’Arithmetic & Logic Errors

Off By One

Off-By-One Off-by-one errors are a common mistake made by programmers in which the intended boundaries are incorrect by only one, though these errors...

CriticalLearn more β†’
πŸ”’Arithmetic & Logic Errors

Overflow Underflow

Integer Overflow and Underflow In solidity, Integer types have maximum and minimum values. Integer overflow occurs when an integer variable exceeds th...

CriticalLearn more β†’
πŸ”„Reentrancy & External Calls

Reentrancy

Reentrancy Reentrancy is an attack that can occur when a bug in a contract may allow a malicious contract to reenter the contract unexpectedly during...

CriticalLearn more β†’
β›”Denial of Service

Dos Gas Limit

DoS with Block Gas Limit One of the primary benefits of a block gas limit is that it prevents attackers from creating an infinite transaction loop. I...

HighLearn more β†’
β›”Denial of Service

Dos Revert

DoS with (Unexpected) revert A DoS (Denial of Service) may be caused when logic is unable to be executed as a result of an unexpected revert. This ca...

HighLearn more β†’
β›”Denial of Service

Insufficient Gas Griefing

Insufficient Gas Griefing Insufficient gas griefing can be done on contracts which accept data and use it in a sub-call on another contract. This met...

HighLearn more β†’
πŸ”‘Randomness & Cryptography

Missing Protection Signature Replay

Missing Protection against Signature Replay Attacks Sometimes in smart contracts it is necessary to perform signature verification to improve usabili...

HighLearn more β†’
πŸ”‘Randomness & Cryptography

Signature Malleability

Signature Malleability It's generally assumed that a valid signature cannot be modified without the private key and remain valid. However, it is poss...

HighLearn more β†’
πŸ”‘Randomness & Cryptography

Timestamp Dependence

Timestamp Dependence **NOTE: This vulnerability no longer affects Ethereum mainnet as of the Proof of Stake merge. [Read more](https://ethereum.stack...

HighLearn more β†’
πŸ”‘Randomness & Cryptography

Unsecure Signatures

Unsecure Signatures......

HighLearn more β†’
πŸ”‘Randomness & Cryptography

Weak Sources Randomness

Weak Sources of Randomness from Chain Attributes Using chain attributes for randomness, e.g.: `block.timestamp`, `blockhash`, and `block.difficulty` ...

HighLearn more β†’
πŸ’ΎData & Storage Vulnerabilities

Arbitrary Storage Location

Write to Arbitrary Storage Location Only authorized addresses should have access to write to sensitive storage locations. If there isn't proper autho...

MediumLearn more β†’
πŸ”’Arithmetic & Logic Errors

Assert Violation

Assert Violation In Solidity `0.4.10`, the following functions were created: `assert()`, `require()`, and `revert()`. Here we'll discuss the assert f...

MediumLearn more β†’
πŸ’ΎData & Storage Vulnerabilities

Asserting Contract From Code Size

Asserting contract from Code Size A common method for asserting whether a sender is a contract or EOA has been to check the code size of the sender. ...

MediumLearn more β†’
πŸ”Access Control & Authorization

Authorization Txorigin

Authorization Through tx.origin `tx.origin` is a global variable in Solidity which returns the address that sent a transaction. It's important that y...

MediumLearn more β†’
πŸ”‘Randomness & Cryptography

Hash Collision

Hash Collision when using `abi.encodePacked()` with Multiple Variable-Length Arguments In Solidity, the `abi.encodePacked()` function is used to crea...

MediumLearn more β†’
βš™οΈCode Quality & Best Practices

Inadherence To Standards

Inadherence to Standards In terms of smart contract development, it's important to follow standards. Standards are set to prevent vulnerabilities, an...

MediumLearn more β†’
βš™οΈCode Quality & Best Practices

Incorrect Constructor

Incorrect Constructor Name > [!NOTE] > This vulnerability is relevant to older contracts using Solidity versions before `0.4.22`. Modern Solidity v...

MediumLearn more β†’
βš™οΈCode Quality & Best Practices

Incorrect Inheritance Order

Incorrect Inheritance Order In Solidity, it is possible to inherit from multiple sources, which if not properly understood can introduce ambiguity. T...

MediumLearn more β†’
πŸ”’Arithmetic & Logic Errors

Lack Of Precision

Lack of Precision In Solidity, there are a limited variety of number types. Differently from many programming languages, floating point numbers are u...

MediumLearn more β†’
πŸ”’Arithmetic & Logic Errors

Msgvalue Loop

Using ``msg.value`` in a Loop The value of ``msg.value`` in a transaction’s call never gets updated, even if the called contract ends up sending some...

MediumLearn more β†’
πŸ”’Arithmetic & Logic Errors

Requirement Violation

Requirement Violation The `require()` method is meant to validate conditions, such as inputs or contract state variables, or to validate return value...

MediumLearn more β†’
βš™οΈCode Quality & Best Practices

Shadowing State Variables

Shadowing State Variables It is possible to use the same variable twice in Solidity, but it can lead to unintended side effects. This is especially d...

MediumLearn more β†’
πŸ’ΎData & Storage Vulnerabilities

Transaction Ordering Dependence

Transaction-Ordering Dependence Transactions on Ethereum are grouped together in blocks which are processed on a semi-regular interval, 12 seconds. B...

MediumLearn more β†’
πŸ”„Reentrancy & External Calls

Unbounded Return Data

Unbounded Return Data The [Byzantium](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement) 2017 mainnet hard-fork introduced [EIP-211](htt...

MediumLearn more β†’
πŸ”„Reentrancy & External Calls

Unchecked Return Values

Unchecked Return Values The main idea behind this type of vulnerability is the failure to properly handle the return values of external function call...

MediumLearn more β†’
πŸ’ΎData & Storage Vulnerabilities

Unencrypted Private Data On Chain

Unencrypted Private Data On-Chain Ethereum smart contract code, storage, and any data transacted on-chain can always be read. Treat it as such. Even ...

MediumLearn more β†’
πŸ”‘Randomness & Cryptography

Unexpected Ecrecover Null Address

Unexpected `ecrecover` Null Address `ecrecover` is a precompiled built-in cryptographic function which recovers an address associated with the public...

MediumLearn more β†’
πŸ’ΎData & Storage Vulnerabilities

Uninitialized Storage Pointer

Uninitialized Storage Pointer > [!NOTE] > As of solidity `0.5.0`, uninitialized storage pointers are no longer an issue since contracts with uninit...

MediumLearn more β†’
πŸ”„Reentrancy & External Calls

Unsafe Low Level Call

Unsafe Low-Level Call In Solidity, you can either use low-level calls such as: `address.call()`, `address.callcode()`, `address.delegatecall()`, and ...

MediumLearn more β†’
βš™οΈCode Quality & Best Practices

Unsupported Opcodes

Unsupported Opcodes EVM-compatible chains, such as zkSync Era, BNB Chain, Polygon, Optimism and Arbitrum implement the Ethereum Virtual Machine (EVM)...

MediumLearn more β†’
πŸ”Access Control & Authorization

Default Visibility

Default Visibility Visibility specifiers are used to determine where a function or variable can be accessed from. As explained in the [solidity docs]...

LowLearn more β†’
βš™οΈCode Quality & Best Practices

Floating Pragma

Floating Pragma It is considered best practice to pick one compiler version and stick with it. With a floating pragma, contracts may accidentally be ...

LowLearn more β†’
βš™οΈCode Quality & Best Practices

Outdated Compiler Version

Outdated Compiler Version Developers often find bugs and vulnerabilities in existing software and make patches. For this reason, it's important to us...

LowLearn more β†’
βš™οΈCode Quality & Best Practices

Unused Variables

Presence of Unused Variables Although it is allowed, it is best practice to avoid unused variables. Unused variables can lead to a few different prob...

LowLearn more β†’
βš™οΈCode Quality & Best Practices

Use Of Deprecated Functions

Use of Deprecated Functions As time goes by, functions and operators in Solidity are deprecated and often replaced. It's important to not use depreca...

LowLearn more β†’