FireBugs (research prototype for SSDTutor) is an Eclipse-based Intelligent Tutoring System (ITS) designed to assist developers in secure software development. It automatically detects cryptographic API misuses, suggests repairs, and provides educational feedback to help users understand underlying security vulnerabilities.
This tool covers eight common cryptographic usage patterns, including weak encryption algorithms, weak hash functions, and insecure random number generation.
Watch the FireBugs Setup and Usage Demo
- Prerequisites
- Installation & Setup
- Configuration
- Running the Application
- Usage Guide
- Key Features
- Citation
Successful execution requires specific environment versions. Please adhere to the following:
-
Java Development Kit (JDK) 11:
-
Ensure
JAVA_HOMEis set to your JDK 11 installation. -
Eclipse IDE for RCP and RAP Developers:
-
Required Version: 2021-06 (R)
-
Tip: Extract to a short path (e.g.,
c:\dev\eclipse) to avoid Windows path length issues.
- Launch Eclipse and create a new workspace (e.g.,
c:\data\workspace). - Prepare the UI:
- Close the "Welcome" tab.
- Open the Java Perspective (Window > Perspective > Open Perspective > Java).
- Close unneeded views (Task List, Outline) to declutter the interface.
Open a terminal and clone the project:
git clone https://git.unl.edu/firebug/firebugs-repair.git
- In Eclipse, select File > Import...
- Choose General > Existing Projects into Workspace.
- Browse to the cloned directory:
firebugs-repair/bugdetectionrepair/eclipseworkspace - Select and import both projects:
security-bug-detectorChangeDistiller
If ChangeDistiller shows errors:
- Right-click the
ChangeDistillerproject > Properties. - Navigate to Java Compiler.
- Check Enable project specific settings.
- Set Compiler compliance level to 1.8.
FireBugs uses Zest for Control Flow Graph (CFG) visualization.
- Go to Help > Install New Software...
- Work with:
--All Available Sites--. - Filter for:
zest. - Select Modeling > Zest SDK.
- Install and restart Eclipse.
- Go to Run > Run Configurations...
- Right-click Eclipse Application and select New Configuration.
- Main Tab:
- Name:
security-bug-detector - Runtime JRE: Select JDK 11.
- Plug-ins Tab:
- Uncheck "Validate Plug-ins automatically prior to launching".
- Click Apply.
- Click Run in the configuration dialog. A new Eclipse instance (Runtime Workspace) will launch.
- In the new Runtime window, perform the following setup:
- Import Rules:
- File > Import > Existing Projects...
- Path:
firebugs-repair/bugdetectionrepair/runtime-security-bug-detector/security_rules
- Import Sample Data:
- File > Import > Existing Projects...
- Path:
firebugs-repair/bugdetectionrepair/runtime-security-bug-detector/sampledatasets - Select all projects.
- Open Detection View:
- In the Quick Access bar (top right), type:
misuse. - Select Crypto Vulnerability Detection & Repair Viewer.
- In the top menu, select Firebugs.
- Click Generate File Path of Type(Preprocess1).
- Click Find Security Crypto bugs.
- Results will appear in the Detection Tree View. Click a node to see specific details in the table.
FireBugs utilizes automated program repair based on AST pattern matching.
- In the Detection Viewer, right-click a vulnerability (Type Root or Ind Root).
- Select the Repair option from the context menu.
- Open the Intelligent Tutoring System view via Quick Access (
misuse). - Use the Feedback Recommendation Viewer to see similar code examples and explanations for why the code is vulnerable.
Visualizes the flow between the vulnerability indicator and its root cause.
- Access: Quick Access > "Control Flow Graph (CFG) Viewer".
- Usage: Select an item in the detection table to render its graph.
Displays fine-grained edit operations between the buggy and repaired code versions.
- Access: Quick Access > "Edit Script Viewer".
- Usage: Right-click the viewer > Run Change Distiller. Click table entries to visualize differences side-by-side.
If you use this tool in your research, please cite the following paper:
@article{newar2023ssdtutor,
title={SSDTutor: A feedback-driven intelligent tutoring system for secure software development},
author={Newar, Dip Kiran Pradhan and Zhao, Rui and Siy, Harvey and Soh, Leen-Kiat and Song, Myoungkyu},
journal={Science of Computer Programming},
volume={227},
pages={102933},
year={2023},
publisher={Elsevier},
doi={10.1016/j.scico.2023.102933}
}