Add data flow analysis engine #2801
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request Title
Add data flow analysis engine with reentrancy detector
Description
PR introduces a general data flow analysis engine to Slither, along with a proof-of-concept reentrancy detector that demonstrates the engine's capabilities.
Summary
The existing reentrancy detector uses data flow in an ad-hoc manner specific to reentrancy detection. This contribution provides a general-purpose data flow analysis framework that can be extended for various static analysis techniques.
Key Changes
Data Flow Engine (
slither/analyses/data_flow/engine/
)engine.py
: Core data flow analysis engineanalysis.py
: Analysis framework integrationdomain.py
: Abstract domain definitionsdirection.py
: Analysis direction support (currently forward analysis)Proof of Concept Reentrancy Detector (
slither/analyses/data_flow/analyses/reentrancy/
)analysis/analysis.py
: Data flow-based reentrancy analysis implementationanalysis/domain.py
: Domain-specific abstractions for reentrancycore/state.py
: State representation for reentrancy analysisTechnical Implementation
loguru
for logging purposesTesting
Future Work
This engine provides the foundation for interval analysis (coming soon). The reentrancy detector is a proof of concept, not a production replacement.
Files Added
Dependencies
loguru
(for logging)Backward Compatibility
No breaking changes. All existing functionality remains unaffected.