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.

Ivan Bocic

dblp:145/4011 · DBLP profile ↗
← Back
7ranked-venue papers
6as first author
0since 2021 · last 2019
—ORCID · none

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

Software engineering, systems software and programming languages · 7 · 6 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
6 papers
Program verification · 46% Program analysis · 40% Software maintenance and evolution · 7%
Network and information security
3 papers
Authentication and access control · 52% Web and mobile security · 48%

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

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
0.522017
Symbolic model extraction for web application verification · ICSE 2017
Coexecutability for Efficient Verification of Data Model Updates · ICSE (1) 2015
Program verification
theorem proving
0.522016
Finding access control bugs in web applications with CanCheck · ASE 2016
Efficient Data Model Verification with Many-Sorted Logic (T) · ASE 2015
Authentication and access control › access control policy engineering
access control verification
0.322017
Finding access control bugs in web applications with CanCheck · ASE 2016
Symbolic model extraction for web application verification · ICSE 2017
Program analysis
model inference
0.312017
Symbolic model extraction for web application verification · ICSE 2017
Program analysis › static analysis
web application analysis
0.312017
Symbolic model extraction for web application verification · ICSE 2017
Web and mobile security
web application security
0.212016
Finding access control bugs in web applications with CanCheck · ASE 2016
Program verification
automated verification
0.212015
Coexecutability for Efficient Verification of Data Model Updates · ICSE (1) 2015
Program analysis
loop analysis
0.212015
Coexecutability for Efficient Verification of Data Model Updates · ICSE (1) 2015
Program verification › invariant generation
loop invariant generation
0.212015
Coexecutability for Efficient Verification of Data Model Updates · ICSE (1) 2015
Program verification
web application verification
0.212014
Inductive verification of data model invariants for web applications · ICSE 2014

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

first-order logic · 0.9automated theorem proving · 0.7source language interpreter · 0.6dynamic instrumentation · 0.6code instrumentation · 0.6model extraction · 0.5bounded verification · 0.4unbounded verification · 0.2static program analysis · 0.2property inference heuristics · 0.2many-sorted logic · 0.2coexecution modeling · 0.2
YearPublicationVenuePosition
2019 Inductive verification of data model invariants in web applications using first-order logic
Ivan Bocic, Tevfik Bultan, Nicolás Rosner
Autom. Softw. Eng.1
2017 Symbolic model extraction for web application verification
abstract
Modern web applications use complex data models and access control rules which lead to data integrity and access control errors. One approach to find such errors is to use formal verification techniques. However, as a first step, most formal verification techniques require extraction of a formal model which is a difficult problem in itself due to dynamic features of modern languages, and it is typically done either manually, or using ad hoc techniques. In this paper, we present a technique called symbolic model extraction for extracting formal data models from web applications. The key ideas of symbolic model extraction are 1) to use the source language interpreter for model extraction, which enables us to handle dynamic features of the language, 2) to use code instrumentation so that execution of each instrumented piece of code returns the formal model that corresponds to that piece of code, 3) to instrument the code dynamically so that the models of methods that are created at runtime can also be extracted, and 4) to execute both sides of branches during instrumented execution so that all program behaviors can be covered in a single instrumented execution. We implemented the symbolic model extraction technique for the Rails framework and used it to extract data and access control models from web applications. Our experiments demonstrate that symbolic model extraction is scalable and extracts formal models that are precise enough to find bugs in real-world applications without reporting too many false positives.
Ivan Bocic, Tevfik Bultan
ICSE1
2016 Finding access control bugs in web applications with CanCheck
abstract
Access control bugs in web applications can have dire consequences since many web applications store private and sensitive data. In this paper we present an automated verification technique for access control in Ruby on Rails (Rails) applications. Our technique starts by automatically extracting a model that captures 1) the ways the data is accessed and modified by the application, 2) the access control policy of the application, and 3) the authorization checks used for access control policy enforcement. Then, it automatically translates this model to first order logic and uses automated theorem provers to check whether the declared access control policy is correctly enforced by the implementation. We implemented our technique in a tool called CanCheck. Using CanCheck on open source Rails applications, we found numerous previously unknown exploitable access control bugs as well as several deficiencies in access control policies.
Ivan Bocic, Tevfik Bultan
ASE1
2015 Coexecutability for Efficient Verification of Data Model Updates
abstract
Modern applications use back-end data stores for persistent data. Automated verification of the code that updates the data store would prevent bugs that can cause loss or corruption of data. In this paper, we focus on the most challenging part of this problem: automated verification of code that updates the data store and contains loops. Due to dependencies between loop iterations, verification of code that contains loops is a hard problem, and typically requires manual assistance in the form of loop invariants. We present a fully automated technique that improves verifiability of loops. We first define co execution, a method for modeling loop iterations that simplifies automated reasoning about loops. Then, we present a fully automated static program analysis that detects whether the behavior of a given loop can be modeled using co execution. We provide a customized verification technique for co executable loops that results in more effective verification. In our experiments we observed that, in 45% of cases, modeling loops using co execution reduces verification time between 1 and 4 orders of magnitude. In addition, the rate of inconclusive verification results in the presence of loops is reduced from 65% down to 24%, all without requiring loop invariants or any manual intervention.
Ivan Bocic, Tevfik Bultan
ICSE (1)1
2015 Efficient Data Model Verification with Many-Sorted Logic (T)
abstract
Misuse or loss of web application data can have catastrophic consequences in today's Internet oriented world. Hence, verification of web application data models is of paramount importance. We have developed a framework for verification of web application data models via translation to First Order Logic (FOL), followed by automated theorem proving. Due to the undecidability of FOL, this automated approach does not always produce a conclusive answer. In this paper, we investigate the use of many-sorted logic in data model verification in order to improve the effectiveness of this approach. Many-sorted logic allows us to specify type information explicitly, thus lightening the burden of reasoning about type information during theorem proving. Our experiments demonstrate that using many-sorted logic improves the verification performance significantly, and completely eliminates inconclusive results in all cases over 7 real world web applications, down from an 17% inconclusive rate.
Ivan Bocic, Tevfik Bultan
ASE1
2015 Data Model Property Inference, Verification, and Repair for Web Applications
abstract
Most software systems nowadays are Web-based applications that are deployed over compute clouds using a three-tier architecture, where the persistent data for the application is stored in a backend datastore and is accessed and modified by the server-side code based on the user interactions at the client-side. The data model forms the foundation of these three tiers, and identifies the sets of objects (object classes) and the relations among them (associations among object classes) stored by the application. In this article, we present a set of property patterns to specify properties of a data model, as well as several heuristics for automatically inferring them. We show that the specified or inferred data model properties can be automatically verified using bounded and unbounded verification techniques. For the properties that fail, we present techniques that generate fixes to the data model that establish the failing properties. We implemented this approach for Web applications built using the Ruby on Rails framework and applied it to ten open source applications. Our experimental results demonstrate that our approach is effective in automatically identifying and fixing errors in data models of real-world web applications.
Jaideep Nijjar, Ivan Bocic, Tevfik Bultan
ACM Trans. Softw. Eng. Methodol.2
2014 Inductive verification of data model invariants for web applications
abstract
Modern software applications store their data in remote cloud servers. Users interact with these applications using web browsers or thin clients running on mobile devices. A key issue in dependability of these applications is the correctness of the actions that update the data store, which are triggered by user requests. In this paper, we present techniques for au- tomatically checking if the actions of an application preserve the data model invariants. Our approach first automatically extracts a data model specification, which we call an abstract data store, from a given application using instrumented exe- cution. The abstract data store identifies the sets of objects and relations (associations) used by the application, and the actions that update the data store by deleting or creating objects or by changing the relations among the objects. We show that checking invariants of an abstract data store corre- sponds to inductive invariant verification, and can be done using a mapping to First Order Logic (FOL) and using a FOL theorem prover. We implemented this approach for the Rails framework and applied it to three open source applications. We found four previously unknown bugs and reported them to the developers, who confirmed and imme- diately fixed two of them.
Ivan Bocic, Tevfik Bultan
ICSE1