(技术积累)(Part 2)How does Wasm module interact with JavaScripte in browser?

(Part 2)How does Wasm module interact with JavaScripte in browser? Reference: WebAssembly in Action. Chapter 4.2 Part1中为了使得JS代码可以直接调用Wasm函数,并传递内存,使用了Emscripten提供的ccall,UTF8ToString,_malloc和 _free函数,这些helper functions提供了对标准JavaScripte WebAssembly API的封装。若Emscripten不生成JS plumbing code,即没有这些help functions时,使用下面的方式来使JS和Wasm Module交互:

阅读全文

(论文阅读) Wasabi-A Framework for Dynamically Analyzing WebAssembly

Wasabi: A Framework for Dynamically Analyzing WebAssembly 作者:Daniel Lehmann,Michael Pradel 会议:ASPLOS'19 开源:http://wasabi.software-lab.org ABSTRACT 这篇文章提出了第一个Wasm动态分析框架,Wasabi。其基于binary instrumentation,通过将用JavaScript写成的测试函数插桩进Wasm binary中来实现分析。对 WebAssembly 进行动态分析会面临一些独特的挑战,例如使用具有固定类型的分析函数跟踪类型多态指令的问题,我们通过按需单态化(on-demand monomorphization)来解决这个问题。 我们在计算密集型的benchmarks和实际应用上对Wasabi的评估表明,Wasabi (i) 忠实地保留了原始程序行为,(ii) 为重量级动态分析带来了合理的开销,(iii) 使各种动态分析(包括指令计数、调用图提取、内存访问跟踪和污点分析)的实施变得简单易行。

阅读全文

(论文阅读)(Part2)SoK-Sanitizing for Security

(Part2)SoK: Sanitizing for Security 作者:Dokyung Song, Julian Lettner, Prabhu Rajasekaran(UC Irvine) 会议:S&P’19 Program InstrumentationSanitizer 通过在程序中嵌入inlined reference monitors(IRM)来执行其漏洞查找策略,这些IRM会监控和调和所有可能导致漏洞的程序指令,这些指令包括(但不限于)load和store、栈帧分配和释放、调用内存分配函数(如 malloc)和系统调用。IRM可以通过compiler、linker或instrumentation framework嵌入程序中。

阅读全文

(论文阅读)(Part1)SoK-Sanitizing for Security

(Part1)SoK: Sanitizing for Security 作者:Dokyung Song, Julian Lettner, Prabhu Rajasekaran(UC Irvine) 会议:S&P’19 ABSTRACTC 和 C++ 编程语言出了名的不安全,但仍然不可或缺。因此,开发人员采用多管齐下的方法,抢在对手之前发现安全问题。这些方法包括手动、静态和动态程序分析。动态错误查找工具(即 “sanitizers”)可以发现其他类型分析无法发现的错误,因为它们可以观察到程序的实际执行情况,因此可以直接观察到发生的不正确程序行为。 学术界已经开发了大量的sanitizer原型,实践者也对其进行了改进。我们系统地概述了sanitizer,重点介绍了它们在发现安全问题方面的作用。具体来说,我们对现有工具及其涵盖的安全漏洞进行了分类,描述了它们的性能和兼容性,并强调了各种权衡。

阅读全文

(论文阅读)CODAMOSA-Escaping Coverage Plateaus in Test Generation with Pre-trained Large Language Models

(论文阅读)CODAMOSA: Escaping Coverage Plateaus in Test Generation with Pre-trained Large Language Models 时间:2023.5 作者:Caroline Lemieux(University of British Columbia), Jeevana Priya Inala(Microsoft) 会议:ICSE’23 开源:https://github.com/microsoft/codamosa ABSTRACT通过将test case generation与mutation相结合,SBST为待测试程序生成高覆盖率的test cases。SBST的表现依赖于生成test cases的合理概率,这些test cases可执行被测程序的核心逻辑。使用这些test cases,SBST可以探索这些cases周围的空间来探索更多的程序空间。 这篇文章探索了例如OpenAI的Codex等LLM是否可以被用于帮助SBST的搜索过程。我们提出了名为CODAMOSA的方法,其首先执行SBST直到覆盖率提升停滞,接着询问Codex提供example test cases来探索没未访问过的函数。这些examples帮助SBST调整其搜索方向到更有用的领域。在486个benchmarks上的evaluation结果表明,与仅有SBST或者仅有LLM相比,CODAMOSA在更多benchmark(173 和 279 个)上实现了更高的覆盖率明显,其数量高于其减少的覆盖率数量(10 和 4 个)。

阅读全文

(论文阅读)An orchestrated survey of methodologies for automated software test case generation

An orchestrated survey of methodologies for automated software test case generation 时间:2013 作者:Saswat Anand(Stanford) 期刊:The Journal of Systems and Software(JSS,软工B) ABSTRACTTest Case Generation是Software Testing中最耗费人力的工作之一,它对软件测试的效果和效率也有很大影响。因此,几十年来,它一直是软件测试领域最活跃的研究课题之一,并产生了许多不同的方法和工具。本文对自动生成软件测试案例的最重要技术进行了系统分析,并在独立章节中进行了回顾。介绍的技术包括 : structural testing using symbolic execution model-based testing combinatorial testing random testing及其自适应随机测试变体 search-based testing。 每一部分都由该技术领域的世界知名研究人员撰写,简要介绍了该方法的基本思想、技术现状、未决研究问题讨论以及该方法的未来发展前景。总体而言,本文旨在对自动生成测试用例的研究做一个介绍性的、最新的和(相对)简短的概述,同时确保处理的全面性和权威性。

阅读全文