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

DETECTORANALYSES TYPESWC-ID
Solidity assert violationSymbolic analysis, fuzzing (bytecode)SWC-110
MythX assertion violation (AssertionFailed event)Symbolic analysis, fuzzing (bytecode)SWC-110

Byte-code Safety

DETECTORANALYSES TYPESWC-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

DETECTORANALYSES TYPESWC-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

DETECTORANALYSES TYPESWC-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

DETECTORANALYSES TYPESWC-ID
Incorrect ERC20 implementationSolidity code analysisN/A

Solidity Coding Best Practices

DETECTORANALYSES TYPESWC-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