swan: deep dataflow analysis for Swift applications
SWAN
This branch contains the new generation of the SWAN framework.
The SWAN version described in our ESEC/FSE 2020 paper is located on this branch. This paper no longer represents the current state of SWAN because we have redesigned it entirely.
Summary
SWAN is a static program analysis framework that enables deep dataflow analysis for Swift applications (incl. iOS/macOS). Its applications include finding API misuses using typestate analysis and detecting security vulnerabilities using taint analysis.
We aim to provide developers and researchers with an easy-to-use and well-documented platform for analyzing Swift applications.
🚧 SWAN is very much WIP.
Features
- Wrappers for
xcodebuild
andswiftc
that build and dump SIL - SIL parser (99% coverage, up to 100k lines/second)
- Well documented intermediate representation (IR), called SWIRL
- Ability to write models for black-box functions with SWIRL
- Partial language and Swift Standard Library models
- Modular IR translation pipeline (for integration with other engines)
- Development tool for viewing Swift, SIL, and SWIRL side-by-side
- Optimizations: multi-threaded module processing, caching, selective parsing
- Cross-module analysis support
- Synchronized Pushdown Systems (SPDS) integration
- Call graph construction
- Configurable taint analysis
- Configurable typestate analysis
- Analysis for Visits Location Service and Standard Location Service for finding energy-inefficient configuration
- Annotation checker for regression testing
Install & Use
Copyright (C) 2021 themaplelab