首页 > 最新文献

Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation最新文献

英文 中文
Statistical similarity of binaries 二进制文件的统计相似性
Yaniv David, Nimrod Partush, Eran Yahav
We address the problem of finding similar procedures in stripped binaries. We present a new statistical approach for measuring the similarity between two procedures. Our notion of similarity allows us to find similar code even when it has been compiled using different compilers, or has been modified. The main idea is to use similarity by composition: decompose the code into smaller comparable fragments, define semantic similarity between fragments, and use statistical reasoning to lift fragment similarity into similarity between procedures. We have implemented our approach in a tool called Esh, and applied it to find various prominent vulnerabilities across compilers and versions, including Heartbleed, Shellshock and Venom. We show that Esh produces high accuracy results, with few to no false positives -- a crucial factor in the scenario of vulnerability search in stripped binaries.
我们解决了在剥离二进制文件中寻找相似过程的问题。我们提出了一种新的统计方法来测量两个程序之间的相似性。我们的相似性概念允许我们找到相似的代码,即使它已经使用不同的编译器编译,或者已经被修改。主要思想是通过组合使用相似性:将代码分解为较小的可比较片段,定义片段之间的语义相似性,并使用统计推理将片段相似性提升为过程之间的相似性。我们已经在一个名为Esh的工具中实现了我们的方法,并将其应用于查找编译器和版本之间的各种突出漏洞,包括Heartbleed, Shellshock和Venom。我们表明,Esh产生了高精度的结果,几乎没有误报——这是在剥离二进制文件中进行漏洞搜索的关键因素。
{"title":"Statistical similarity of binaries","authors":"Yaniv David, Nimrod Partush, Eran Yahav","doi":"10.1145/2908080.2908126","DOIUrl":"https://doi.org/10.1145/2908080.2908126","url":null,"abstract":"We address the problem of finding similar procedures in stripped binaries. We present a new statistical approach for measuring the similarity between two procedures. Our notion of similarity allows us to find similar code even when it has been compiled using different compilers, or has been modified. The main idea is to use similarity by composition: decompose the code into smaller comparable fragments, define semantic similarity between fragments, and use statistical reasoning to lift fragment similarity into similarity between procedures. We have implemented our approach in a tool called Esh, and applied it to find various prominent vulnerabilities across compilers and versions, including Heartbleed, Shellshock and Venom. We show that Esh produces high accuracy results, with few to no false positives -- a crucial factor in the scenario of vulnerability search in stripped binaries.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115303955","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}
引用次数: 139
Verified lifting of stencil computations 验证了模具吊装计算
S. Kamil, Alvin Cheung, Shachar Itzhaky, Armando Solar-Lezama
This paper demonstrates a novel combination of program synthesis and verification to lift stencil computations from low-level Fortran code to a high-level summary expressed using a predicate language. The technique is sound and mostly automated, and leverages counter-example guided inductive synthesis (CEGIS) to find provably correct translations. Lifting existing code to a high-performance description language has a number of benefits, including maintainability and performance portability. For example, our experiments show that the lifted summaries can enable domain specific compilers to do a better job of parallelization as compared to an off-the-shelf compiler working on the original code, and can even support fully automatic migration to hardware accelerators such as GPUs. We have implemented verified lifting in a system called STNG and have evaluated it using microbenchmarks, mini-apps, and real-world applications. We demonstrate the benefits of verified lifting by first automatically summarizing Fortran source code into a high-level predicate language, and subsequently translating the lifted summaries into Halide, with the translated code achieving median performance speedups of 4.1X and up to 24X for non-trivial stencils as compared to the original implementation.
本文演示了一种程序合成和验证的新组合,将模板计算从低级Fortran代码提升到使用谓词语言表示的高级摘要。该技术是可靠的,而且大部分是自动化的,并利用反例引导归纳合成(CEGIS)来找到可证明正确的翻译。将现有代码提升为高性能描述语言有很多好处,包括可维护性和性能可移植性。例如,我们的实验表明,与处理原始代码的现成编译器相比,提升的摘要可以使特定领域的编译器更好地完成并行化工作,甚至可以支持完全自动迁移到硬件加速器(如gpu)。我们已经在一个名为STNG的系统中实现了验证提升,并使用微基准测试、迷你应用程序和实际应用程序对其进行了评估。我们首先通过自动将Fortran源代码总结为高级谓词语言,然后将提升的摘要翻译为Halide来演示验证提升的好处,与原始实现相比,翻译后的代码对重要模板的性能提升中值为4.1倍,最高可达24X。
{"title":"Verified lifting of stencil computations","authors":"S. Kamil, Alvin Cheung, Shachar Itzhaky, Armando Solar-Lezama","doi":"10.1145/2908080.2908117","DOIUrl":"https://doi.org/10.1145/2908080.2908117","url":null,"abstract":"This paper demonstrates a novel combination of program synthesis and verification to lift stencil computations from low-level Fortran code to a high-level summary expressed using a predicate language. The technique is sound and mostly automated, and leverages counter-example guided inductive synthesis (CEGIS) to find provably correct translations. Lifting existing code to a high-performance description language has a number of benefits, including maintainability and performance portability. For example, our experiments show that the lifted summaries can enable domain specific compilers to do a better job of parallelization as compared to an off-the-shelf compiler working on the original code, and can even support fully automatic migration to hardware accelerators such as GPUs. We have implemented verified lifting in a system called STNG and have evaluated it using microbenchmarks, mini-apps, and real-world applications. We demonstrate the benefits of verified lifting by first automatically summarizing Fortran source code into a high-level predicate language, and subsequently translating the lifted summaries into Halide, with the translated code achieving median performance speedups of 4.1X and up to 24X for non-trivial stencils as compared to the original implementation.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"80 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127099726","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}
引用次数: 71
Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation 第37届ACM SIGPLAN编程语言设计与实现会议论文集
C. Krintz, E. Berger
{"title":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","authors":"C. Krintz, E. Berger","doi":"10.1145/2908080","DOIUrl":"https://doi.org/10.1145/2908080","url":null,"abstract":"","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130322303","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}
引用次数: 2
SDNRacer: concurrency analysis for software-defined networks SDNRacer:软件定义网络的并发分析
Ahmed El-Hassany, Jeremie Miserez, Pavol Bielik, L. Vanbever, Martin T. Vechev
Concurrency violations are an important source of bugs in Software-Defined Networks (SDN), often leading to policy or invariant violations. Unfortunately, concurrency violations are also notoriously difficult to avoid, detect and debug. This paper presents a novel approach and a tool, SDNRacer, for detecting concurrency violations of SDNs. Our approach is enabled by three key ingredients: (i) a precise happens- before model for SDNs that captures when events can happen concurrently; (ii) a set of sound, domain-specific filters that reduce reported violations by orders of magnitude, and; (iii) a sound and complete dynamic analyzer, based on the above, that can ensure the network is free of harmful errors such as data races and per-packet incoherence. We evaluated SDNRacer on several real-world OpenFlow controllers, running both reactive and proactive applications in large networks. We show that SDNRacer is practically effective: it quickly pinpoints harmful concurrency violations without overwhelming the user with false positives.
并发性违反是软件定义网络(SDN)中bug的一个重要来源,通常会导致策略或不变性违反。不幸的是,并发性冲突也非常难以避免、检测和调试。本文提出了一种检测sdn并发性违规的新方法和工具——SDNRacer。我们的方法由三个关键要素实现:(i)精确的sdn发生前模型,该模型捕获事件何时可以并发发生;(ii)一套健全的、特定于领域的过滤器,可按数量级减少所报告的违规行为;(iii)在上述基础上,一个健全和完整的动态分析器,可以确保网络没有有害的错误,如数据竞争和每包不相干。我们在几个真实的OpenFlow控制器上评估了SDNRacer,在大型网络中运行被动和主动应用程序。我们证明了snracer实际上是有效的:它可以快速确定有害的并发性违规,而不会让用户被误报淹没。
{"title":"SDNRacer: concurrency analysis for software-defined networks","authors":"Ahmed El-Hassany, Jeremie Miserez, Pavol Bielik, L. Vanbever, Martin T. Vechev","doi":"10.1145/2908080.2908124","DOIUrl":"https://doi.org/10.1145/2908080.2908124","url":null,"abstract":"Concurrency violations are an important source of bugs in Software-Defined Networks (SDN), often leading to policy or invariant violations. Unfortunately, concurrency violations are also notoriously difficult to avoid, detect and debug. This paper presents a novel approach and a tool, SDNRacer, for detecting concurrency violations of SDNs. Our approach is enabled by three key ingredients: (i) a precise happens- before model for SDNs that captures when events can happen concurrently; (ii) a set of sound, domain-specific filters that reduce reported violations by orders of magnitude, and; (iii) a sound and complete dynamic analyzer, based on the above, that can ensure the network is free of harmful errors such as data races and per-packet incoherence. We evaluated SDNRacer on several real-world OpenFlow controllers, running both reactive and proactive applications in large networks. We show that SDNRacer is practically effective: it quickly pinpoints harmful concurrency violations without overwhelming the user with false positives.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"70 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114540336","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}
引用次数: 42
Assessing the limits of program-specific garbage collection performance 评估特定于程序的垃圾收集性能的限制
Nicholas Jacek, Meng-Chieh Chiu, Benjamin M Marlin, E. Moss
We consider the ultimate limits of program-specific garbage collector performance for real programs. We first characterize the GC schedule optimization problem using Markov Decision Processes (MDPs). Based on this characterization, we develop a method of determining, for a given program run and heap size, an optimal schedule of collections for a non-generational collector. We further explore the limits of performance of a generational collector, where it is not feasible to search the space of schedules to prove optimality. Still, we show significant improvements with Least Squares Policy Iteration, a reinforcement learning technique for solving MDPs. We demonstrate that there is considerable promise to reduce garbage collection costs by developing program-specific collection policies.
我们考虑了实际程序中特定于程序的垃圾收集器性能的最终限制。我们首先使用马尔可夫决策过程(mdp)描述GC调度优化问题。基于这种特性,我们开发了一种方法,用于确定给定程序运行和堆大小的非分代收集器的最佳收集调度。我们进一步探讨了分代收集器的性能限制,其中搜索调度空间以证明最优性是不可行的。尽管如此,我们展示了最小二乘策略迭代的显著改进,这是一种用于解决mdp的强化学习技术。我们证明,通过开发特定于程序的收集策略,可以大大降低垃圾收集成本。
{"title":"Assessing the limits of program-specific garbage collection performance","authors":"Nicholas Jacek, Meng-Chieh Chiu, Benjamin M Marlin, E. Moss","doi":"10.1145/2908080.2908120","DOIUrl":"https://doi.org/10.1145/2908080.2908120","url":null,"abstract":"We consider the ultimate limits of program-specific garbage collector performance for real programs. We first characterize the GC schedule optimization problem using Markov Decision Processes (MDPs). Based on this characterization, we develop a method of determining, for a given program run and heap size, an optimal schedule of collections for a non-generational collector. We further explore the limits of performance of a generational collector, where it is not feasible to search the space of schedules to prove optimality. Still, we show significant improvements with Least Squares Policy Iteration, a reinforcement learning technique for solving MDPs. We demonstrate that there is considerable promise to reduce garbage collection costs by developing program-specific collection policies.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114147058","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}
引用次数: 8
Remix: online detection and repair of cache contention for the JVM Remix:在线检测和修复JVM的缓存争用
Ariel Eizenberg, Shiliang Hu, Gilles A. Pokam, Joseph Devietti
As ever more computation shifts onto multicore architectures, it is increasingly critical to find effective ways of dealing with multithreaded performance bugs like true and false sharing. Previous approaches to fixing false sharing in unmanaged languages have employed highly-invasive runtime program modifications. We observe that managed language runtimes, with garbage collection and JIT code compilation, present unique opportunities to repair such bugs directly, mirroring the techniques used in manual repairs. We present Remix, a modified version of the Oracle HotSpot JVM which can detect cache contention bugs and repair false sharing at runtime. Remix's detection mechanism leverages recent performance counter improvements on Intel platforms, which allow for precise, unobtrusive monitoring of cache contention at the hardware level. Remix can detect and repair known false sharing issues in the LMAX Disruptor high-performance inter-thread messaging library and the Spring Reactor event-processing framework, automatically providing 1.5-2x speedups over unoptimized code and matching the performance of hand-optimization. Remix also finds a new false sharing bug in SPECjvm2008, and uncovers a true sharing bug in the HotSpot JVM that, when fixed, improves the performance of three NAS Parallel Benchmarks by 7-25x. Remix incurs no statistically-significant performance overhead on other benchmarks that do not exhibit cache contention, making Remix practical for always-on use.
随着越来越多的计算转移到多核体系结构上,找到处理多线程性能错误(如真假共享)的有效方法变得越来越重要。以前在非托管语言中修复错误共享的方法采用了高度侵入性的运行时程序修改。我们观察到托管语言运行时,具有垃圾收集和JIT代码编译,提供了直接修复此类错误的独特机会,反映了手动修复中使用的技术。我们介绍了Remix,一个修改版本的Oracle HotSpot JVM,它可以检测缓存争用错误,并在运行时修复错误共享。Remix的检测机制利用了英特尔平台上最新的性能计数器改进,它允许在硬件级别对缓存争用进行精确、不显眼的监控。Remix可以在LMAX Disruptor高性能线程间消息传递库和Spring Reactor事件处理框架中检测和修复已知的虚假共享问题,自动提供1.5-2倍于未优化代码的速度,并匹配手动优化的性能。Remix还在SPECjvm2008中发现了一个新的虚假共享错误,并在HotSpot JVM中发现了一个真正的共享错误,修复后,将三个NAS并行基准的性能提高了7-25倍。Remix在其他不显示缓存争用的基准测试中不会产生统计上显著的性能开销,这使得Remix适合始终在线使用。
{"title":"Remix: online detection and repair of cache contention for the JVM","authors":"Ariel Eizenberg, Shiliang Hu, Gilles A. Pokam, Joseph Devietti","doi":"10.1145/2908080.2908090","DOIUrl":"https://doi.org/10.1145/2908080.2908090","url":null,"abstract":"As ever more computation shifts onto multicore architectures, it is increasingly critical to find effective ways of dealing with multithreaded performance bugs like true and false sharing. Previous approaches to fixing false sharing in unmanaged languages have employed highly-invasive runtime program modifications. We observe that managed language runtimes, with garbage collection and JIT code compilation, present unique opportunities to repair such bugs directly, mirroring the techniques used in manual repairs. We present Remix, a modified version of the Oracle HotSpot JVM which can detect cache contention bugs and repair false sharing at runtime. Remix's detection mechanism leverages recent performance counter improvements on Intel platforms, which allow for precise, unobtrusive monitoring of cache contention at the hardware level. Remix can detect and repair known false sharing issues in the LMAX Disruptor high-performance inter-thread messaging library and the Spring Reactor event-processing framework, automatically providing 1.5-2x speedups over unoptimized code and matching the performance of hand-optimization. Remix also finds a new false sharing bug in SPECjvm2008, and uncovers a true sharing bug in the HotSpot JVM that, when fixed, improves the performance of three NAS Parallel Benchmarks by 7-25x. Remix incurs no statistically-significant performance overhead on other benchmarks that do not exhibit cache contention, making Remix practical for always-on use.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"38 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127694578","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}
引用次数: 28
Data-driven precondition inference with learned features 基于学习特征的数据驱动的前提推理
Saswat Padhi, Rahul Sharma, T. Millstein
We extend the data-driven approach to inferring preconditions for code from a set of test executions. Prior work requires a fixed set of features, atomic predicates that define the search space of possible preconditions, to be specified in advance. In contrast, we introduce a technique for on-demand feature learning, which automatically expands the search space of candidate preconditions in a targeted manner as necessary. We have instantiated our approach in a tool called PIE. In addition to making precondition inference more expressive, we show how to apply our feature-learning technique to the setting of data-driven loop invariant inference. We evaluate our approach by using PIE to infer rich preconditions for black-box OCaml library functions and using our loop-invariant inference algorithm as part of an automatic program verifier for C++ programs.
我们扩展了数据驱动的方法,从一组测试执行中推断代码的前提条件。先前的工作需要预先指定一组固定的特征,即定义可能前提条件的搜索空间的原子谓词。相反,我们引入了一种按需特征学习技术,该技术可以根据需要有针对性地自动扩展候选前提条件的搜索空间。我们已经在一个名为PIE的工具中实例化了我们的方法。除了使前提推理更具表现力之外,我们还展示了如何将我们的特征学习技术应用于数据驱动循环不变推理的设置。我们通过使用PIE来推断黑盒OCaml库函数的丰富前提条件,并使用我们的循环不变推理算法作为c++程序自动程序验证器的一部分来评估我们的方法。
{"title":"Data-driven precondition inference with learned features","authors":"Saswat Padhi, Rahul Sharma, T. Millstein","doi":"10.1145/2908080.2908099","DOIUrl":"https://doi.org/10.1145/2908080.2908099","url":null,"abstract":"We extend the data-driven approach to inferring preconditions for code from a set of test executions. Prior work requires a fixed set of features, atomic predicates that define the search space of possible preconditions, to be specified in advance. In contrast, we introduce a technique for on-demand feature learning, which automatically expands the search space of candidate preconditions in a targeted manner as necessary. We have instantiated our approach in a tool called PIE. In addition to making precondition inference more expressive, we show how to apply our feature-learning technique to the setting of data-driven loop invariant inference. We evaluate our approach by using PIE to infer rich preconditions for black-box OCaml library functions and using our loop-invariant inference algorithm as part of an automatic program verifier for C++ programs.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"232 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114420256","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}
引用次数: 107
Cardinalities and universal quantifiers for verifying parameterized systems 用于验证参数化系统的基数和通用量词
K. V. Gleissenthall, N. Bjørner, A. Rybalchenko
Parallel and distributed systems rely on intricate protocols to manage shared resources and synchronize, i.e., to manage how many processes are in a particular state. Effective verification of such systems requires universally quantification to reason about parameterized state and cardinalities tracking sets of processes, messages, failures to adequately capture protocol logic. In this paper we present Tool, an automatic invariant synthesis method that integrates cardinality-based reasoning and universal quantification. The resulting increase of expressiveness allows Tool to verify, for the first time, a representative collection of intricate parameterized protocols.
并行和分布式系统依赖于复杂的协议来管理共享资源和同步,即管理有多少进程处于特定状态。这种系统的有效验证需要普遍的量化来推断参数化状态和基数,跟踪进程、消息、故障集,以充分捕获协议逻辑。本文提出了一种集基数推理和通用量化于一体的自动不变综合方法Tool。由此产生的可表达性的增加使Tool能够首次验证复杂的参数化协议的代表性集合。
{"title":"Cardinalities and universal quantifiers for verifying parameterized systems","authors":"K. V. Gleissenthall, N. Bjørner, A. Rybalchenko","doi":"10.1145/2908080.2908129","DOIUrl":"https://doi.org/10.1145/2908080.2908129","url":null,"abstract":"Parallel and distributed systems rely on intricate protocols to manage shared resources and synchronize, i.e., to manage how many processes are in a particular state. Effective verification of such systems requires universally quantification to reason about parameterized state and cardinalities tracking sets of processes, messages, failures to adequately capture protocol logic. In this paper we present Tool, an automatic invariant synthesis method that integrates cardinality-based reasoning and universal quantification. The resulting increase of expressiveness allows Tool to verify, for the first time, a representative collection of intricate parameterized protocols.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125324561","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}
引用次数: 30
End-to-end verification of information-flow security for C and assembly programs C和汇编程序信息流安全性的端到端验证
D. Costanzo, Zhong Shao, Ronghui Gu
Protecting the confidentiality of information manipulated by a computing system is one of the most important challenges facing today's cybersecurity community. A promising step toward conquering this challenge is to formally verify that the end-to-end behavior of the computing system really satisfies various information-flow policies. Unfortunately, because today's system software still consists of both C and assembly programs, the end-to-end verification necessarily requires that we not only prove the security properties of individual components, but also carefully preserve these properties through compilation and cross-language linking. In this paper, we present a novel methodology for formally verifying end-to-end security of a software system that consists of both C and assembly programs. We introduce a general definition of observation function that unifies the concepts of policy specification, state indistinguishability, and whole-execution behaviors. We show how to use different observation functions for different levels of abstraction, and how to link different security proofs across abstraction levels using a special kind of simulation that is guaranteed to preserve state indistinguishability. To demonstrate the effectiveness of our new methodology, we have successfully constructed an end-to-end security proof, fully formalized in the Coq proof assistant, of a nontrivial operating system kernel (running on an extended CompCert x86 assembly machine model). Some parts of the kernel are written in C and some are written in assembly; we verify all of the code, regardless of language.
保护计算机系统操纵的信息的机密性是当今网络安全社区面临的最重要挑战之一。克服这一挑战的一个有希望的步骤是正式验证计算系统的端到端行为确实满足各种信息流策略。不幸的是,由于今天的系统软件仍然由C和汇编程序组成,端到端的验证必须要求我们不仅要证明单个组件的安全属性,还要通过编译和跨语言链接小心地保存这些属性。在本文中,我们提出了一种新的方法,用于正式验证由C和汇编程序组成的软件系统的端到端安全性。我们引入了观察函数的一般定义,该定义统一了策略规范、状态不可区分和整个执行行为的概念。我们展示了如何为不同的抽象级别使用不同的观察函数,以及如何使用一种特殊的模拟来跨抽象级别链接不同的安全证明,这种模拟保证了状态的不可区分性。为了证明我们的新方法的有效性,我们成功地构建了一个端到端安全证明,在Coq证明助手中完全形式化,用于一个重要的操作系统内核(运行在扩展的CompCert x86汇编机模型上)。内核的一些部分是用C语言编写的,一些是用汇编语言编写的;我们验证所有的代码,不管使用什么语言。
{"title":"End-to-end verification of information-flow security for C and assembly programs","authors":"D. Costanzo, Zhong Shao, Ronghui Gu","doi":"10.1145/2908080.2908100","DOIUrl":"https://doi.org/10.1145/2908080.2908100","url":null,"abstract":"Protecting the confidentiality of information manipulated by a computing system is one of the most important challenges facing today's cybersecurity community. A promising step toward conquering this challenge is to formally verify that the end-to-end behavior of the computing system really satisfies various information-flow policies. Unfortunately, because today's system software still consists of both C and assembly programs, the end-to-end verification necessarily requires that we not only prove the security properties of individual components, but also carefully preserve these properties through compilation and cross-language linking. In this paper, we present a novel methodology for formally verifying end-to-end security of a software system that consists of both C and assembly programs. We introduce a general definition of observation function that unifies the concepts of policy specification, state indistinguishability, and whole-execution behaviors. We show how to use different observation functions for different levels of abstraction, and how to link different security proofs across abstraction levels using a special kind of simulation that is guaranteed to preserve state indistinguishability. To demonstrate the effectiveness of our new methodology, we have successfully constructed an end-to-end security proof, fully formalized in the Coq proof assistant, of a nontrivial operating system kernel (running on an extended CompCert x86 assembly machine model). Some parts of the kernel are written in C and some are written in assembly; we verify all of the code, regardless of language.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124631139","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}
引用次数: 71
Synthesizing transformations on hierarchically structured data 对分层结构数据进行综合转换
Navid Yaghmazadeh, Christian Klinger, Işıl Dillig, Swarat Chaudhuri
This paper presents a new approach for synthesizing transformations on tree-structured data, such as Unix directories and XML documents. We consider a general abstraction for such data, called hierarchical data trees (HDTs) and present a novel example-driven synthesis algorithm for HDT transformations. Our central insight is to reduce the problem of synthesizing tree transformers to the synthesis of list transformations that are applied to the paths of the tree. The synthesis problem over lists is solved using a new algorithm that combines SMT solving and decision tree learning. We have implemented our technique in a system called HADES and show that HADES can automatically synthesize a variety of interesting transformations collected from online forums.
本文提出了一种对树结构数据(如Unix目录和XML文档)进行转换的新方法。我们考虑了这种数据的一般抽象,称为层次数据树(HDT),并提出了一种新的实例驱动的HDT转换合成算法。我们的核心见解是将合成树转换器的问题简化为应用于树的路径的列表转换的合成。采用SMT求解和决策树学习相结合的新算法解决了列表综合问题。我们已经在一个名为HADES的系统中实现了我们的技术,并表明HADES可以自动合成从在线论坛收集的各种有趣的转换。
{"title":"Synthesizing transformations on hierarchically structured data","authors":"Navid Yaghmazadeh, Christian Klinger, Işıl Dillig, Swarat Chaudhuri","doi":"10.1145/2908080.2908088","DOIUrl":"https://doi.org/10.1145/2908080.2908088","url":null,"abstract":"This paper presents a new approach for synthesizing transformations on tree-structured data, such as Unix directories and XML documents. We consider a general abstraction for such data, called hierarchical data trees (HDTs) and present a novel example-driven synthesis algorithm for HDT transformations. Our central insight is to reduce the problem of synthesizing tree transformers to the synthesis of list transformations that are applied to the paths of the tree. The synthesis problem over lists is solved using a new algorithm that combines SMT solving and decision tree learning. We have implemented our technique in a system called HADES and show that HADES can automatically synthesize a variety of interesting transformations collected from online forums.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"54 1-2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116601482","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}
引用次数: 55
期刊
Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1