The Applied Programming Languages, Software Engineering, and Education (APPLeSEEd) Lab tackles problems in software, security, and systems and cultivates computational thinking.

Cyber Security and Privacy Research Cluster

The Cyber Security and Privacy (CyberSP) Cluster is a university-wide research cluster formed as part of the Faculty Cluster Initiative that focuses on security and privacy in cyberspace.

Current Research Projects

Inferring and Securing Software Configurations

Highly-configurable software forms the basis of much modern computing infrastructure, because configurability enables extensive reuse. However, software configurability opens the door to misconfiguration vulnerabilities, which are invalid settings that expose software weaknesses. Misconfiguration is one of the most critical and common security risks. Real-world software, however, can have an enormous number of possible configurations and often lacks explicit information about what configurations are secure, leaving users to find and validate configuration settings manually. Compounding the problem, a complete computing system may combine hundreds or thousands of software packages whose configuration settings interact unexpectedly. The goal of this project is to automate the creation of valid configurations that are reliable and secure. As the world increasingly depends on smart infrastructure and Internet-of-Things devices to enhance lives, this research will benefit society by improving the reliability and security of the configurable software used in these computing devices. A summary of this project was published in ESEC/FSE 2020 Visions & Reflections.

This work is supported by a grant from the NSF.

Analysis of Configurable Software

Highly-configurable software, e.g., the Linux kernel, form our most critical infrastructure, underpinning everything from high- performance computing clusters to Internet-of-things devices. Keeping these systems secure and reliable with automated tools is essential. However, their high degree of configurability leaves most critical software without comprehensive tool support. The problem is that most software tools do not scale to the colossal number of configurations of large systems. With millions of configurations in complex systems like Linux, there are simply too many to analyze individually. Instead, my goal is to make tools that work on all configurations simultaneously.

Research results include parsing both C proper and the C preprocessor together [PLDI 2012], analyzing all configurations of the Kbuild build system [ESEC/FSE 2017], investigating new programming language constructs to replace the preprocessor [ICSE-NIER 2019], and simulating variability-aware analysis [ESEC/FSE 2019] using configuration sampling tools developed with collaborators [TR 2018, TR 2019]. Ongoing work includes variability-aware static analysis and bug finding, configuration sampling strategies, and preprocessor usage analysis and translation. Relevant artifacts include SuperC and Kmax.

This work is supported by a grant from the NSF.

Side-Channel Attack Detection and Mitigation

A side channel is an observable aspect of a program’s execution, distinct from its input or output. Running time, memory usage, power consumption, network packet count, and more can all be side channels. If one of these happens to be correlated with secret information processed by the program, an attacker can exploit this to discover the secret, e.g., an encryption key or a password. Such side-channel attacks are particularly insidious. Even when a program is functionally correct, the performance characteristics of its algorithm may be a security vulnerability. Previous work includes the use of program analysis techniques to identify timing channel vulnerabilities [PLDI 2017]. Continuing work includes using compiler- and architecture-based mitigation [DAC 2021]. Relevant artifacts include Blazer.

Dormant Research Projects

Blockchain Smart Contracts

Smart contracts automate the execution or negotiation of a contract and have become a popular addition to blockchains. A smart contract can be seen as a concurrent shared object stored indefinitely on a blockchain. But in the most popular smart contract platform, Ethereum, no concurrency control is built into the language. To make consensus easy, all operations are performed sequentially , a disaster for throughput. Previous work includes adding concurrency to smart contract execution using speculative concurrency [PODC17a, PODC17b] and providing safety guarantees for smart contracts WTSC18.