Smart Contract Vulnerability Coverage

MythX currently detects most SWCs found in the SWC Registry. Below you can find the types of vulnerabilities MythX covers.

Assertions and Property Checking

DETECTOR ANALYSES TYPE SWC-ID
Solidity assert violationSymbolic analysis, fuzzing (bytecode)SWC-110
MythX assertion violation (AssertionFailed event)Symbolic analysis, fuzzing (bytecode)SWC-110

Byte-code Safety

DETECTOR ANALYSES TYPE SWC-ID
Integer overflow in arithmetic operationSymbolic analysis, fuzzing (bytecode)SWC-101
Integer underflow in arithmetic operationSymbolic analysis, fuzzing (bytecode)SWC-110
Caller can redirect execution to arbitrary locationsSymbolic analysis, fuzzing (bytecode)SWC-127
Caller can write to arbitrary storage locationsSymbolic analysis, fuzzing (bytecode)SWC-124
Dangerous use of uninitialized storage variablesSolidity code analysisSWC-109

Authorization Controls

DETECTOR ANALYSES TYPE SWC-ID
Any sender can withdraw ETH from the contract accountSymbolic analysis, fuzzing (bytecode)SWC-105
Any sender can trigger SELFDESTRUCTSymbolic analysis, fuzzing (bytecode)SWC-106
Use of "tx.origin" as a part of authorization controlSolidity code analysisSWC-115

Control Flow

DETECTOR ANALYSES TYPE SWC-ID
Delegatecall to a user-supplied addressSymbolic analysis, fuzzing (bytecode)SWC-112
Call to a user-supplied addressSymbolic analysis, fuzzing (bytecode)SWC-107
Unchecked return value from external callSolidity code analysisSWC-104
Block timestamp influences a control flow decisionTaint analysis (bytecode)SWC-116
Environment variables influence a control flow decisionsTaint analysis (bytecode)SWC-120
Loop over unbounded data structureSolidity code analysisSWC-128
Implicit loop over unbounded data structureSolidity code analysisSWC-128
Usage of "continue" in "do-while"Solidity code analysisN/A
Multiple calls are executed in the same transactionStatic analysis (bytecode)SWC-113
Persistent state read following external callSymbolic analysis, fuzzing (bytecode)SWC-107
Persistent state write following external callSymbolic analysis, fuzzing (bytecode)SWC-107
Account state accessed after call to user-defined addressSymbolic analysis (bytecode)SWC-107
Return value of an external call is not checkedStatic analysis (bytecode)SWC-104
Potential weak source of randonmnessSolidity code analysisSWC-120
Requirement violationFuzzing (bytecode)SWC-123
Call with hardcoded gas amountSolidity code analysisSWC-134

ERC Standards

DETECTOR ANALYSES TYPE SWC-ID
Incorrect ERC20 implementationSolidity code analysisN/A

Solidity Coding Best Practices

DETECTOR ANALYSES TYPE SWC-ID
Outdated compiler versionSolidity code analysisSWC-102
No or floating compiler version setSolidity code analysisSWC-103
Use of right-to-left-override control characterSolidity code analysisSWC-130
Shadowing of built-in symbolSolidity code analysisSWC-119
Incorrect constructor nameSolidity code analysisSWC-118
State variable shadows another state variableSolidity code analysisSWC-119
Local variable shadows a state variableSolidity code analysisSWC-119
Function parameter shadows a state variableSolidity code analysisSWC-119
Named return value shadows a state variableSolidity code analysisSWC-119
Unary operation without effectSolidity code analysisSWC-129
Unary operation directly after assignmentSolidity code analysisSWC-129
Unused state variableSolidity code analysisSWC-131
Unused local variableSolidity code analysisSWC-131
Function visibility is not setSolidity code analysisSWC-100
State variable visibility is not setSolidity code analysisSWC-108
Use of deprecated functions: callcode(), sha3(), ...Solidity code analysisSWC-111
Use of deprecated global variables (msg.gas, ...)Solidity code analysisSWC-111
Use of deprecated keywords (throw, var)Solidity code analysisSWC-111
Incorrect function state mutabilitySolidity code analysisN/A