{"title":"Using Precise Taint Tracking for Auto-sanitization","authors":"Tejas Saoji, Thomas H. Austin, C. Flanagan","doi":"10.1145/3139337.3139341","DOIUrl":"https://doi.org/10.1145/3139337.3139341","url":null,"abstract":"Taint analysis has been used in numerous scripting languages such as Perl and Ruby to defend against various form of code injection attacks, such as cross-site scripting (XSS) and SQL-injection. However, most taint analysis systems simply fail when tainted information is used in a possibly unsafe manner. In this paper, we explore how precise taint tracking can be used in order to secure web content. Rather than simply crashing, we propose that a library-writer defined sanitization function can instead be used on the tainted portions of a string. With this approach, library writers or framework developers can design their tools to be resilient, even if inexperienced developers misuse these libraries in unsafe ways. In other words, developer mistakes do not have to result in system crashes to guarantee security. We implement both coarse-grained and precise taint tracking in JavaScript, and show how our precise taint tracking API can be used to defend against SQL injection and XSS attacks. We further evaluate the performance of this approach, showing that precise taint tracking involves an overhead of approximately 22%.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127368531","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Short Paper: Towards Information Flow Reasoning about Real-World C Code","authors":"Samuel Grütter, Toby C. Murray","doi":"10.1145/3139337.3139345","DOIUrl":"https://doi.org/10.1145/3139337.3139345","url":null,"abstract":"Strangely, despite much recent success proving information flow control (IFC) security for C programs, little work has investigated how to prove IFC security directly against C code, as opposed to over an abstract specification. We consider what a suitable IFC logic for C might look like, and propose a suitable continuation-passing style IFC security definition for C code. We discuss our ongoing work implementing these ideas in the context of an existing full-featured, sound program verification framework for C, the Verified Software Toolchain, supported by the verified C complier CompCert.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"85 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124924465","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Simplicity: A New Language for Blockchains","authors":"Russell O'Connor","doi":"10.1145/3139337.3139340","DOIUrl":"https://doi.org/10.1145/3139337.3139340","url":null,"abstract":"Simplicity is a typed, combinator-based, functional language without loops and recursion, designed to be used for crypto-currencies and blockchain applications. It aims to improve upon existing crypto-currency languages, such as Bitcoin Script and Ethereum's EVM, while avoiding some of the problems they face. Simplicity comes with formal denotational semantics defined in Coq, a popular, general purpose software proof assistant. Simplicity also includes operational semantics that are defined with an abstract machine that we call the Bit Machine. The Bit Machine is used as a tool for measuring the computational space and time resources needed to evaluate Simplicity programs. Owing to its Turing incompleteness, Simplicity is amenable to static analysis that can be used to derive upper bounds on the computational resources needed, prior to execution. While Turing incomplete, Simplicity can express any finitary function, which we believe is enough to build useful ``smart contracts'' for blockchain applications.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"86 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134448432","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"CFG Construction Soundness in Control-Flow Integrity","authors":"Gang Tan, T. Jaeger","doi":"10.1145/3139337.3139339","DOIUrl":"https://doi.org/10.1145/3139337.3139339","url":null,"abstract":"Control-Flow Integrity (CFI) is an intensively studied technique for hardening software security. It enforces a Control-Flow Graph (CFG) by inlining runtime checks into target programs. Many methods have been proposed to construct the enforced CFG, with different degrees of precision and sets of assumptions. However, past CFI work has not made attempt at justifying their CFG construction soundness using formal semantics and proofs. In this paper, we formalize the CFG construction in two major CFI systems, identify their assumptions, and prove their soundness; the soundness proof shows that their computed sets of targets for indirect calls are safe over-approximations.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"122 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124185609","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Encoding DCC in Haskell","authors":"Maximilian Algehed, Alejandro Russo","doi":"10.1145/3139337.3139338","DOIUrl":"https://doi.org/10.1145/3139337.3139338","url":null,"abstract":"The seminal work on the Dependency Core Calculus (DCC) shows how monads not only can be used for embedding effects in purely functional languages but also to statically track data dependencies. Such types of analysis have applications in research areas like security, partial evaluation, and slicing, where DCC plays the role of a unifying formalism. For a Haskell programmer, putting DCC into practice raises many interesting conceptual and implementation concerns. Specifically, DCC uses a non-standard bind operator, i.e., with a different type signature than that provided by monads. In fact, embedding such non-standard bind operator opens the door for many design decisions. Furthermore, it is unclear if DCC extends to traditional methods used by Haskell programmers to handle effects (such as monad transformers). In this work, we describe a novel encoding of DCC in Haskell, with a focus on its use for security-although our results also apply to the other domains. We address the concerns mentioned above and show how our implementation of DCC can be seen as a direct translation from its typing rules via the use of closed type families and type classes-two advanced type-system features of Haskell. We also analyze what kind of effects DCC is compatible with and which ones it cannot secure. We also derive an alternative formulation of DCC based on fmap and a corresponding non-standard join.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"96 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132973316","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Languages for Oblivious Computation","authors":"M. Hicks","doi":"10.1145/3139337.3139349","DOIUrl":"https://doi.org/10.1145/3139337.3139349","url":null,"abstract":"1 OBLIVIOUS COMPUTATION Cloud computing allows users to delegate data storage and computing needs to cloud service providers. Doing so relieves users from the need to purchase and maintain their own computing infrastructure, but requires sharing potentially sensitive data with the provider. Researchers have been exploring how to mitigate the risk of doing so by developing privacy preserving computing technology. The idea is to employ hardware and/or software that can compute a function y = f (x1,x2, ...,xn ) obliviously, meaning that despite producing an answer, the service provider learns nothing about x1, ...,xn or y in the process. Such technology effectively implements a secure abstract machine that receives encrypted inputs, computes the requested function using encrypted memory, and returns an encrypted result, which the client can decrypt. Such an abstract machine might employ cryptographic algorithms and/or secure processors (e.g., FHE [1] or Intel SGX1). While a secure abstract machine stops an attacker from reading sensitive values directly, it does not defeat an attacker who can infer such values from a computation’s side channels, such as its patterns of memory accesses or instruction timings. Indeed, a cloud provider could easily measure such patterns. A countermeasure is to augment the abstract machine to store code and data in oblivious RAM (ORAM) [2]. ORAM is a data structure that regularly changes the mapping between a data block’s logical address and its physical address. While the abstract machine always knows the up-to-date mapping, the adversary does not, and as a result the address trace is indistinguishable from a random sequence. While secure against a snooping adversary, ORAM unfortunately incurs a substantial slowdown in practical situations: each read/write requires additional operations (to update the mapping) that are polylogarithmic in the size of the memory.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131835787","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Modular Synthesis of Heap Exploits","authors":"D. Repel, Johannes Kinder, L. Cavallaro","doi":"10.1145/3139337.3139346","DOIUrl":"https://doi.org/10.1145/3139337.3139346","url":null,"abstract":"Memory errors continue to compromise the security of today's systems. Recent efforts to automatically synthesize exploits for stack-based buffer overflows promise to help assess a vulnerability's severity more quickly and alleviate the burden of manual reasoning. However, generation of heap exploits has been out of scope for such methods thus far. In this paper, we investigate the problem of automatically generating heap exploits, which, in addition to finding the vulnerability, requires intricate interaction with the heap manager. We identify the challenges involved in automatically finding the right parameters and interaction sequences for such attacks, which have traditionally required manual analysis. To tackle these challenges, we present a modular approach that is designed to minimize the assumptions made about the heap manager used by the target application. Our prototype system is able to find exploit primitives in six binary implementations of Windows and UNIX-based heap managers and applies these to successfully exploit two real-world applications.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123908689","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","authors":"Nataliia Bielova, Marco Gaboardi","doi":"10.1145/3139337","DOIUrl":"https://doi.org/10.1145/3139337","url":null,"abstract":"It is our great pleasure to welcome you to the 12th ACM SIGSAC Workshop on Programming Languages and Analysis for Security (PLAS 2017), co-located with the ACM Conference on Computer and Communications Security (CCS). Over its now more than ten-year history, PLAS has provided a unique forum for researchers and practitioners to exchange ideas about programming language and program analysis techniques with the goal of improving the security of software systems. \u0000 \u0000This year, PLAS received a good number of submissions attesting the continued vitality of the community whose work sits at the intersection of programming languages and security. PLAS 2017 welcomed the submission of both long research papers as well as short papers presenting preliminary or exploratory work aiming at generating lively discussions at the workshop. PLAS 2017 attracted 16 submissions-of which, 6 were short papers-from 9 countries (Australia, France, Germany, India, Singapore, Sweden, Taiwan, UK, USA), with authors spanning both academia and industry. \u0000 \u0000PLAS 2017 is delighted to have two excellent invited talks: \u0000Authorization Contracts, Stephen Chong (Harvard University) \u0000Languages for Oblivious Computation, Michael Hicks (University of Maryland)","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"204 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116505661","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Authorization Contracts","authors":"Stephen Chong","doi":"10.1145/3139337.3139348","DOIUrl":"https://doi.org/10.1145/3139337.3139348","url":null,"abstract":"Software components have a wide variety of access control requirements. A one-size-fits-all access control framework will not meet the needs of all of these components. We propose an expressive framework for implementing access control monitors for components. The basis of the framework is a novel concept: the authority environment. An authority environment associates rights with an execution context. The building blocks of access control monitors in our framework are authorization contracts: software contracts that manage authority environments. We've used the framework to implement diverse access control mechanisms (including discretionary access control, stack inspection, history-based access control, and object capabilities), and to write custom access control monitors for three case studies.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129775663","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"A Sequent Calculus for Counterfactual Reasoning","authors":"McKenna McCall, L. Loh, Limin Jia","doi":"10.1145/3139337.3139342","DOIUrl":"https://doi.org/10.1145/3139337.3139342","url":null,"abstract":"Counterfactual conditions such as \"if A were not true, then C would not have been true\" have been formally studied by philosophers for causal claims for decades. Counterfactuals are often used informally in practice for diagnosing systems and identifying errors or misconfigurations. This paper develops a proof theory for counterfactual reasoning of Horn clauses, which have applications in domains including security and database and program analysis. The application to security that this paper focuses on is modeling and reasoning about probing attacks in Datalog-based trust management systems, where an attacker can apply counterfactual reasoning to obtain sensitive information embedded in the system. Our work is inspired by a Hilbert-style axiomatized system for counterfactual reasoning for Horn clauses, which are hard to use to construct proofs or study properties of the system. To alleviate this difficulty, we develop a sequent calculus from first principles. We show that the sequent calculus has cut elimination and is sound and complete with regard to the corresponding Hilbert style axiomatized system. We also show how to construct proofs that model practical counterfactual reasoning scenarios in trust management systems using our sequent calculus rules.","PeriodicalId":329351,"journal":{"name":"Proceedings of the 2017 Workshop on Programming Languages and Analysis for Security","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128681193","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}