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

Rody Kersten

dblp:89/9118 · also Rody W. J. Kersten · DBLP profile ↗
← Back
7ranked-venue papers
2as first author
0since 2021 · last 2020
—ORCID · none

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

Software engineering, systems software and programming languages · 4Artificial intelligence and machine learning · 1Systems, architecture and hardware · 1 · 1 first-authorSecurity and privacy · 1 · 1 first-authorTheory of computation · 1

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
2 papers
Software testing · 78% Program analysis · 22%
Network and information security
1 paper
Systems and software security · 100%

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

TopicWeightPapersLastEvidence papers
Software testing
fuzzing
0.622018
Badger: complexity analysis with fuzzing and symbolic execution · ISSTA 2018
POSTER: AFL-based Fuzzing for Java with Kelinci · CCS 2017
Program analysis › cost analysis
complexity analysis
0.312018
Badger: complexity analysis with fuzzing and symbolic execution · ISSTA 2018
Software testing › fuzzing
coverage-guided fuzzing
0.312017
POSTER: AFL-based Fuzzing for Java with Kelinci · CCS 2017
Software testing › fuzzing
greybox fuzzing
0.312017
POSTER: AFL-based Fuzzing for Java with Kelinci · CCS 2017
Systems and software security › vulnerability discovery
fuzzing
0.112017
POSTER: AFL-based Fuzzing for Java with Kelinci · CCS 2017
Systems and software security
vulnerability discovery
0.112017
POSTER: AFL-based Fuzzing for Java with Kelinci · CCS 2017

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

program instrumentation · 0.6symbolic execution · 0.3fuzzing · 0.3
YearPublicationVenuePosition
2020 Complexity vulnerability analysis using symbolic execution
abstract
Summary We describe techniques based on symbolic execution for finding software vulnerabilities that are due to algorithmic complexity. Such vulnerabilities allow an attacker to mount denial‐of‐service attacks to deny service to benign users or to otherwise disable a software system. The techniques use an efficient guided symbolic execution of a program to compute bounds on the worst‐case complexity (for increasing input sizes) and to generate test values that trigger the worst‐case behaviours. The resulting bounds are fitted to a function to obtain a prediction of the worst‐case program behaviour at any input size. Scalability is achieved by using path policies that guide the symbolic execution towards worst‐case paths. The policies are learned from the worst‐case results obtained with exhaustive exploration at small input sizes and are applied to guide exploration at larger input sizes, where unguided exhaustive exploration is not possible. To achieve precision in the analysis, the path policies take into account the history of choices made along the path when deciding which branch to execute next. Furthermore, the computation is contextpreserving, meaning that the decision for each branch depends on the history computed with respect to the enclosing method. We further report preliminary results on a complementary technique that uses machine learning for building the path policies that guide the search. The techniques are implemented in open‐source projects that build on the Symbolic Pathfinder tool for analysing Java programs. Experimental evaluation shows that the techniques can find vulnerabilities in complex Java programs and can outperform previous symbolic approaches.
Kasper Søe Luckow, Rody Kersten, Corina Pasareanu
Softw. Test. Verification Reliab.2
2018 Badger: complexity analysis with fuzzing and symbolic execution
abstract
Hybrid testing approaches that involve fuzz testing and symbolic execution have shown promising results in achieving high code coverage, uncovering subtle errors and vulnerabilities in a variety of software applications. In this paper we describe Badger - a new hybrid approach for complexity analysis, with the goal of discovering vulnerabilities which occur when the worst-case time or space complexity of an application is significantly higher than the average case.
Yannic Noller, Rody Kersten, Corina Pasareanu
ISSTA2
2018 A Cloud-Based Execution Framework for Program Analysis
Daniel Balasubramanian, Dmitriy Kostyuchenko, Kasper Søe Luckow, Rody Kersten, Gabor Karsai
SEFM4
2017 POSTER: AFL-based Fuzzing for Java with Kelinci
abstract
Grey-box fuzzing is a random testing technique that has been shown to be effective at finding security vulnerabilities in software. The technique leverages program instrumentation to gather information about the program with the goal of increasing the code coverage during fuzzing, which makes gray-box fuzzers extremely efficient vulnerability detection tools. One such tool is AFL, a grey-box fuzzer for C programs that has been used successfully to find security vulnerabilities and other critical defects in countless software products. We present Kelinci, a tool that interfaces AFL with instrumented Java programs. The tool does not require modifications to AFL and is easily parallelizable. Applying AFL-type fuzzing to Java programs opens up the possibility of testing Java based applications using this powerful technique. We show the effectiveness of Kelinci by applying it on the image processing library Apache Commons Imaging, in which it identified a bug within one hour.
Rody Kersten, Kasper Søe Luckow, Corina Pasareanu
CCS1
2017 Symbolic Complexity Analysis Using Context-Preserving Histories
abstract
We propose a technique based on symbolic execution for analyzing the algorithmic complexity of programs. The technique uses an efficient guided analysis to compute bounds on the worst-case complexity (for increasing input sizes) and to generate test values that trigger the worst-case behaviors. The resulting bounds are fitted to a function to obtain a prediction of the worst-case program behavior at any input sizes. Comparing these predictions to the programmers' expectations or to theoretical asymptotic bounds can reveal vulnerabilities or confirm that a program behaves as expected. To achieve scalability we use path policies to guide the symbolic execution towards worst-case paths. The policies are learned from the worst-case results obtained with exhaustive exploration at small input sizes and are applied to guide exploration at larger input sizes, where un-guided exhaustive exploration is no longer possible. To achieve precision we use path policies that take into account the history of choices made along the path when deciding which branch to execute next in the program. Furthermore, the history computation is context-preserving, meaning that the decision for each branch depends on the history computed with respect to the enclosing method. We implemented the technique in the Symbolic PathFinder tool. We show experimentally that it can find vulnerabilities in complex Java programs and can outperform established symbolic techniques.
Kasper Søe Luckow, Rody Kersten, Corina Pasareanu
ICST2
2017 Quantified Heap Invariants for Object-Oriented Programs
abstract
Heap and data structures represent one of the biggest challenges when applying model checking to the analysis of software programs: in order to verify (unbounded) safety of a program, it is typically necessary to formulate quantified inductive invariants that state properties about an unbounded number of heap locations. Methods like Craig interpolation, which are commonly used to infer invariants in model checking, are often ineffective when a heap is involved. To address this challenge, we introduce a set of new proof and program transformation rules for verifying object-oriented programs with the help of space invariants, which (implicitly) give rise to quantified invariants. Leveraging advances in Horn solving, we show how space invariants can be derived fully automatically, and how the framework can be used to effectively verify safety of Java programs.
Temesghen Kahsai, Rody Kersten, Philipp Rümmer, Martin Schäf
LPAR2
2014 ResAna: a resource analysis toolset for (real-time) JAVA
abstract
SUMMARY For real‐time and embedded systems, limiting the consumption of time and memory resources is often an important part of the requirements. Being able to predict bounds on the consumption of such resources during the development process of the code can be of great value. In this paper, we focus mainly on memory‐related bounds. Recent research results have advanced the state of the art of resource consumption analysis. In this paper, we present a toolset that makes it possible to apply these research results in practice for (real‐time) systems enabling JAVA developers to analyse symbolic loop bounds, symbolic bounds on heap size and both symbolic and numeric bounds on stack size. We describe which theoretical additions were needed in order to achieve this. We give an overview of the capabilities of the RESANA (Radboud University Nijmegen, The Netherlands) toolset that is the result of this effort. The toolset can not only perform generally applicable analyses, but it also contains a part of the analysis that is dedicated to the developers' (real‐time) virtual machine, such that the results apply directly to the actual development environment that is used in practice. Copyright © 2013 John Wiley & Sons, Ltd.
Rody Kersten, Bernard van Gastel, Olha Shkaravska, Manuel Montenegro, Marko C. J. D. van Eekelen
Concurr. Comput. Pract. Exp.1