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. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Cole Schlesinger

dblp:31/10028 · DBLP profile ↗
← Back
17ranked-venue papers
3as first author
3since 2021 · last 2024
0009-0004-9350-3041ORCID · corroborated

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

Software engineering, systems software and programming languages · 11 · 1 first-author · 3 since 2021Computer networks · 3Security and privacy · 2 · 2 first-authorTheory of computation · 2Systems, architecture and hardware · 1

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
Programming languages and type systems · 42% Program synthesis and code generation · 16% Compilers and program optimization · 14%
Computer networks
5 papers
Network management and operations · 54% Software-defined and programmable networks · 46%
Network and information security
3 papers
Authentication and access control · 66% Usable security · 22% Systems and software security · 12%
Theoretical computer science
2 papers
Automata and formal languages · 64% Automated reasoning and model checking · 36%

Topics — the 27 heaviest of 30, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Network management and operations
network verification
1.132024
KATch: A Fast Symbolic Verifier for NetKAT · Proc. ACM Program. Lang. 2024
Correct by Construction Networks Using Stepwise Refinement · NSDI 2017
NetkAT: semantic foundations for networks · POPL 2014
Programming languages and type systems
domain-specific languages
0.812024
Daedalus: Safer Document Parsing · Proc. ACM Program. Lang. 2024
Automata and formal languages › automata over infinite alphabets
symbolic automata
0.812024
KATch: A Fast Symbolic Verifier for NetKAT · Proc. ACM Program. Lang. 2024
Program synthesis and code generation
type-directed synthesis
0.612022
Type-directed program synthesis for RESTful APIs · PLDI 2022
Programming languages and type systems
type inference
0.522016
A practical framework for type inference error explanation · OOPSLA 2016
Type inference for static compilation of JavaScript · OOPSLA 2016
Authentication and access control
access control
0.412020
Block public access: trust safety verification of access control policies · ESEC/SIGSOFT FSE 2020
Authentication and access control
access control policy
0.412020
Stratified Abstraction of Access Control Policies · CAV (1) 2020
Authentication and access control › access control
policy verification
0.412020
Block public access: trust safety verification of access control policies · ESEC/SIGSOFT FSE 2020
Usable security
trust and safety
0.412020
Block public access: trust safety verification of access control policies · ESEC/SIGSOFT FSE 2020
Automated reasoning and model checking
satisfiability modulo theories
0.412020
Stratified Abstraction of Access Control Policies · CAV (1) 2020
Software-defined and programmable networks › network programming
network programming languages
0.422024
KATch: A Fast Symbolic Verifier for NetKAT · Proc. ACM Program. Lang. 2024
NetkAT: semantic foundations for networks · POPL 2014
Software-defined and programmable networks › programmable data plane
p4 program verification
0.312018
p4v: practical verification for programmable data planes · SIGCOMM 2018
Software-defined and programmable networks
programmable data plane
0.312018
p4v: practical verification for programmable data planes · SIGCOMM 2018
Network management and operations › network configuration
network configuration synthesis
0.312017
Correct by Construction Networks Using Stepwise Refinement · NSDI 2017
Compilers and program optimization › compiler construction
ahead-of-time compilation
0.212016
Type inference for static compilation of JavaScript · OOPSLA 2016
Debugging and program repair › automated diagnosis
error explanation
0.212016
A practical framework for type inference error explanation · OOPSLA 2016
Compilers and program optimization
static compilation
0.212016
Type inference for static compilation of JavaScript · OOPSLA 2016
Systems and software security
memory safety
0.212024
Daedalus: Safer Document Parsing · Proc. ACM Program. Lang. 2024
Services computing and microservices › web service interfaces
RESTful APIs
0.212022
Type-directed program synthesis for RESTful APIs · PLDI 2022
Network management and operations
configuration verification
0.112012
Abstractions for network update · SIGCOMM 2012
Software-defined and programmable networks › network update
consistent network update
0.112012
Abstractions for network update · SIGCOMM 2012
Software-defined and programmable networks
network update
0.112012
Abstractions for network update · SIGCOMM 2012
Cloud and datacenter computing › cloud security
access control policies
0.112020
Block public access: trust safety verification of access control policies · ESEC/SIGSOFT FSE 2020
Cloud and datacenter computing
cloud security
0.112020
Block public access: trust safety verification of access control policies · ESEC/SIGSOFT FSE 2020
Debugging and program repair
fault localization
0.112016
A practical framework for type inference error explanation · OOPSLA 2016
Programming languages and type systems › type systems › subtyping
structural subtyping
0.112016
Type inference for static compilation of JavaScript · OOPSLA 2016
Software-defined and programmable networks
openflow
0.012012
Abstractions for network update · SIGCOMM 2012

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

formal verification · 1.5symbolic automata · 1.5stream manipulation constructs · 1.5parser combinators · 1.5bisimulation · 1.5stratified predicate abstraction · 0.9residual policy computation · 0.9SMT solving · 0.9SMT · 0.9domain-specific optimization · 0.7type inhabitation · 0.6constraint solving · 0.5fixed point solver · 0.2predicate transformers · 0.2dijkstra monad · 0.2verification · 0.1formal modeling · 0.1
YearPublicationVenuePosition
2024 Daedalus: Safer Document Parsing
abstract
Despite decades of contributions to the theoretical foundations of parsing and the many tools available to aid in parser development, many security attacks in the wild still exploit parsers. The issues are myriad—flaws in memory management in contexts lacking memory safety, flaws in syntactic or semantic validation of input, and misinterpretation of hundred-page-plus standards documents. It remains challenging to build and maintain parsers for common, mature data formats. In response to these challenges, we present Daedalus, a new domain-specific language (DSL) and toolchain for writing safe parsers. Daedalus is built around functional-style parser combinators, which suit the rich data dependencies often found in complex data formats. It adds domain-specific constructs for stream manipulation, allowing the natural expression of parsing noncontiguous formats. Balancing between expressivity and domain-specific constructs lends Daedalus specifications simplicity and leaves them amenable to analysis. As a stand-alone DSL, Daedalus is able to generate safe parsers in multiple languages, currently C++ and Haskell. We have implemented 20 data formats with Daedalus, including two large, complex formats—PDF and NITF–and our evaluation shows that Daedalus parsers are concise and performant. Our experience with PDF forms our largest case study. We worked with the PDF Association to build a reference implementation, which was subject to a red-teaming exercise along with a number of other PDF parsers and was the only parser to be found free of defects.
Iavor S. Diatchki, Mike Dodds, Harrison Goldstein, Bill Harris, David A. Holland, Benoît Razet, Cole Schlesinger, Simon Winwood
Proc. ACM Program. Lang.7
2024 KATch: A Fast Symbolic Verifier for NetKAT
abstract
We develop new data structures and algorithms for checking verification queries in NetKAT, a domain-specific language for specifying the behavior of network data planes. Our results extend the techniques obtained in prior work on symbolic automata and provide a framework for building efficient and scalable verification tools. We present KATch, an implementation of these ideas in Scala, featuring an extended set of NetKAT operators that are useful for expressing network-wide specifications, and a verification engine that constructs a bisimulation or generates a counter-example showing that none exists. We evaluate the performance of our implementation on real-world and synthetic benchmarks, verifying properties such as reachability and slice isolation, typically returning a result in well under a second, which is orders of magnitude faster than previous approaches. Our advancements underscore NetKAT’s potential as a practical, declarative language for network specification and verification.
Mark Moeller, Jules Jacobs, Olivier Savary Bélanger, David Darais, Cole Schlesinger, Steffen Smolka, Nate Foster, Alexandra Silva 0001
Proc. ACM Program. Lang.5
2022 Type-directed program synthesis for RESTful APIs
abstract
With the rise of software-as-a-service and microservice architectures, RESTful APIs are now ubiquitous in mobile and web applications. A service can have tens or hundreds of API methods, making it a challenge for programmers to find the right combination of methods to solve their task.
Zheng Guo 0003, David Cao, Davin Tjong, Jean Yang 0001, Cole Schlesinger, Nadia Polikarpova
PLDI5
2020 Stratified Abstraction of Access Control Policies
abstract
The shift to cloud-based APIs has made application security critically depend on understanding and reasoning about policies that regulate access to cloud resources.We present stratified predicate abstraction, a new approach that summarizes complex security policies into a compact set of positive and declarative statements that precisely state who has access to a resource.We have implemented stratified abstraction and deployed it as the engine powering AWS's IAM Access Analyzer service, and hence, demonstrate how formal methods and SMT can be used for security policy explanation.
John D. Backes, Ulises Berrueco, Tyler Bray, Daniel Brim, Byron Cook, Andrew Gacek, Ranjit Jhala, Kasper Søe Luckow, Sean McLaughlin, Madhav Menon, Daniel Peebles, Ujjwal Pugalia, Neha Rungta, Cole Schlesinger, Adam Schodde, Anvesh Tanuku, Carsten Varming, Deepa Viswanathan
CAV (1)14
2020 Block public access: trust safety verification of access control policies
abstract
Data stored in cloud services is highly sensitive and so access to it is controlled via policies written in domain-specific languages (DSLs). The expressiveness of these DSLs provides users flexibility to cover a wide variety of uses cases, however, unintended misconfigurations can lead to potential security issues. We introduce Block Public Access, a tool that formally verifies policies to ensure that they only allow access to trusted principals, i.e. that they prohibit access to the general public. To this end, we formalize the notion of Trust Safety that formally characterizes whether or not a policy allows unconstrained (public) access. Next, we present a method to compile the policy down to a logical formula whose unsatisfiability can be (1) checked by SMT and (2) ensures Trust Safety. The constructs of the policy DSLs render unsatisfiability checking PSPACE-complete, which precludes verifying the millions of requests per second seen at cloud scale. Hence, we present an approach that leverages the structure of the policy DSL to compute a much smaller residual policy that corresponds only to untrusted accesses. Our approach allows Block Public Access to, in the common case, syntactically verify Trust Safety without having to query the SMT solver. We have implemented Block Public Access and present an evaluation showing how the above optimization yields a low-latency policy verifier that the S3 team at AWS has integrated into their authorization system, where it is currently in production, analyzing millions of policies everyday to ensure that client buckets do not grant unintended public access.
Malik Bouchet, Byron Cook, Bryant Cutler, Anna Druzkina, Andrew Gacek, Liana Hadarean, Ranjit Jhala, Brad Marshall, Daniel Peebles, Neha Rungta, Cole Schlesinger, Chriss Stephens, Carsten Varming, Andy Warfield
ESEC/SIGSOFT FSE11
2018 p4v: practical verification for programmable data planes
abstract
We present the design and implementation of p4v, a practical tool for verifying data planes described using the P4 programming language. The design of p4v is based on classic verification techniques but adds several key innovations including a novel mechanism for incorporating assumptions about the control plane and domain-specific optimizations which are needed to scale to large programs. We present case studies showing that p4v verifies important properties and finds bugs in real-world programs. We conduct experiments to quantify the scalability of p4v on a wide range of additional examples. We show that with just a few hundred lines of control-plane annotations, p4v is able to verify critical safety properties for switch.p4, a program that implements the functionality of on a modern data center switch, in under three minutes.
Jed Liu, William T. Hallahan, Cole Schlesinger, Milad Sharif, Jeongkeun Lee, Robert Soulé, Han Wang 0009, Calin Cascaval, Nick McKeown, Nate Foster
SIGCOMM3
2017 Correct by Construction Networks Using Stepwise Refinement
Leonid Ryzhyk, Nikolaj S. Bjørner, Marco Canini, Jean-Baptiste Jeannin, Cole Schlesinger, Douglas B. Terry, George Varghese
NSDI5
2016 Type inference for static compilation of JavaScript
abstract
We present a type system and inference algorithm for a rich subset of JavaScript equipped with objects, structural subtyping, prototype inheritance, and first-class methods. The type system supports abstract and recursive objects, and is expressive enough to accommodate several standard benchmarks with only minor workarounds. The invariants enforced by the types enable an ahead-of-time compiler to carry out optimizations typically beyond the reach of static compilers for dynamic languages. Unlike previous inference techniques for prototype inheritance, our algorithm uses a combination of lower and upper bound propagation to infer types and discover type errors in all code, including uninvoked functions. The inference is expressed in a simple constraint language, designed to leverage off-the-shelf fixed point solvers. We prove soundness for both the type system and inference algorithm. An experimental evaluation showed that the inference is powerful, handling the aforementioned benchmarks with no manual type annotation, and that the inferred types enable effective static compilation.
Satish Chandra 0001, Colin S. Gordon, Jean-Baptiste Jeannin, Cole Schlesinger, Manu Sridharan, Frank Tip, Young-Il Choi
OOPSLA4
2016 A practical framework for type inference error explanation
abstract
Many languages have support for automatic type inference. But when inference fails, the reported error messages can be unhelpful, highlighting a code location far from the source of the problem. Several lines of work have emerged proposing error reports derived from correcting sets: a set of program points that, when fixed, produce a well-typed program. Unfortunately, these approaches are tightly tied to specific languages; targeting a new language requires encoding a type inference algorithm for the language in a custom constraint system specific to the error reporting tool.
Calvin Loncaric, Satish Chandra 0001, Cole Schlesinger, Manu Sridharan
OOPSLA3
2014 Transparent, Live Migration of a Software-Defined Network
abstract
Increasingly, datacenters are virtualized and software-defined. Live virtual machine (VM) migration is becoming an indispensable management tool in such environments. However, VMs often have a tight coupling with the underlying network. Hence, cloud providers are beginning to offer tenants more control over their virtual networks. Seamless migration of all (or part) of a virtual network greatly simplifies management tasks like planned maintenance, optimizing resource usage, and cloud bursting. Our LIME architecture efficiently migrates an ensemble, a collection of virtual machines and virtual switches, for any arbitrary controller and end-host applications. To minimize performance disruptions, during the migration, LIME temporarily runs all or part of a virtual switch on multiple physical switches. Running a virtual switch on multiple physical switches must be done carefully to avoid compromising application correctness. To that end, LIME merges events, combines traffic statistics, and preserves consistency among multiple physical switches even across changes to the packet-handling rules. Using a formal model, we prove that migration under LIME is transparent to applications, i.e., any execution of the controller and end-host applications during migration is a completely valid execution that could have taken place in a migration-free setting. Experiments with our prototype, built on the Floodlight controller, show that ensemble migration can be an efficient tool for network management.
Soudeh Ghorbani, Cole Schlesinger, Matthew Monaco, Eric Keller, Matthew Caesar 0001, Jennifer Rexford, David Walker 0001
SoCC2
2014 Concurrent NetCore: from policies to pipelines
abstract
In a Software-Defined Network (SDN), a central, computationally powerful controller manages a set of distributed, computationally simple switches. The controller computes a policy describing how each switch should route packets and populates packet-processing tables on each switch with rules to enact the routing policy. As network conditions change, the controller continues to add and remove rules from switches to adjust the policy as needed.
Cole Schlesinger, Michael Greenberg 0002, David Walker 0001
ICFP1
2014 NetkAT: semantic foundations for networks
abstract
Recent years have seen growing interest in high-level languages for programming networks. But the design of these languages has been largely ad hoc, driven more by the needs of applications and the capabilities of network hardware than by foundational principles. The lack of a semantic foundation has left language designers with little guidance in determining how to incorporate new features, and programmers without a means to reason precisely about their code.
Carolyn Jane Anderson, Nate Foster, Arjun Guha, Jean-Baptiste Jeannin, Dexter Kozen, Cole Schlesinger, David Walker 0001
POPL6
2014 Modular protections against non-control data attacks
abstract
This paper introduces YARRA, a conservative extension to C to protect applications from non-control data attacks. YARRA programmers specify their data integrity requirements by declaring critical data types and ascribing these critical types to important data structures. YARRA guarantees that such critical data is only written through pointers with the given static type. Any attempt to write to critical data through a pointer with an invalid type (perhaps because of a buffer overrun) is detected dynamically. We formalize YARRA’s semantics and prove the soundness of a program logic designed for use with the language. A key contribution is to show that YARRA's semantics are strong enough to support sound local reasoning and the use of a frame rule, even across calls to unknown, unverified code. We evaluate a prototype implementation of a compiler and runtime system for YARRA by using it to harden four common server applications against known non-control data vulnerabilities. We show that YARRA successfully defends the applications against these attacks. In our initial experiments, we find that the performance impact of YARRA is small, provided the amount of critical data is small and the application is not compute intensive.
Cole Schlesinger, Karthik Pattabiraman, Nikhil Swamy, David Walker 0001, Benjamin G. Zorn
J. Comput. Secur.1
2013 Tutorial: Practical verification of network programs
abstract
In this tutorial, we will show participants how to program software defined networks (SDN) in a modular way, using Frenetic's abstractions. We will build several realistic network applications from the ground up, and also learn to use more sophisticated modules, such as NAT and MAC-learning, which are part of the Frenetic standard library. We will also look under the hood to see how the Frenetic compiler and runtime system work.
Nate Foster, Arjun Guha, Mark Reitblatt, Cole Schlesinger
FMCAD4
2013 Verifying higher-order programs with the dijkstra monad
abstract
Modern programming languages, ranging from Haskell and ML, to JavaScript, C# and Java, all make extensive use of higher-order state. This paper advocates a new verification methodology for higher-order stateful programs, based on a new monad of predicate transformers called the Dijkstra monad.
Nikhil Swamy, Joel Weinberger, Cole Schlesinger, Juan Chen 0002, Benjamin Livshits
PLDI3
2012 Abstractions for network update
abstract
Configuration changes are a common source of instability in networks, leading to outages, performance disruptions, and security vulnerabilities. Even when the initial and final configurations are correct, the update process itself often steps through intermediate configurations that exhibit incorrect behaviors. This paper introduces the notion of consistent network updates---updates that are guaranteed to preserve well-defined behaviors when transitioning mbetween configurations. We identify two distinct consistency levels, per-packet and per-flow, and we present general mechanisms for implementing them in Software-Defined Networks using switch APIs like OpenFlow. We develop a formal model of OpenFlow networks, and prove that consistent updates preserve a large class of properties. We describe our prototype implementation, including several optimizations that reduce the overhead required to perform consistent updates. We present a verification tool that leverages consistent updates to significantly reduce the complexity of checking the correctness of network control software. Finally, we describe the results of some simple experiments demonstrating the effectiveness of these optimizations on example applications.
Mark Reitblatt, Nate Foster, Jennifer Rexford, Cole Schlesinger, David Walker 0001
SIGCOMM4
2011 Modular Protections against Non-control Data Attacks
abstract
This paper introduces YARRA, a conservative extension to C to protect applications from non-control data attacks. YARRA programmers specify their data integrity requirements by declaring critical data types and ascribing these critical types to important data structures. YARRA guarantees that such critical data is only written through pointers with the given static type. Any attempt to write to critical data through a pointer with an invalid type (perhaps because of a buffer overrun) is detected dynamically. We formalize YARRA's semantics and prove the soundness of a program logic designed for use with the language. A key contribution is to show that YARRA's semantics are strong enough to support sound local reasoning and the use of a frame rule, even across calls to unknown, unverified code. We evaluate a prototype implementation of a compiler and runtime system for YARRA by using it to harden four common server applications against known non-control data vulnerabilities. We show that YARRA defends against these attacks with only a negligible impact on their end-to-end performance.
Cole Schlesinger, Karthik Pattabiraman, Nikhil Swamy, David Walker 0001, Benjamin G. Zorn
CSF1