Programming languages

group_project

Visible to the public  TWC: Small: Language-level Control of Authority

Modern computer applications are typically made up of different software components that are created by, or may act on behalf of, mutually distrustful entities. To ensure the security of computer systems, it is important to restrict the ability of the components to perform actions within the computer system. The Principle of Least Authority states that a component should be given only the ability (or authority) it needs to perform its task, and no more.

group_project

Visible to the public TWC: Medium: Collaborative: DIORE: Digital Insertion and Observation Resistant Execution

Cloud computing allows users to delegate data and computation to cloud providers, at the cost of giving up physical control of their computing infrastructure. An attacker with physical access to the computing platform can perform various physical attacks, referred to as digital insertion and observation attacks, which include probing memory buses, tampering with memory, and cold-boot style attacks. While memory encryption can prevent direct leakage of data under digital observation, memory access patterns to even encrypted data may leak sensitive information.

group_project

Visible to the public TTP: Medium: Crowd Sourcing Annotations

Both sound software verification techniques and heuristic software flaw-finding tools benefit from the presence of software annotations that describe the behavior of software components. Function summaries (in the form of logical annotations) allow modular checking of software and more precise reasoning. However, such annotations are difficult to write and not commonly produced by software developers, despite their benefits to static analysis. The Crowdsourcing Annotations project will address this deficiency by encouraging software-community-based crowd-sourced generation of annotations.

group_project

Visible to the public TWC: Medium: Collaborative: Flexible and Practical Information Flow Assurance for Mobile Apps

This project is developing tools and techniques for cost-effective evaluation of the trustworthiness of mobile applications (apps). The work focuses on enterprise scenarios, in which personnel at a business or government agency use mission-related apps and access enterprise networks.

group_project

Visible to the public TWC: Medium: Collaborative: Breaking the Satisfiability Modulo Theories (SMT) Bottleneck in Symbolic Security Analysis

The security of our software is critical for consumer confidence, the protection of privacy and valuable intellectual property, and of course national security. Because of our society's increased reliance on software, security breaches can lead to serious personal or corporate losses, and endanger the privacy, liberties, and even the lives of individuals. As threats to software security have become more sophisticated, so too have the techniques and analyses developed to improve it. Symbolic execution has emerged as a fundamental tool for security applications.

group_project

Visible to the public TWC: Small: Empirical Evaluation of the Usability and Security Implications of Application Programming Interface Design

The objective of this project is to gather empirical evidence on the tradeoffs between security and usability in programming language and library design. Although it is well known that poorly-designed interfaces can lead to increased defect rates and software vulnerabilities, there is currently little specific guidance to designers on what precise language and library features make programmers more or less likely to write vulnerable code. Furthermore, little of the existing guidance is empirically based. The project will develop empirically-based guidance on two issues.

group_project

Visible to the public SHF: Small: Higher-order Contracts for Distributed Applications

Distributed applications (such as web applications and cloud-based applications, where multiple computers cooperate to run the application) are becoming increasingly common. Given the amount of commercial activity and information handled by these distributed applications, it is important that these applications are correct, reliable, and efficient. However, many traditional tools and techniques for programmers cannot be used for distributed applications, making it difficult for programmers to write and debug distributed applications.

group_project

Visible to the public CRII: SaTC: A Language Based Approach to Hybrid Mobile App Security

The last few years have seen an explosive growth in the share of hybrid mobile apps worldwide, coinciding with the increasing ubiquity of HTML5. Hybrid app frameworks allow mobile developers to design app code using web technologies alone, and supply native and bridge code (APIs for accessing device resources) necessary for instant porting to several mobile platforms.

group_project

Visible to the public CAREER: Practical, Expressive, Language-based Information Security

Language-based security (the use of programming language abstractions and techniques for security) holds the promise of efficient enforcement of strong, formal, fine-grained, application-specific information security guarantees. However, language-based security has not yet reached its potential, and is not in widespread use for providing rich information security guarantees.

group_project

Visible to the public TWC: Medium: Collaborative: Flexible and Practical Information Flow Assurance for Mobile Apps

This project is developing tools and techniques for cost-effective evaluation of the trustworthiness of mobile applications (apps). The work focuses on enterprise scenarios, in which personnel at a business or government agency use mission-related apps and access enterprise networks.