UC San Diego UC San Diego Previously Published Works Title Liquid information flow control Permalink https://escholarship.org/uc/item/0t20j69d Journal Proceedings of the ACM on Programming Languages, 4(ICFP) ISSN 2475-1421 Authors Polikarpova, Nadia Stefan, Deian Yang, Jean et al. Publication Date 2020-08-02 DOI 10.1145/3408987 Peer reviewed eScholarship.org Powered by the California Digital Library University of California Type-Driven Repair for Information Flow Security Nadia Polikarpova Jean Yang Shachar Itzhaky Massachusetts Institute of Technology Carnegie Mellon University Armando Solar-Lezama
[email protected] [email protected] Massachusetts Institute of Technology shachari,
[email protected] Abstract We present LIFTY, a language that uses type-driven program repair to enforce information flow policies. In LIFTY, the programmer Policies specifies a policy by annotating the source of sensitive data with a refinement type, and the system automatically inserts access checks Program Program Verify necessary to enforce this policy across the code. This is a significant with Repair with Program improvement over current practice, where programmers manually holes checks implement access checks, and any missing check can cause an information leak. To support this programming model, we have developed (1) an encoding of information flow security in terms of decidable refine- ment types that enables fully automatic verification and (2) a pro- gram repair algorithm that localizes unsafe accesses to sensitive data and replaces them with provably secure alternatives. We for- ✓ ✗ malize the encoding and prove its noninterference guarantee. Our experience using LIFTY to implement a conference management Specification Core program Program hole system shows that it decreases policy burden and is able to effi- ciently synthesize all necessary access checks, including those re- Policy check Tool component quired to prevent a set of reported real-world information leaks.