VLab Projects
Current Projects
Project Title: Automata Based String Analysis for Detecting Vulnerabilities in Web Applications
Summary
Web applications contain numerous vulnerabilities that can be exploited by attackers to gain unauthorized
access to confidential information and to manipulate sensitive data. Certain input validation vulnerabilities
can be automatically identified by means of static code analysis. In particular, data flow analysis can be used
to track the flow of potentially malicious data from a source (where user-input is read) to a sink (a sensitive
program operation).
Traditional data flow analysis considers only binary taint qualifiers, where standard sanitization functions
are assumed to convert a tainted (bad) value to an untainted (safe) value. However, such an approach
misses certain SQL injection vulnerabilities and cannot identify incorrect sanitization routines. To cover a
broader range of security flaws, researchers have proposed to extend data flow analysis with string analysis,
a technique that captures the string values that a certain variable might hold at a particular program point.
Unfortunately, existing string analysis techniques often make conservative approximations that lead to unnecessarily
imprecise results. This makes static vulnerability detection tools report many false positives.
In this project, we propose to develop novel techniques for more precise string analysis. To this end,
we will use an automata-based approach that represents possible values of a string variable at a program
point as a deterministic finite automaton (DFA). Using DFAs, we will develop techniques that support pathsensitivity.
To enable precise analysis of loops, we will develop automata-based widening operations. Furthermore,
we will extend the basic string analysis techniques to a composite analysis where relationships
among string variables and other types of variables can be automatically discovered and analyzed. Using
our novel string analysis techniques, false positives due to overly conservative approximations will be
significantly reduced.
In addition to reducing false positives, we also propose to leverage the results of our precise string analysis
to develop novel security solutions and to detect interesting, new classes of vulnerabilities. In particular,
we plan to use string analysis to detect malicious file inclusion vulnerabilities. To identify this important
type of security problem, it is necessary to possess precise information on the arguments of operations that
dynamically load code. Moreover, we propose two novel program capability analyses that use precise string
information to gather information about how an application interacts with a back-end database and the file
system. This allows us to restrict an application’s database access privileges to a required minimum, and it
supports the prevention of directory traversal attacks.
Funding
This project is funded by NSF grant CCF 0916112
(PI: Tevfik Bultan, Co-PI: Chris Kruegel)
Period: 2009-2012,
Amount: $350,000)
provided by Directorate
for Computer and Information Science and Engineering (CISE),
Division of Computing and Communication Foundations (CCF),
Trusted Computing Program.
Project Title: Modeling and Analyzing Trust in Service-Oriented Architectures
Summary
Service-oriented architectures (SOAs) enable the dynamic integration of
services implemented on heterogeneous computer systems. An advantage of SOAs
is that they provide high-level, semantically-rich services by abstracting the
low-level details of their implementation. The availability of useful
services such as Google's and Amazon's web service APIs has fostered a number
of applications that integrate a number of services to provide novel, more
complex functionality.
Unfortunately, as is the case with most software, the security of SOAs has
been a secondary concern. Most of the security efforts in the SOA community
have been focusing on developing web services standards, such as WS-Security,
XACML, and SAML. The problem with these standards is that they only specify an
acceptable level of practice, not the best practice, and this acceptable level
is only achieved if the standard is properly applied. However, experience
shows that both web services and service-based applications are often
developed under strict time constraints by programmers with little security
training. As a result, vulnerable services and service-based applications are
deployed and made available to the whole Internet, creating easily-exploitable
entry points for the compromise of entire networks.
As the service-oriented model is increasingly adopted, there is a need for
rigorous approaches to model trust in SOAs and ensure trust in the composition
of services, in the form of service-based applications. These approaches
should guarantee that by composing services that satisfy certain trust
properties one will obtain an application that satisfies the desired trust
properties.
The goal of this project is to develop novel tools and
techniques for the modeling and analysis of trust properties of SOA-based
applications. More precisely, the proposed research is to develop a
framework that leverages formal models of trust, automated, and interactive
verification techniques, and program analysis techniques to address trust
properties of single services and of their compositions, at both the interface
and implementation levels.
Funding
This project is funded by NSF grant CNS-0716095
(PI: Giovanni Vigna, Co-PIs: Tevfik Bultan, Richard Kemmerer)
Period: 2007-2010,
Amount: $850,000)
provided by Directorate
for Computer and Information Science and Engineering (CISE),
Division of Compututer and Network Systems (CNS),
Cyber Trust Program.
Past Projects
Project Title: Design for Verification
Summary
Developing dependable software is one of the most important
challenges in computer science and a scientific approach to design
has to address this problem.
There has been significant progress in automated verification techniques
in recent years, however, scalable software verification remains out of reach.
A design for verification approach, which enables software developers to
document the design decisions that can be useful during verification, can
improve scalability and applicability of automated verification techniques
significantly.
The approach proposed in this project is to use behavioral
interface specifications that support abstraction and modular verification
to achieve scalable verification. These specifications will be embedded
into the code using design patterns which are geared
towards specific classes of verification problems and domain specific
verification techniques. Each design pattern will identify the
design information necessary to achieve scalable verification in a
particular application domain and provide helper classes that will be
used to record the required design information in the code. This
design information will be used to identify the module boundaries and
construct compact models which abstract parts of the code that do
not relate to the properties that are being verified.
Initial results on application of this approach to verification
of synchronization operations in concurrent programs and to
verification of interactions among distributed components led to
very promising results.
These preliminary results suggest that it should be possible to
develop a general design for verification
framework based on these principles.
Funding
This project is funded by NSF grant CCF-0614002
(PI: Tevfik Bultan,
Period: 2006-2008,
Amount: $200,000)
provided by Directorate
for Computer and Information Science and Engineering (CISE),
Division of Computing and Communications Foundations (CCF),
Science of Design Program.
Project Title: Design for Verification: A New Approach for Developing Highly Dependable Software
Summary
This project will investigate two aspects of design for verification.
The first one is enabling
software designers to structure the software systems in ways that
make them easier to verify. This requires identifying
the design principles for developing verifiable systems.
The second aspect of design for verification is
to elicit extra information from
the software designers that would be helpful during automated verification.
This requires identifying mechanisms for passing this information
obtained during the design phase to the verification phase.
Funding
This project is funded by a grant (PI: Tevfik Bultan,
Period: 2006-2007, Amount: $7,000)
from Committee on Research, University
of California, Santa Barbara.
Project Title: Reliable Concurrent Software Development via Reliable Concurrency Controllers
Summary
Run-time errors in concurrent programs are generally due to wrong usage of
synchronization primitives such as monitors. Conventional validation
techniques such as testing become ineffective for concurrent programs
since the state space increases exponentially with the number of
concurrent processes. In recent years there has been considerable progress
in automated verification techniques for concurrent systems based on model
checking. This project presents a framework for reliable concurrent
programming based on interface-based specification and verification of
concurrency controllers. Proposed specification and verification
techniques for concurrency controllers are modularized by decoupling
behavior and interface specifications. The behavior specification is a set
of actions (which correspond to methods or procedures) composed of guarded
commands. The interface specification is a finite state machine whose
transitions represent actions. Concurrency controllers can be designed
modularly by composing their interfaces. The proposed approach separates
the verification of the concurrency controllers (behavior verification)
from the verification of the threads which use them (interface
verification). For behavior verification it is possible to use symbolic
and infinite-state verification techniques which enables verification of
controllers with parameterized constants, unbounded variables and
arbitrary number of client threads. For interface verification it is
possible to use explicit state program verification techniques which
enables verification of arbitrary thread implementations without any
restrictions. The correctness of the user threads can be verified using
stubs generated from the concurrency controller interfaces which improves
the efficiency of the thread verification significantly. It is possible to
synthesize efficient Java monitors from the concurrency controller
specifications, and the generated implementations preserve the verified
properties of the specifications. The proposed framework will be
implemented as a set of tools for concurrency controller specification,
verification and synthesis.
Selected Publications
- Aysu Betin-Can, Tevfik Bultan, Mikael Lindvall, Benjamin Lux, and Stefan Topp. "Application of Design for Verification with Concurrency Controllers to Air Traffic Control Software." To appear in the Proceedings of the 20th IEEE International Conference on Automated Software Engineering (ASE 2005), Long Beach, California, USA, November 7-11, 2005.
- Tevfik Bultan and Aysu Betin-Can. "Scalable Software Model Checking Using Design for Verification. To appear in the Proceedings of the IFIP Working Conference on Verified Software: Theories, Tools, Experiments, Zurich, Switzerland, October 10-14, 2005.
- Aysu Betin-Can and Tevfik Bultan. "Verifiable Concurrent Programming Using Concurrency Controllers." In Proceedings of the 19th IEEE International Conference on Automated Software Engineering (ASE 2004), pp. 248-257, September 20-25, 2004, Linz, Austria.
Funding
This project is funded by NSF grant CCF-0341365
(PI: Tevfik Bultan,
Period: 2003-2007,
Amount: $336,000)
provided by Directorate
for Computer and Information Science and Engineering (CISE),
Division of Computing and Communications Foundations (CCF),
Trusted Computing Program.
Project Title: Developing Reliable Concurrency-Controllers
Summary
In this project, we use automated verification techniques for developing
reliable concurrency-controllers. Concurrency-controllers are
software components which are
used solely for concurrency control.
We propose a modular approach to development of concurrency-controllers
which: 1) decouples the behavior and the interface specifications
of concurrency-controllers and
2) uses both symbolic and explicit state
automated verification techniques by exploiting this
separation.
Selected Publications
- Aysu Betin-Can and Tevfik Bultan. "Interface-Based Specification and Verification of Concurrency Controllers." In Proceedings of the Workshop on Software Model Checking (SoftMC 2003).
Funding
This project is funded by a grant (PI: Tevfik Bultan,
Period: 2003-2004, Amount: $8,913)
from Committee on Research, University
of California, Santa Barbara.
Project Title: CAREER: Verifiable Specifications: Tools for Reliable Reactive Software Development
Summary
Developing reliable software for reactive systems is a
challenging task. This project focuses on combining
and extending the results from two areas which address
this problem: 1) specification languages and 2) automated
verification methods for reactive systems. Building on the
recent results in these areas the goal of this project
is to develop verifiable specification languages. This
involves research from two directions: 1) From the
verification side the goal is to extend the scope of
techniques such as model checking to make them applicable
to a wider set of systems. 2) From the specification side
the goal is to restrict the specification languages as much
as possible (without reducing their ability to specify
complex systems) in order to make their automated verification
feasible. This project addresses both theoretical issues
such as complexity and efficiency of model checking
techniques, and practical issues such as investigating
usability of software specification languages and automated
verification techniques in practice.
Selected Publications
- Tuba Yavuz-Kahveci and Tevfik Bultan. "Specification, Verification, and Synthesis of Concurrency Control Components." Proceedings of the 2002 ACM/SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2002), pp. 169-179, July 22-24, 2002, Via di Ripette, Rome, Italy.
- Tevfik Bultan and Tuba Yavuz-Kahveci. "Action Language Verifier." Proceedings of the 16th IEEE International Conference on Automated Software Engineering (ASE 2001), pp. 382-386, Coronado Island, California, November 2001.
- Tevfik Bultan. "Action Language: A Specification Language for Model Checking Reactive Systems." Proceedings of the 22nd International Conference on Software Engineering (ICSE 2000), pp. 335-344, University of Limerick, Ireland, June 2000.
Funding
This project is funded by NSF CAREER award CCF-9984822
(PI: Tevfik Bultan,
Period: 2000-2004,
Amount: $200,000)
provided by Directorate
for Computer and Information Science and Engineering (CISE),
Division of Computing and Communications Foundations (CCF),
Software Engineering and Languages Program (SEL).
Project Title: A Composite Model Checking Toolset for Analyzing Software Systems
Summary
The goal of this project is to investigate a new automated verification
technique for analyzing software systems called composite model checking.
Model checking is a technique for searching the state space of a system
to find out
if it satisfies a given property. The success of model checking procedures
rely on the efficiency of the data structures used to represent the states of
the system. In this project a composite model will be developed for combining
multiple type-specific representations so that all variable types can be
represented efficiently during the state space search. This way,
representations such as Binary Decision Diagrams which are efficient for
encoding Boolean variables will be combined with representations such as linear
arithmetic constraints which can encode unbounded variables. A set of tools
will be implemented to support composite model checking. The layered structure
of the toolset will allow other researchers to use it at various levels 1) for
testing the effectiveness of new representations; 2) for investigating various
model checking strategies such as backward and forward search, partitioning and
abstraction; or 3) for analyzing complex software specifications.
Selected Publications
- Constantinos Bartzis and Tevfik Bultan. "Efficient Symbolic Representations for Arithmetic Constraints in Verification." International Journal of Foundations of Computer Science (IJFCS), special issue on Verification and Analysis of Infinite State Systems, vol. 14, no. 4, pp. 605-624, August 2003.
- Tuba Yavuz-Kahveci and Tevfik Bultan. "A Symbolic Manipulator for Automated Verification of Reactive Systems with Heterogeneous Data Types." International Journal on Software Tools for Technology Transfer (STTT), special issue on selected papers from the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Software Systems (TACAS 2001), vol. 5, no. 1, pp. 15-33, November 2003.
- Tevfik Bultan. "A Composite Model Checking Toolset for Analyzing Software Systems." ACM SIGSOFT Software Engineering Notes, Volume 25, Number 1, January 2000, Pages 37-38.
Funding
This project is funded by NSF grant CCF-9970976
(PI: Tevfik Bultan,
Period: 1999-2003,
Amount: $300,000)
provided by Directorate
for Computer and Information Science and Engineering (CISE),
Division of Computing and Communications Foundations (CCF),
Software Engineering and Languages Program (SEL).
Project Title: Tools and Techniques for Workflow Specifications
Summary
In this project we investigated the specification and verification techniques
for workflow specifications.
Workflow systems are used for
organizing the execution of multiple tasks, typically in support of a
business or scientific process.
Since
workflow systems involve concurrent execution of multiple tasks, the
control logic could easily get complicated.
We applied automated verification techniques to workflow systems
and developed several heuristics to improve the efficiency of the
verification task.
In particular, we investigated developing
automated verification techniques for a workflow language called
Vortex developed at Bell Labs.
As a case study, we verified properties of a Vortex
specification for an
automated help system for customers browsing a web store-front.
Selected Publications
- Xiang Fu, Tevfik Bultan, and Jianwen Su. "Formal Verification of E-Services and Workflows." In Proceedings of the Workshop on Web Services, e-Business, and the Semantic Web: Foundations, Models, Architecture, Engineering and Applications (WES 2002). C. Bussler, R. Hull, S. McIlraith, M.E. Orlowska, B. Pernici, and J. Yang, eds., LNCS 2512, pp. 188-202, Springer, Toronto, Canada, May 27-28, 2002.
- Xiang Fu, Tevfik Bultan, Richard Hull, and Jianwen Su. "Verification of Vortex Workflows." Proceedings of the Seventh International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2001), Tiziana Margaria and Wang Yi, eds., LNCS 2031, pp. 143-157, Springer, Genova, Italy, April 2001.
Funding
This project is funded by a grant
(PIs: Tevfik Bultan and Jianwen Su,
Period: 1999-2000,
Amount: $6,000)
from Committee on Research, University
of California, Santa Barbara.