This is a scala implementation of a framework that builds a sparse-value flow graph using Soot.
- Experimental.
- Clone this repository or download a stable release.
- Add a GitHub token to your ~/.gitconfig.
[github] token = TOKEN
- Build this project using sbt (
sbt compile test
) - Publish the artifact as a JAR file in your m2 repository (
sbt publish
) - Create a dependency to the svfa-scala artifact in your maven project.
<dependency>
<groupId>br.unb.cic</groupId>
<artifactId>svfa-scala_2.12</artifactId>
<version>3.0.1-SNAPSHOT</version>
</dependency>
- Implement a class that extends the
JSVFA class
(see some examples in the scala tests). you must provide implementations to the following methods.getEntryPoints()
to set up the "main" methods. This implementation must return a list of Soot methods.sootClassPath()
to set up the soot classpath. This implementation must return a string.analyze(unit)
to identify the type of a node (source, sink, simple node) in the graph; given a statement (soot unit).
- Install Scala Plugin in IntelliJ IDEA.
- Install Java 8 (Java JDK Path
/usr/lib/jvm/java-8-openjdk-amd64
).
sudo apt install openjdk-8-jre-headless
sudo apt install openjdk-8-jdk
- Clone the project:
git clone https://github.com/rbonifacio/svfa-scala
- Add GitHub token in
~/.gitconfig
. - IDE
- Reload
sbt
. - Set Project's settings to work with Java 8.
- Build Project.
- Run test.
- Reload
This project integrates 2 well-known benchmarks.
This benchmark was integrated because it is also used in the FlowDroid Project
and the tests cases are in src/test/java/securibench
.
failed: 0, passed: 72, ignored: 31 of 103 test (69.90%)
-
AliasingTest - failed: 0, passed: 4, ignored: 2 of 6 test
(66.7%)
- [5]
- [6]
-
ArraysTest - failed: 0, passed: 5, ignored: 5 of 10 test
(50%)
- [2]
- [5]
- [8]
- [9]
- [10]
-
BasicTest - failed: 0, passed: 39, ignored: 3 of 42 test
(92.85%)
- [36]
- [38]
- [42]
-
CollectionTest - failed: 0, passed: 3, ignored: 11 of 14 test
(21.42%)
- [3]
- [4]
- [5]
- [6]
- [7]
- [8]
- [9]
- [10]
- [11] * There are any assertions here, it calls test [11b]
- [11b]
- [12]
- [13]
-
DataStructureTest - failed: 0, passed: 5, ignored: 1 of 6 test
(83.33%)
- [5]
-
FactoryTest - failed: 0, passed: 2, ignored: 1 of 3 test
(66.67%)
- [3]
-
InterTest - failed: 0, passed:11, ignored: 4 of 14 test
(78.57%)
- [6]
- [11] - flaky
- [12]
-
SessionTest - failed: 0, passed: 0, ignored: 3 of 3 test
(0%)
- [1]
- [2]
- [3]
-
StrongUpdateTest - failed: 0, passed: 3, ignored: 2 of 5 test
(60%)
- [3]
- [5]
Taintbench contains a set o Android Apks that are old malware apps.
We have created a file taintbench.properties
in src/test/resources
to set the configurations.
failed: ?, passed: 1, ignored: ? of 39 test (?%)
- [Roidsec]
- [ ]
- Finish integration of Taintbench.
- Add set up project documentation.
- Integrate Securibench as a submodule.
- Fix bugs for Securibench in folders
- Datastructure
- Factory
- Session
- Strong Update
- Aliasing