首页 > 最新文献

2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)最新文献

英文 中文
A Test-Suite Diagnosability Metric for Spectrum-Based Fault Localization Approaches 一个测试套件Diagnosability标准谱故障定位方法
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.66
Alexandre Perez, Rui Abreu, A. Deursen
Current metrics for assessing the adequacy of a test-suite plainly focus on the number of components (be it lines, branches, paths) covered by the suite, but do not explicitly check how the tests actually exercise these components and whether they provide enough information so that spectrum-based fault localization techniques can perform accurate fault isolation. We propose a metric, called DDU, aimed at complementing adequacy measurements by quantifying a test-suite's diagnosability, i.e., the effectiveness of applying spectrum-based fault localization to pinpoint faults in the code in the event of test failures. Our aim is to increase the value generated by creating thorough test-suites, so they are not only regarded as error detection mechanisms but also as effective diagnostic aids that help widely-used fault-localization techniques to accurately pinpoint the location of bugs in the system. Our experiments show that optimizing a test suite with respect to DDU yields a 34% gain in spectrum-based fault localization report accuracy when compared to the standard branch-coverage metric.
当前用于评估测试套件的充分性的度量明确地关注套件所覆盖的组件(无论是行、分支还是路径)的数量,但是没有明确地检查测试实际上是如何运行这些组件的,以及它们是否提供了足够的信息,以便基于谱的故障定位技术能够执行准确的故障隔离。我们提出了一个称为DDU的度量,旨在通过量化测试套件的可诊断性来补充充分性度量,即,在测试失败的情况下,应用基于谱的故障定位来精确定位代码中的故障的有效性。我们的目标是通过创建完整的测试套件来增加产生的价值,因此它们不仅被视为错误检测机制,而且还被视为有效的诊断辅助工具,可以帮助广泛使用的故障定位技术准确地确定系统中错误的位置。我们的实验表明,与标准分支覆盖度量相比,针对DDU优化测试套件在基于频谱的故障定位报告准确性方面获得了34%的增益。
{"title":"A Test-Suite Diagnosability Metric for Spectrum-Based Fault Localization Approaches","authors":"Alexandre Perez, Rui Abreu, A. Deursen","doi":"10.1109/ICSE.2017.66","DOIUrl":"https://doi.org/10.1109/ICSE.2017.66","url":null,"abstract":"Current metrics for assessing the adequacy of a test-suite plainly focus on the number of components (be it lines, branches, paths) covered by the suite, but do not explicitly check how the tests actually exercise these components and whether they provide enough information so that spectrum-based fault localization techniques can perform accurate fault isolation. We propose a metric, called DDU, aimed at complementing adequacy measurements by quantifying a test-suite's diagnosability, i.e., the effectiveness of applying spectrum-based fault localization to pinpoint faults in the code in the event of test failures. Our aim is to increase the value generated by creating thorough test-suites, so they are not only regarded as error detection mechanisms but also as effective diagnostic aids that help widely-used fault-localization techniques to accurately pinpoint the location of bugs in the system. Our experiments show that optimizing a test suite with respect to DDU yields a 34% gain in spectrum-based fault localization report accuracy when compared to the standard branch-coverage metric.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"17 1","pages":"654-664"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87679608","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}
引用次数: 66
Travioli: A Dynamic Analysis for Detecting Data-Structure Traversals Travioli:检测数据结构遍历的动态分析
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.50
Rohan Padhye, Koushik Sen
Traversal is one of the most fundamental operations on data structures, in which an algorithm systematically visits some or all of the data items of a data structure. We propose a dynamic analysis technique, called Travioli, for detecting data-structure traversals. We introduce the concept of acyclic execution contexts, which enables precise detection of traversals of arrays and linked data structures such as lists and trees in the presence of both loops and recursion. We describe how the information reported by Travioli can be used for visualizing data-structure traversals, manually generating performance regression tests, and for discovering performance bugs caused by redundant traversals. We evaluate Travioli on five real-world JavaScript programs. In our experiments, Travioli produced fewer than 4% false positives. We were able to construct performance tests for 93.75% of the reported true traversals. Travioli also found two asymptotic performance bugs in widely used JavaScript frameworks D3 and express.
遍历是数据结构上最基本的操作之一,其中算法系统地访问数据结构中的部分或全部数据项。我们提出了一种动态分析技术,称为Travioli,用于检测数据结构遍历。我们引入了非循环执行上下文的概念,它可以在循环和递归存在的情况下精确检测数组和链接数据结构(如列表和树)的遍历。我们描述了如何将Travioli报告的信息用于可视化数据结构遍历、手动生成性能回归测试以及发现由冗余遍历引起的性能错误。我们用五个真实的JavaScript程序来评估Travioli。在我们的实验中,特拉维里产生的假阳性不到4%。我们能够为93.75%的报告真实遍历构建性能测试。Travioli还在广泛使用的JavaScript框架D3和express中发现了两个渐近性能缺陷。
{"title":"Travioli: A Dynamic Analysis for Detecting Data-Structure Traversals","authors":"Rohan Padhye, Koushik Sen","doi":"10.1109/ICSE.2017.50","DOIUrl":"https://doi.org/10.1109/ICSE.2017.50","url":null,"abstract":"Traversal is one of the most fundamental operations on data structures, in which an algorithm systematically visits some or all of the data items of a data structure. We propose a dynamic analysis technique, called Travioli, for detecting data-structure traversals. We introduce the concept of acyclic execution contexts, which enables precise detection of traversals of arrays and linked data structures such as lists and trees in the presence of both loops and recursion. We describe how the information reported by Travioli can be used for visualizing data-structure traversals, manually generating performance regression tests, and for discovering performance bugs caused by redundant traversals. We evaluate Travioli on five real-world JavaScript programs. In our experiments, Travioli produced fewer than 4% false positives. We were able to construct performance tests for 93.75% of the reported true traversals. Travioli also found two asymptotic performance bugs in widely used JavaScript frameworks D3 and express.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"98 1","pages":"473-483"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85798077","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}
引用次数: 14
Automated Transplantation and Differential Testing for Clones 克隆的自动移植和差异测试
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.67
Tianyi Zhang, Miryung Kim
Code clones are common in software. When applying similar edits to clones, developers often find it difficult to examine the runtime behavior of clones. The problem is exacerbated when some clones are tested, while their counterparts are not. To reuse tests for similar but not identical clones, Grafter transplants one clone to its counterpart by (1) identifying variations in identifier names, types, and method call targets, (2) resolving compilation errors caused by such variations through code transformation, and (3) inserting stub code to transfer input data and intermediate output values for examination. To help developers examine behavioral differences between clones, Grafter supports fine-grained differential testing at both the test outcome level and the intermediate program state level. In our evaluation on three open source projects, Grafter successfully reuses tests in 94% of clone pairs without inducing build errors, demonstrating its automated code transplantation capability. To examine the robustness of G RAFTER, we systematically inject faults using a mutation testing tool, Major, and detect behavioral differences induced by seeded faults. Compared with a static cloning bug finder, Grafter detects 31% more mutants using the test-level comparison and almost 2X more using the state-level comparison. This result indicates that Grafter should effectively complement static cloning bug finders.
代码克隆在软件中很常见。当对克隆应用类似的编辑时,开发人员经常发现很难检查克隆的运行时行为。当一些克隆体被测试,而它们的对应体没有被测试时,问题就更加严重了。为了重用相似但不相同的克隆的测试,Grafter通过以下方式将一个克隆移植到对应的克隆中:(1)识别标识符名称、类型和方法调用目标的变化,(2)通过代码转换解决由这些变化引起的编译错误,以及(3)插入存根代码以传递输入数据和中间输出值以供检查。为了帮助开发人员检查克隆之间的行为差异,Grafter支持在测试结果级别和中间程序状态级别进行细粒度的差异测试。在我们对三个开源项目的评估中,Grafter成功地在94%的克隆对中重用了测试,而没有引起构建错误,这证明了它的自动代码移植能力。为了检验G - RAFTER的鲁棒性,我们使用突变测试工具Major系统地注入故障,并检测由种子故障引起的行为差异。与静态克隆bug查找器相比,Grafter使用测试级比较多检测到31%的突变,使用状态级比较多检测到近2倍的突变。这个结果表明Grafter应该有效地补充静态克隆bug查找器。
{"title":"Automated Transplantation and Differential Testing for Clones","authors":"Tianyi Zhang, Miryung Kim","doi":"10.1109/ICSE.2017.67","DOIUrl":"https://doi.org/10.1109/ICSE.2017.67","url":null,"abstract":"Code clones are common in software. When applying similar edits to clones, developers often find it difficult to examine the runtime behavior of clones. The problem is exacerbated when some clones are tested, while their counterparts are not. To reuse tests for similar but not identical clones, Grafter transplants one clone to its counterpart by (1) identifying variations in identifier names, types, and method call targets, (2) resolving compilation errors caused by such variations through code transformation, and (3) inserting stub code to transfer input data and intermediate output values for examination. To help developers examine behavioral differences between clones, Grafter supports fine-grained differential testing at both the test outcome level and the intermediate program state level. In our evaluation on three open source projects, Grafter successfully reuses tests in 94% of clone pairs without inducing build errors, demonstrating its automated code transplantation capability. To examine the robustness of G RAFTER, we systematically inject faults using a mutation testing tool, Major, and detect behavioral differences induced by seeded faults. Compared with a static cloning bug finder, Grafter detects 31% more mutants using the test-level comparison and almost 2X more using the state-level comparison. This result indicates that Grafter should effectively complement static cloning bug finders.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"153 1","pages":"665-676"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77705055","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}
引用次数: 36
Semantically Enhanced Software Traceability Using Deep Learning Techniques 使用深度学习技术在语义上增强软件可追溯性
Jin Guo, Jinghui Cheng, J. Cleland-Huang
In most safety-critical domains the need for traceability is prescribed by certifying bodies. Trace links are generally created among requirements, design, source code, test cases and other artifacts, however, creating such links manually is time consuming and error prone. Automated solutions use information retrieval and machine learning techniques to generate trace links, however, current techniques fail to understand semantics of the software artifacts or to integrate domain knowledge into the tracing process and therefore tend to deliver imprecise and inaccurate results. In this paper, we present a solution that uses deep learning to incorporate requirements artifact semantics and domain knowledge into the tracing solution. We propose a tracing network architecture that utilizes Word Embedding and Recurrent Neural Network (RNN) models to generate trace links. Word embedding learns word vectors that represent knowledge of the domain corpus and RNN uses these word vectors to learn the sentence semantics of requirements artifacts. We trained 360 different configurations of the tracing network using existing trace links in the Positive Train Control domain and identified the Bidirectional Gated Recurrent Unit (BI-GRU) as the best model for the tracing task. BI-GRU significantly out-performed state-of-the-art tracing methods including the Vector Space Model and Latent Semantic Indexing.
在大多数安全关键领域,对可追溯性的需求是由认证机构规定的。跟踪链接通常是在需求、设计、源代码、测试用例和其他工件之间创建的,然而,手动创建这样的链接既耗时又容易出错。自动化解决方案使用信息检索和机器学习技术来生成跟踪链接,然而,当前的技术无法理解软件工件的语义或将领域知识集成到跟踪过程中,因此倾向于提供不精确和不准确的结果。在本文中,我们提出了一个使用深度学习将需求工件语义和领域知识合并到跟踪解决方案中的解决方案。我们提出了一种利用词嵌入和递归神经网络(RNN)模型来生成跟踪链接的跟踪网络架构。词嵌入学习表示领域语料库知识的词向量,RNN使用这些词向量来学习需求工件的句子语义。我们使用正列车控制域中现有的跟踪链路训练了360种不同的跟踪网络配置,并确定双向门控循环单元(BI-GRU)是跟踪任务的最佳模型。BI-GRU显著优于最先进的跟踪方法,包括向量空间模型和潜在语义索引。
{"title":"Semantically Enhanced Software Traceability Using Deep Learning Techniques","authors":"Jin Guo, Jinghui Cheng, J. Cleland-Huang","doi":"10.1109/ICSE.2017.9","DOIUrl":"https://doi.org/10.1109/ICSE.2017.9","url":null,"abstract":"In most safety-critical domains the need for traceability is prescribed by certifying bodies. Trace links are generally created among requirements, design, source code, test cases and other artifacts, however, creating such links manually is time consuming and error prone. Automated solutions use information retrieval and machine learning techniques to generate trace links, however, current techniques fail to understand semantics of the software artifacts or to integrate domain knowledge into the tracing process and therefore tend to deliver imprecise and inaccurate results. In this paper, we present a solution that uses deep learning to incorporate requirements artifact semantics and domain knowledge into the tracing solution. We propose a tracing network architecture that utilizes Word Embedding and Recurrent Neural Network (RNN) models to generate trace links. Word embedding learns word vectors that represent knowledge of the domain corpus and RNN uses these word vectors to learn the sentence semantics of requirements artifacts. We trained 360 different configurations of the tracing network using existing trace links in the Positive Train Control domain and identified the Bidirectional Gated Recurrent Unit (BI-GRU) as the best model for the tracing task. BI-GRU significantly out-performed state-of-the-art tracing methods including the Vector Space Model and Latent Semantic Indexing.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"11 1","pages":"3-14"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80824850","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}
引用次数: 204
Stochastic Optimization of Program Obfuscation 程序混淆的随机优化
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.28
Han Liu, Chengnian Sun, Z. Su, Yu Jiang, M. Gu, Jiaguang Sun
Program obfuscation is a common practice in software development to obscure source code or binary code, in order to prevent humans from understanding the purpose or logic of software. It protects intellectual property and deters malicious attacks. While tremendous efforts have been devoted to the development of various obfuscation techniques, we have relatively little knowledge on how to most effectively use them together. The biggest challenge lies in identifying the most effective combination of obfuscation techniques. This paper presents a unified framework to optimize program obfuscation. Given an input program P and a set T of obfuscation transformations, our technique can automatically identify a sequence seq = ‹t1, t2, …, tn› (∀i ∈ [1, n]. ti ∈ T), such that applying ti in order on P yields the optimal obfuscation performance. We model the process of searching for seq as a mathematical optimization problem. The key technical contributions of this paper are: (1) an obscurity language model to assess obfuscation effectiveness/optimality, and (2) a guided stochastic algorithm based on Markov chain Monte Carlo methods to search for the optimal solution seq. We have realized the framework in a tool Closure* for JavaScript, and evaluated it on 25 most starred JavaScript projects on GitHub (19K lines of code). Our machinery study shows that Closure* outperforms the well-known Google Closure Compiler by defending 26% of the attacks initiated by JSNice. Our human study also reveals that Closure* is practical and can reduce the human attack success rate by 30%.
程序混淆是软件开发中常见的一种做法,用于模糊源代码或二进制代码,以防止人们理解软件的目的或逻辑。它保护知识产权,阻止恶意攻击。尽管人们已经为开发各种混淆技术付出了巨大的努力,但我们对于如何最有效地将它们结合起来使用却知之甚少。最大的挑战在于确定最有效的混淆技术组合。本文提出了一个优化程序混淆的统一框架。给定一个输入程序P和一组混淆变换T,我们的技术可以自动识别序列seq = [t1, t2,…,tn›](∀i∈[1,n])。ti∈T),使得在P上依次应用ti可获得最佳的混淆性能。我们将搜索seq的过程建模为一个数学优化问题。本文的关键技术贡献是:(1)一个模糊语言模型来评估混淆有效性/最优性;(2)一个基于马尔可夫链蒙特卡罗方法的引导随机算法来搜索最优解序列。我们已经在JavaScript的Closure*工具中实现了这个框架,并在GitHub上25个最受好评的JavaScript项目(19K行代码)上对它进行了评估。我们的机器研究表明,Closure*通过防御由JSNice发起的26%的攻击,优于著名的Google Closure Compiler。我们的人类研究也表明,封闭*是实用的,可以减少人类攻击成功率30%。
{"title":"Stochastic Optimization of Program Obfuscation","authors":"Han Liu, Chengnian Sun, Z. Su, Yu Jiang, M. Gu, Jiaguang Sun","doi":"10.1109/ICSE.2017.28","DOIUrl":"https://doi.org/10.1109/ICSE.2017.28","url":null,"abstract":"Program obfuscation is a common practice in software development to obscure source code or binary code, in order to prevent humans from understanding the purpose or logic of software. It protects intellectual property and deters malicious attacks. While tremendous efforts have been devoted to the development of various obfuscation techniques, we have relatively little knowledge on how to most effectively use them together. The biggest challenge lies in identifying the most effective combination of obfuscation techniques. This paper presents a unified framework to optimize program obfuscation. Given an input program P and a set T of obfuscation transformations, our technique can automatically identify a sequence seq = ‹t1, t2, …, tn› (∀i ∈ [1, n]. ti ∈ T), such that applying ti in order on P yields the optimal obfuscation performance. We model the process of searching for seq as a mathematical optimization problem. The key technical contributions of this paper are: (1) an obscurity language model to assess obfuscation effectiveness/optimality, and (2) a guided stochastic algorithm based on Markov chain Monte Carlo methods to search for the optimal solution seq. We have realized the framework in a tool Closure* for JavaScript, and evaluated it on 25 most starred JavaScript projects on GitHub (19K lines of code). Our machinery study shows that Closure* outperforms the well-known Google Closure Compiler by defending 26% of the attacks initiated by JSNice. Our human study also reveals that Closure* is practical and can reduce the human attack success rate by 30%.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"27 1","pages":"221-231"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90552542","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
RClassify: Classifying Race Conditions in Web Applications via Deterministic Replay rclassified:通过确定性重放对Web应用程序中的竞争条件进行分类
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.33
Lu Zhang, Chao Wang
Race conditions are common in web applicationsbut are difficult to diagnose and repair. Although there existtools for detecting races in web applications, they all report alarge number of false positives. That is, the races they report areeither bogus, meaning they can never occur in practice, or benign, meaning they do not lead to erroneous behaviors. Since manuallydiagnosing them is tedious and error prone, reporting theserace warnings to developers would be counter-productive. Wepropose a platform-agnostic, deterministic replay-based methodfor identifying not only the real but also the truly harmful raceconditions. It relies on executing each pair of racing events in twodifferent orders and assessing their impact on the program state:we say a race is harmful only if (1) both of the two executions arefeasible and (2) they lead to different program states. We haveevaluated our evidence-based classification method on a large setof real websites from Fortune-500 companies and demonstratedthat it significantly outperforms all state-of-the-art techniques.
竞态条件在web应用程序中很常见,但很难诊断和修复。虽然在web应用程序中存在检测竞争的工具,但它们都会报告大量的误报。也就是说,他们报告的比赛要么是虚假的,这意味着它们永远不会在实践中发生,要么是良性的,这意味着它们不会导致错误的行为。由于手动诊断它们是乏味且容易出错的,因此向开发人员报告这些服务警告将适得其反。我们提出了一种平台不可知的,基于确定性重放的方法,不仅可以识别真实的,而且可以识别真正有害的比赛条件。它依赖于以两种不同的顺序执行每一对比赛事件,并评估它们对程序状态的影响:我们说一场比赛是有害的,只有当(1)两种执行都是可行的,(2)它们导致不同的程序状态。我们已经在财富500强公司的大量真实网站上评估了我们的基于证据的分类方法,并证明它明显优于所有最先进的技术。
{"title":"RClassify: Classifying Race Conditions in Web Applications via Deterministic Replay","authors":"Lu Zhang, Chao Wang","doi":"10.1109/ICSE.2017.33","DOIUrl":"https://doi.org/10.1109/ICSE.2017.33","url":null,"abstract":"Race conditions are common in web applicationsbut are difficult to diagnose and repair. Although there existtools for detecting races in web applications, they all report alarge number of false positives. That is, the races they report areeither bogus, meaning they can never occur in practice, or benign, meaning they do not lead to erroneous behaviors. Since manuallydiagnosing them is tedious and error prone, reporting theserace warnings to developers would be counter-productive. Wepropose a platform-agnostic, deterministic replay-based methodfor identifying not only the real but also the truly harmful raceconditions. It relies on executing each pair of racing events in twodifferent orders and assessing their impact on the program state:we say a race is harmful only if (1) both of the two executions arefeasible and (2) they lead to different program states. We haveevaluated our evidence-based classification method on a large setof real websites from Fortune-500 companies and demonstratedthat it significantly outperforms all state-of-the-art techniques.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"336 1","pages":"278-288"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80637543","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}
引用次数: 24
SPAIN: Security Patch Analysis for Binaries towards Understanding the Pain and Pills 西班牙:二进制文件的安全补丁分析,以理解痛苦和药丸
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.49
Zhengzi Xu, Bihuan Chen, Mahinthan Chandramohan, Yang Liu, Fu Song
Software vulnerability is one of the major threats to software security. Once discovered, vulnerabilities are often fixed by applying security patches. In that sense, security patches carry valuable information about vulnerabilities, which could be used to discover, understand and fix (similar) vulnerabilities. However, most existing patch analysis approaches work at the source code level, while binary-level patch analysis often heavily relies on a lot of human efforts and expertise. Even worse, some vulnerabilities may be secretly patched without applying CVE numbers, or only the patched binary programs are available while the patches are not publicly released. These practices greatly hinder patch analysis and vulnerability analysis. In this paper, we propose a scalable binary-level patch analysis framework, named SPAIN, which can automatically identify security patches and summarize patch patterns and their corresponding vulnerability patterns. Specifically, given the original and patched versions of a binary program, we locate the patched functions and identify the changed traces (i.e., a sequence of basic blocks) that may contain security or non-security patches. Then we identify security patches through a semantic analysis of these traces and summarize the patterns through a taint analysis on the patched functions. The summarized patterns can be used to search similar patches or vulnerabilities in binary programs. Our experimental results on several real-world projects have shown that: i) SPAIN identified security patches with high accuracy and high scalability, ii) SPAIN summarized 5 patch patterns and their corresponding vulnerability patterns for 5 vulnerability types, and iii) SPAIN discovered security patches that were not documented, and discovered 3 zero-day vulnerabilities.
软件漏洞是软件安全的主要威胁之一。一旦发现漏洞,通常通过应用安全补丁来修复。从这个意义上说,安全补丁包含有关漏洞的有价值的信息,这些信息可用于发现、理解和修复(类似的)漏洞。然而,大多数现有的补丁分析方法都是在源代码级别上工作的,而二进制级别的补丁分析通常严重依赖于大量的人力和专业知识。更糟糕的是,一些漏洞可能在没有应用CVE编号的情况下被秘密修补,或者只有修补过的二进制程序可用,而补丁没有公开发布。这些实践极大地阻碍了补丁分析和漏洞分析。在本文中,我们提出了一个可扩展的二进制补丁分析框架,命名为西班牙,它可以自动识别安全补丁并总结补丁模式及其对应的漏洞模式。具体来说,给定二进制程序的原始版本和补丁版本,我们定位补丁函数并识别可能包含安全或非安全补丁的更改痕迹(即基本块序列)。然后,我们通过对这些痕迹的语义分析来识别安全补丁,并通过对补丁功能的污点分析来总结模式。总结的模式可用于搜索二进制程序中类似的补丁或漏洞。我们在多个现实项目的实验结果表明:1)西班牙识别出的安全补丁具有较高的准确性和高可扩展性;2)西班牙总结出5种漏洞类型的5种补丁模式及其对应的漏洞模式;3)西班牙发现了未记录的安全补丁,并发现了3个零日漏洞。
{"title":"SPAIN: Security Patch Analysis for Binaries towards Understanding the Pain and Pills","authors":"Zhengzi Xu, Bihuan Chen, Mahinthan Chandramohan, Yang Liu, Fu Song","doi":"10.1109/ICSE.2017.49","DOIUrl":"https://doi.org/10.1109/ICSE.2017.49","url":null,"abstract":"Software vulnerability is one of the major threats to software security. Once discovered, vulnerabilities are often fixed by applying security patches. In that sense, security patches carry valuable information about vulnerabilities, which could be used to discover, understand and fix (similar) vulnerabilities. However, most existing patch analysis approaches work at the source code level, while binary-level patch analysis often heavily relies on a lot of human efforts and expertise. Even worse, some vulnerabilities may be secretly patched without applying CVE numbers, or only the patched binary programs are available while the patches are not publicly released. These practices greatly hinder patch analysis and vulnerability analysis. In this paper, we propose a scalable binary-level patch analysis framework, named SPAIN, which can automatically identify security patches and summarize patch patterns and their corresponding vulnerability patterns. Specifically, given the original and patched versions of a binary program, we locate the patched functions and identify the changed traces (i.e., a sequence of basic blocks) that may contain security or non-security patches. Then we identify security patches through a semantic analysis of these traces and summarize the patterns through a taint analysis on the patched functions. The summarized patterns can be used to search similar patches or vulnerabilities in binary programs. Our experimental results on several real-world projects have shown that: i) SPAIN identified security patches with high accuracy and high scalability, ii) SPAIN summarized 5 patch patterns and their corresponding vulnerability patterns for 5 vulnerability types, and iii) SPAIN discovered security patches that were not documented, and discovered 3 zero-day vulnerabilities.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"179 1","pages":"462-472"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80682544","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}
引用次数: 117
Optimizing Test Placement for Module-Level Regression Testing 优化模块级回归测试的测试位置
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.69
A. Shi, Suresh Thummalapenta, Shuvendu K. Lahiri, N. Bjørner, J. Czerwonka
Modern build systems help increase developer productivityby performing incremental building and testing. Thesebuild systems view a software project as a group of interdependentmodules and perform regression test selection at themodule level. However, many large software projects have imprecisedependency graphs that lead to wasteful test executions. Ifa test belongs to a module that has more dependencies than theactual dependencies of the test, then it is executed unnecessarilywhenever a code change impacts those additional dependencies. In this paper, we formulate the problem of wasteful testexecutions due to suboptimal placement of tests in modules. We propose a greedy algorithm to reduce the number oftest executions by suggesting test movements while consideringhistorical build information and actual dependencies of tests. Wehave implemented our technique, called TestOptimizer, on topof CloudBuild, the build system developed within Microsoft overthe last few years. We have evaluated the technique on five largeproprietary projects. Our results show that the suggested testmovements can lead to a reduction of 21.66 million test executions(17.09%) across all our subject projects. We received encouragingfeedback from the developers of these projects, they accepted andintend to implement ≈80% of our reported suggestions.
现代构建系统通过执行增量构建和测试来帮助提高开发人员的生产力。这些构建系统将软件项目视为一组相互依赖的模块,并在模块级别执行回归测试选择。然而,许多大型软件项目具有不精确的依赖关系图,这会导致测试执行的浪费。如果测试属于一个比测试的实际依赖项更多的模块,那么只要代码更改影响了那些额外的依赖项,它就会被不必要地执行。在本文中,我们阐述了由于模块中测试的次优放置而导致的浪费测试执行的问题。我们提出了一种贪婪算法,在考虑历史构建信息和测试的实际依赖关系的同时,通过建议测试移动来减少测试执行的次数。我们已经在CloudBuild上实现了我们的技术,称为TestOptimizer, CloudBuild是微软在过去几年里开发的构建系统。我们已经在五个大型专有项目中评估了该技术。我们的结果显示,建议的测试运动可以在我们所有的主题项目中减少2166万次测试执行(17.09%)。我们从这些项目的开发者那里得到了令人鼓舞的反馈,他们接受并打算实施我们报告的建议的80%。
{"title":"Optimizing Test Placement for Module-Level Regression Testing","authors":"A. Shi, Suresh Thummalapenta, Shuvendu K. Lahiri, N. Bjørner, J. Czerwonka","doi":"10.1109/ICSE.2017.69","DOIUrl":"https://doi.org/10.1109/ICSE.2017.69","url":null,"abstract":"Modern build systems help increase developer productivityby performing incremental building and testing. Thesebuild systems view a software project as a group of interdependentmodules and perform regression test selection at themodule level. However, many large software projects have imprecisedependency graphs that lead to wasteful test executions. Ifa test belongs to a module that has more dependencies than theactual dependencies of the test, then it is executed unnecessarilywhenever a code change impacts those additional dependencies. In this paper, we formulate the problem of wasteful testexecutions due to suboptimal placement of tests in modules. We propose a greedy algorithm to reduce the number oftest executions by suggesting test movements while consideringhistorical build information and actual dependencies of tests. Wehave implemented our technique, called TestOptimizer, on topof CloudBuild, the build system developed within Microsoft overthe last few years. We have evaluated the technique on five largeproprietary projects. Our results show that the suggested testmovements can lead to a reduction of 21.66 million test executions(17.09%) across all our subject projects. We received encouragingfeedback from the developers of these projects, they accepted andintend to implement ≈80% of our reported suggestions.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"6 1","pages":"689-699"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88633627","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}
引用次数: 31
Decoding the Representation of Code in the Brain: An fMRI Study of Code Review and Expertise 解码代码在大脑中的表现:代码审查和专业知识的fMRI研究
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.24
Benjamin Floyd, Tyler Santander, Westley Weimer
Subjective judgments in software engineering tasks are of critical importance but can be difficult to study with conventional means. Medical imaging techniques hold the promise of relating cognition to physical activities and brain structures. In a controlled experiment involving 29 participants, we examine code comprehension, code review and prose review using functional magnetic resonance imaging. We find that the neural representations of programming languages vs. natural languages are distinct. We can classify which task a participant is undertaking based solely on brain activity (balanced accuracy 79%, p
主观判断在软件工程任务中是至关重要的,但很难用传统的方法来研究。医学成像技术有望将认知与身体活动和大脑结构联系起来。在一项涉及29名参与者的对照实验中,我们使用功能磁共振成像检查代码理解,代码审查和散文审查。我们发现编程语言与自然语言的神经表征是不同的。我们可以仅根据大脑活动来分类参与者正在执行的任务(平衡准确率79%,p
{"title":"Decoding the Representation of Code in the Brain: An fMRI Study of Code Review and Expertise","authors":"Benjamin Floyd, Tyler Santander, Westley Weimer","doi":"10.1109/ICSE.2017.24","DOIUrl":"https://doi.org/10.1109/ICSE.2017.24","url":null,"abstract":"Subjective judgments in software engineering tasks are of critical importance but can be difficult to study with conventional means. Medical imaging techniques hold the promise of relating cognition to physical activities and brain structures. In a controlled experiment involving 29 participants, we examine code comprehension, code review and prose review using functional magnetic resonance imaging. We find that the neural representations of programming languages vs. natural languages are distinct. We can classify which task a participant is undertaking based solely on brain activity (balanced accuracy 79%, p","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"41 1","pages":"175-186"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78378870","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}
引用次数: 112
UML Diagram Refinement (Focusing on Class-and Use Case Diagrams) UML图精化(关注类和用例图)
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.73
David Faitelson, S. Tyszberowicz
Large and complicated UML models are not useful, because they are difficult to understand. This problem can be solved by using several diagrams of the same system at different levels of abstraction. Unfortunately, UML does not define an explicit set of rules for ensuring that diagrams at different levels of abstraction are consistent. We define such a set of rules, that we call diagram refinement. Diagram refinement is intuitive, and applicable to several kinds of UML diagrams (mostly to structural diagrams but also to use case diagrams), yet it rests on a solid mathematical basis—the theory of graph homomorphisms. We illustrate its usefulness with a series of examples.
大型和复杂的UML模型是没有用的,因为它们很难理解。这个问题可以通过在不同的抽象层次上使用同一系统的几个图来解决。不幸的是,UML没有定义一套明确的规则来确保不同抽象层次上的图是一致的。我们定义了这样一组规则,我们称之为图的细化。图的细化是直观的,并且适用于几种UML图(主要是结构图,但也适用于用例图),但是它依赖于一个坚实的数学基础——图同态理论。我们用一系列的例子来说明它的用处。
{"title":"UML Diagram Refinement (Focusing on Class-and Use Case Diagrams)","authors":"David Faitelson, S. Tyszberowicz","doi":"10.1109/ICSE.2017.73","DOIUrl":"https://doi.org/10.1109/ICSE.2017.73","url":null,"abstract":"Large and complicated UML models are not useful, because they are difficult to understand. This problem can be solved by using several diagrams of the same system at different levels of abstraction. Unfortunately, UML does not define an explicit set of rules for ensuring that diagrams at different levels of abstraction are consistent. We define such a set of rules, that we call diagram refinement. Diagram refinement is intuitive, and applicable to several kinds of UML diagrams (mostly to structural diagrams but also to use case diagrams), yet it rests on a solid mathematical basis—the theory of graph homomorphisms. We illustrate its usefulness with a series of examples.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"161 1","pages":"735-745"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86260120","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}
引用次数: 14
期刊
2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)
全部 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