Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Seemanta Saha

dblp:150/1658 · DBLP profile ↗
← Back
7ranked-venue papers
4as first author
3since 2021 · last 2023
0009-0005-6427-9068ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 7 · 4 first-author · 3 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
7 papers
Program analysis · 49% Software testing · 26% Program verification · 14%
Network and information security
4 papers
Systems and software security · 72% Hardware security and side channels · 28%

Topics — the 21 heaviest of 24, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
symbolic execution
1.642023
Obtaining Information Leakage Bounds via Approximate Model Counting · Proc. ACM Program. Lang. 2023
Rare Path Guided Fuzzing · ISSTA 2023
PREACH: A Heuristic for Probabilistic Reachability to Identify Hard to Reach Statements · ICSE 2022
Software testing
fuzzing
0.822023
Rare Path Guided Fuzzing · ISSTA 2023
JVM fuzzing for JIT-induced side-channel detection · ICSE 2020
Systems and software security
information flow control
0.712023
Obtaining Information Leakage Bounds via Approximate Model Counting · Proc. ACM Program. Lang. 2023
Systems and software security › information flow control
quantitative information flow
0.712023
Obtaining Information Leakage Bounds via Approximate Model Counting · Proc. ACM Program. Lang. 2023
Software testing › fuzzing
coverage-guided fuzzing
0.712023
Rare Path Guided Fuzzing · ISSTA 2023
Program analysis › symbolic execution
dynamic symbolic execution
0.712023
Rare Path Guided Fuzzing · ISSTA 2023
Program verification › probabilistic verification
probabilistic reachability analysis
0.612022
PREACH: A Heuristic for Probabilistic Reachability to Identify Hard to Reach Statements · ICSE 2022
Program verification › model checking › state space exploration
reachability analysis
0.612022
PREACH: A Heuristic for Probabilistic Reachability to Identify Hard to Reach Statements · ICSE 2022
Software testing
test coverage
0.612022
PREACH: A Heuristic for Probabilistic Reachability to Identify Hard to Reach Statements · ICSE 2022
Program analysis › symbolic execution
probabilistic symbolic execution
0.622022
Subformula Caching for Model Counting and Quantitative Program Analysis · ASE 2019
PREACH: A Heuristic for Probabilistic Reachability to Identify Hard to Reach Statements · ICSE 2022
Hardware security and side channels › side channel
timing side-channel detection
0.412020
JVM fuzzing for JIT-induced side-channel detection · ICSE 2020
Debugging and program repair
automated program repair
0.412019
Harnessing evolution for multi-hunk program repair · ICSE 2019
Program analysis › program comparison
code similarity
0.412019
Harnessing evolution for multi-hunk program repair · ICSE 2019
Program analysis › constraint solving
model counting
0.412019
Subformula Caching for Model Counting and Quantitative Program Analysis · ASE 2019
Debugging and program repair › automated program repair
multi-hunk repair
0.412019
Harnessing evolution for multi-hunk program repair · ICSE 2019
Program analysis
quantitative program analysis
0.412019
Subformula Caching for Model Counting and Quantitative Program Analysis · ASE 2019
Hardware security and side channels › hardware attack detection
side-channel detection
0.312018
Symbolic path cost analysis for side-channel detection · ISSTA 2018
Systems and software security
vulnerability discovery
0.212023
Rare Path Guided Fuzzing · ISSTA 2023
Automated reasoning and model checking
model counting
0.212023
Obtaining Information Leakage Bounds via Approximate Model Counting · Proc. ACM Program. Lang. 2023
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.112020
JVM fuzzing for JIT-induced side-channel detection · ICSE 2020
Program analysis
constraint solving
0.112019
Subformula Caching for Model Counting and Quantitative Program Analysis · ASE 2019

Methods — techniques the papers use, named apart from their topics

symbolic execution · 3.0approximate model counting · 2.0quantitative symbolic analysis · 1.3path-guided concolic execution · 1.3program analysis · 0.9fuzzing · 0.9model counting · 0.6markov chain · 0.6dependency analysis · 0.6abstract interpretation · 0.6taint analysis · 0.3satisfiability solving · 0.3
YearPublicationVenuePosition
2023 Rare Path Guided Fuzzing
abstract
Starting with a random initial seed, fuzzers search for inputs that trigger bugs or vulnerabilities. However, fuzzers often fail to generate inputs for program paths guarded by restrictive branch conditions. In this paper, we show that by first identifying rare-paths in programs (i.e., program paths with path constraints that are unlikely to be satisfied by random input generation), and then, generating inputs/seeds that trigger rare-paths, one can improve the coverage of fuzzing tools. In particular, we present techniques 1) that identify rare paths using quantitative symbolic analysis, and 2) generate inputs that can explore these rare paths using path-guided concolic execution. We provide these inputs as initial seed sets to three state of the art fuzzers. Our experimental evaluation on a set of programs shows that the fuzzers achieve better coverage with the rare-path based seed set compared to a random initial seed.
Seemanta Saha, Laboni Sarker, Md Shafiuzzaman, Chaofan Shou, Albert Li, Ganesh Sankaran, Tevfik Bultan
ISSTA1
2023 Obtaining Information Leakage Bounds via Approximate Model Counting
abstract
Information leaks are a significant problem in modern software systems. In recent years, information theoretic concepts, such as Shannon entropy, have been applied to quantifying information leaks in programs. One recent approach is to use symbolic execution together with model counting constraints solvers in order to quantify information leakage. There are at least two reasons for unsoundness in quantifying information leakage using this approach: 1) Symbolic execution may not be able to explore all execution paths, 2) Model counting constraints solvers may not be able to provide an exact count. We present a sound symbolic quantitative information flow analysis that bounds the information leakage both for the cases where the program behavior is not fully explored and the model counting constraint solver is unable to provide a precise model count but provides an upper and a lower bound. We implemented our approach as an extension to KLEE for computing sound bounds for information leakage in C programs.
Seemanta Saha, Surendra Ghentiyala, Shihua Lu, Lucas Bang, Tevfik Bultan
Proc. ACM Program. Lang.1
2022 PREACH: A Heuristic for Probabilistic Reachability to Identify Hard to Reach Statements
abstract
We present a heuristic for approximating the likelihood of reaching a given program statement using 1) branch selectivity (representing the percentage of values that satisfy a branch condition), which we compute using model counting, 2) dependency analysis, which we use to identify input-dependent branch conditions that influence statement reachability, 3) abstract interpretation, which we use to identify the set of values that reach a branch condition, and 4) a discrete-time Markov chain model, which we construct to capture the control flow structure of the program together with the selectivity of each branch. Our experiments indicate that our heuristic-based probabilistic reachability analysis tool PReach can identify hard to reach statements with high precision and accuracy in benchmarks from software verification and testing competitions, Apache Commons Lang, and the DARPA STAC program. We provide a detailed comparison with probabilistic symbolic execution and statistical symbolic execution for the purpose of identifying hard to reach statements. PReach achieves comparable precision and accuracy to both probabilistic and statistical symbolic execution for bounded execution depth and better precision and accuracy when execution depth is unbounded and the number of program paths grows exponentially. Moreover, PReach is more scalable than both probabilistic and statistical symbolic execution.
Seemanta Saha, Mara Downing, Tegan Brennan, Tevfik Bultan
ICSE1
2020 JVM fuzzing for JIT-induced side-channel detection
abstract
Timing side channels arise in software when a program's execution time can be correlated with security-sensitive program input. Recent results on software side-channel detection focus on analysis of program's source code. However, runtime behavior, in particular optimizations introduced during just-in-time (JIT) compilation, can impact or even introduce timing side channels in programs. In this paper, we present a technique for automatically detecting such JIT-induced timing side channels in Java programs. We first introduce patterns to detect partitions of secret input potentially separable by side channels. Then we present an automated approach for exploring behaviors of the Java Virtual Machine (JVM) to identify states where timing channels separating these partitions arise. We evaluate our technique on three datasets used in recent work on side-channel detection. We find that many code variants labeled "safe" with respect to side-channel vulnerabilities are in fact vulnerable to JIT-induced timing side channels. Our results directly contradict the conclusions of four separate state-of-the-art program analysis tools for side-channel detection and demonstrate that JIT-induced side channels are prevalent and can be detected automatically.
Tegan Brennan, Seemanta Saha, Tevfik Bultan
ICSE2
2019 Harnessing evolution for multi-hunk program repair
abstract
Despite significant advances in automatic program repair (APR) techniques over the past decade, practical deployment remains an elusive goal. One of the important challenges in this regard is the general inability of current APR techniques to produce patches that require edits in multiple locations, i.e., multi-hunk patches. In this work, we present a novel APR technique that generalizes single-hunk repair techniques to include an important class of multi-hunk bugs, namely bugs that may require applying a substantially similar patch at a number of locations. We term such sets of repair locations as evolutionary siblings - similar looking code, instantiated in similar contexts, that are expected to undergo similar changes. At the heart of our proposed method is an analysis to accurately identify a set of evolutionary siblings, for a given bug. This analysis leverages three distinct sources of information, namely the test-suite spectrum, a novel code similarity analysis, and the revision history of the project. The discovered siblings are then simultaneously repaired in a similar fashion. We instantiate this technique in a tool called HERCULES and demonstrate that it is able to correctly fix 46 bugs in the Defects4J dataset, the highest of any individual APR technique to date. This includes 15 multi-hunk bugs and overall 11 bugs which have not been fixed by any other technique so far.
Seemanta Saha, Ripon K. Saha, Mukul R. Prasad
ICSE1
2019 Subformula Caching for Model Counting and Quantitative Program Analysis
abstract
Quantitative program analysis is an emerging area with applications to software reliability, quantitative information flow, side-channel detection and attack synthesis. Most quantitative program analysis techniques rely on model counting constraint solvers, which are typically the bottleneck for scalability. Although the effectiveness of formula caching in expediting expensive model-counting queries has been demonstrated in prior work, our key insight is that many subformulas are shared across non-identical constraints generated during program analyses. This has not been utilized by prior formula caching approaches. In this paper we present a subformula caching framework and integrate it into a model counting constraint solver. We experimentally evaluate its effectiveness under three quantitative program analysis scenarios: 1) model counting constraints generated by symbolic execution, 2) reliability analysis using probabilistic symbolic execution, 3) adaptive attack synthesis for side-channels. Our experimental results demonstrate that our subformula caching approach significantly improves the performance of quantitative program analysis.
William Eiers, Seemanta Saha, Tegan Brennan, Tevfik Bultan
ASE2
2018 Symbolic path cost analysis for side-channel detection
abstract
Side-channels in software are an increasingly significant threat to the confidentiality of private user information, and the static detection of such vulnerabilities is a key challenge in secure software development. In this paper, we introduce a new technique for scalable detection of side- channels in software. Given a program and a cost model for a side-channel (such as time or memory usage), we decompose the control flow graph of the program into nested branch and loop components, and compositionally assign a symbolic cost expression to each component. Symbolic cost expressions provide an over-approximation of all possible observable cost values that components can generate. Queries to a satisfiability solver on the difference between possible cost values of a component allow us to detect the presence of imbalanced paths (with respect to observable cost) through the control flow graph. When combined with taint analysis that identifies conditional statements that depend on secret information, our technique answers the following question: Does there exist a pair of paths in the program's control flow graph, differing only on branch conditions influenced by the secret, that differ in observable side-channel value by more than some given threshold? Additional optimization queries allow us to identify the minimal number of loop iterations necessary for the above to hold or the maximal cost difference between paths in the graph. We perform symbolic execution based feasibility analyses to eliminate control flow paths that are infeasible. We implemented our techniques in a prototype, and we demonstrate its favourable performance against state-of-the-art tools as well as its effectiveness and scalability on a set of sizable, realistic Java server-client and peer-to-peer applications.
Tegan Brennan, Seemanta Saha, Tevfik Bultan, Corina Pasareanu
ISSTA2