SecureFlow

Static Taint Analysis Tool for Java

Java License MIT Status

Overview

SecureFlow is a research-oriented static taint-analysis tool that detects insecure data flows in Java applications. It identifies how user-controlled input (sources) can reach dangerous operations (sinks), producing a detailed report with severity levels and rule identifiers.

SecureFlow in Action 🚀

Below is a live demonstration of SecureFlow running in the terminal and printing analysis results in real time.

SecureFlow Terminal Demo

Why SecureFlow?

Architecture

Java Source File ↓ JavaParser AST Generation ↓ TaintAnalyzer (AST Visitor) ↓ Issue Collection ↓ Report Generation

Key components:

Folder Structure

SecureFlow/
├── docs/
│   ├── index.html
│   ├── design.md
│   └── limitations.md
├── examples/
│   └── Test1.java
│
├── src/
│   └── main/java/secureflow/...
│
├── config/
│   └── rules.json
├── evaluation/
│   ├── false_positive/FP1.java
│   └── true_positive/TP1.java
│
├── README.md
└── LICENSE
    

Getting Started

Clone the repository:

git clone https://github.com/MANISH-K-07/SecureFlow.git
cd SecureFlow
    

Compile:

javac -cp "lib/*" $(Get-ChildItem -Recurse src/main/java -Filter *.java | ForEach-Object { $_.FullName })
    

compile.ps1 is a plain text file in project root, containing the above PowerShell monster script, allowing simpler compilation via a single command:

.\compile.ps1
    

Run SecureFlow:

java -cp "lib/*;src/main/java" secureflow.Main examples/Test1.java
    

Future Extensions

Documentation

Explore detailed docs:

Academic & Research Relevance

Evaluation

Evaluated SecureFlow on a small benchmark suite consisting of manually crafted Java programs representing common security patterns.

True Positives:

False Positives:

These results demonstrate that SecureFlow can detect real vulnerabilities while avoiding false positives in common sanitization patterns.

License

This project is licensed under the MIT License.