Marina Polishchuk

dblp:42/6416 · DBLP profile ↗
← Back
7ranked-venue papers
1as 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 · 7 · 1 first-author

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
4 papers
Software testing · 60% Software maintenance and evolution · 27% Debugging and program repair · 7%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Cloud and datacenter computing · 100%

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

TopicWeightPapersLastEvidence papers
Software maintenance and evolution › software evolution
API evolution
0.412020
Differential regression testing for REST APIs · ISSTA 2020
Software maintenance and evolution
breaking change detection
0.412020
Differential regression testing for REST APIs · ISSTA 2020
Software testing
regression testing
0.412020
Differential regression testing for REST APIs · ISSTA 2020
Software testing
API testing
0.412019
RESTler: stateful REST API fuzzing · ICSE 2019
Software testing › model-based testing
finite state machine testing
0.412019
RESTler: stateful REST API fuzzing · ICSE 2019
Software testing › fuzzing › API fuzzing
REST API fuzzing
0.412019
RESTler: stateful REST API fuzzing · ICSE 2019
Software testing › fuzzing
state-aware fuzzing
0.412019
RESTler: stateful REST API fuzzing · ICSE 2019
Program analysis
dynamic analysis
0.222010
Better Debugging via Output Tracing and Callstack-Sensitive Slicing · IEEE Trans. Software Eng. 2010
Dynamic heap type inference for program understanding and debugging · POPL 2007
Debugging and program repair
fault localization
0.112010
Better Debugging via Output Tracing and Callstack-Sensitive Slicing · IEEE Trans. Software Eng. 2010
Debugging and program repair
debugging tools
0.012010
Better Debugging via Output Tracing and Callstack-Sensitive Slicing · IEEE Trans. Software Eng. 2010

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

producer-consumer dependency inference · 0.8dynamic feedback analysis · 0.8stateful fuzzing · 0.4search heuristics · 0.4schema-based fuzzing · 0.4response-based value learning · 0.4differential testing · 0.4slice intersection · 0.1output tracing · 0.1symbolic debug information · 0.1physical subtyping · 0.1conservative garbage collection · 0.1
YearPublicationVenuePosition
2020 Checking Security Properties of Cloud Service REST APIs
abstract
Most modern cloud and web services are programmatically accessed through REST APIs. This paper discusses how an attacker might compromise a service by exploiting vulnerabilities in its REST API. We introduce four security rules that capture desirable properties of REST APIs and services. We then show how a stateful REST API fuzzer can be extended with active property checkers that automatically test and detect violations of these rules. We discuss how to implement such checkers in a modular and efficient way. Using these checkers, we found new bugs in several deployed production Azure and Office365 cloud services, and we discuss their security implications. All these bugs have been fixed.
Vaggelis Atlidakis, Patrice Godefroid, Marina Polishchuk
ICST3
2020 Differential regression testing for REST APIs
abstract
Cloud services are programmatically accessed through REST APIs. Since REST APIs are constantly evolving, an important problem is how to prevent breaking changes of APIs, while supporting several different versions. To find such breaking changes in an automated way, we introduce differential regression testing for REST APIs. Our approach is based on two observations. First, breaking changes in REST APIs involve two software components, namely the client and the service. As such, there are also two types of regressions: regressions in the API specification, i.e., in the contract between the client and the service, and regressions in the service itself, i.e., previously working requests are "broken" in later versions of the service. Finding both kinds of regressions involves testing along two dimensions: when the service changes and when the specification changes. Second, to detect such bugs automatically, we employ differential testing. That is, we compare the behavior of different versions on the same inputs against each other, and find regressions in the observed differences. For generating inputs (sequences of HTTP requests) to services, we use RESTler, a stateful fuzzer for REST APIs. Comparing the outputs (HTTP responses) of a cloud service involves several challenges, like abstracting over minor differences, handling out-of-order requests, and non-determinism. Differential regression testing across 17 different versions of the widely-used Azure networking APIs deployed between 2016 and 2019 detected 14 regressions in total, 5 of those in the official API specifications and 9 regressions in the services themselves.
Patrice Godefroid, Daniel Lehmann 0002, Marina Polishchuk
ISSTA3
2020 Intelligent REST API data fuzzing
abstract
The cloud runs on REST APIs. In this paper, we study how to intelligently generate data payloads embedded in REST API requests in order to find data-processing bugs in cloud services. We discuss how to leverage REST API specifications, which, by definition, contain data schemas for API request bodies. We then propose and evaluate a range of data fuzzing techniques, including structural schema fuzzing rules, various rule combinations, search heuristics, extracting data values from examples included in REST API specifications, and learning data values on-the-fly from previous service responses. After evaluating these techniques, we identify the top-performing combination and use this algorithm to fuzz several Microsoft Azure cloud services. During our experiments, we found 100s of “Internal Server Error” service crashes, which we triaged into 17 unique bugs and reported to Azure developers. All these bugs are reproducible, confirmed, and fixed or in the process of being fixed.
Patrice Godefroid, Bo-Yuan Huang 0001, Marina Polishchuk
ESEC/SIGSOFT FSE3
2019 RESTler: stateful REST API fuzzing
abstract
This paper introduces RESTler, the first stateful REST API fuzzer. RESTler analyzes the API specification of a cloud service and generates sequences of requests that automatically test the service through its API. RESTler generates test sequences by (1) inferring producer-consumer dependencies among request types declared in the specification (e.g., inferring that "a request B should be executed after request A" because B takes as an input a resource-id x produced by A) and by (2) analyzing dynamic feedback from responses observed during prior test executions in order to generate new tests (e.g., learning that "a request C after a request sequence A;B is refused by the service" and therefore avoiding this combination in the future). We present experimental results showing that these two techniques are necessary to thoroughly exercise a service under test while pruning the large search space of possible request sequences. We used RESTler to test GitLab, an open-source Git service, as well as several Microsoft Azure and Office365 cloud services. RESTler found 28 bugs in GitLab and several bugs in each of the Azure and Office365 cloud services tested so far. These bugs have been confirmed and fixed by the service owners.
Vaggelis Atlidakis, Patrice Godefroid, Marina Polishchuk
ICSE3
2010 Better Debugging via Output Tracing and Callstack-Sensitive Slicing
abstract
Debugging often involves 1) finding the point of failure (the first statement that produces bad output) and 2) finding and fixing the actual bug. Print statements and debugger break points can help with step 1. Slicing the program back from values used at the point of failure can help with step 2. However, neither approach is ideal: Debuggers and print statements can be clumsy and time-consuming and backward slices can be almost as large as the original program. This paper addresses both problems. We present callstack-sensitive slicing, which reduces slice sizes by leveraging the series of calls active when a program fails. We also show how slice intersections may further reduce slice sizes. We then describe a set of tools that identifies points of failure for programs that produce bad output. Finally, we apply our point-of-failure tools to a suite of buggy programs and evaluate callstack-sensitive slicing and slice intersection as applied to debugging. Callstack-sensitive slicing is very effective: On average, a callstack-sensitive slice is about 0.31 time the size of the corresponding full slice, down to just 0.06 time in the best case. Slice intersection is less impressive, on average, but may sometimes prove useful in practice.
Susan Horwitz, Ben Liblit, Marina Polishchuk
IEEE Trans. Software Eng.3
2007 Dynamic heap type inference for program understanding and debugging
abstract
C programs can be difficult to debug due to lax type enforcement and low-level access to memory. We present a dynamic analysis for C that checks heap snapshots for consistency with program types. Our approach builds on ideas from physical subtyping and conservative garbage collection. We infer a program-defined type for each allocated storage location or identify "untypable" blocks that reveal heap corruption or type safety violations. The analysis exploits symbolic debug information if present, but requires no annotation or recompilation beyond a list of defined program types and allocated heap blocks. We have integrated our analysis into the GNU Debugger (gdb), and describe our initial experience using this tool with several small to medium-sized programs.
Marina Polishchuk, Ben Liblit, Chloë W. Schulze
POPL1
2006 Path Optimization in Programs and Its Application to Debugging
Akash Lal, Junghee Lim, Marina Polishchuk, Ben Liblit
ESOP3