本文分享自华为云社区《华为云WebAssembly代码静态符号执行技术实现新突破,相关论文被软件工程顶会ISSTA2023接收并荣获杰出论文奖》,作者:华为云软件分析Lab 。

WebAssembly(Wasm)最初由W3C 的Mozilla、谷歌、微软、苹果等著名公司合作研发,最初是作为浏览器内应用程序的高性能执行引擎。因为Wasm的高性能、多语言支持、安全性和可移植等特性,Wasm 也正在从Web走向云、边缘和嵌入式,成为软件创新的热点。鉴于Wasm的优越特性,业界专家一致预测Wasm语言在云计算场景中的应用将会越来越广泛。然而针对Wasm,业界目前缺乏成熟、高效的静态符号执行引擎,而且当前的符号执行路径搜索技术通常过于粗糙,主要支持整个程序的全局搜索策略,但不同的代码块可能适合不同的局部策略,这使得Wasm的缺陷发现存在较大挑战。静态符号执行技术是程序分析领域中至关重要的一项技术,可以在软件源码中寻找软件缺陷为填补这一业界空白,,相关的分析和优化方法一直在学术界和工业界得到持续关注。但是,符号执行会遇到路径爆炸的问题。在实践中,用户经常需要利用各种搜索策略来指导符号执行以达到他们的分析目标,减少路径爆炸,但是现有的基于搜索或者引导的符号执行方法通常过于粗糙,它们主要支持整个程序的全局搜索策略,但不同的代码块可能适合不同的局部策略。而对于WebAssembly(Wasm),目前尚无成熟、高效的符号执行引擎。

针对上述问题,华为云PaaS技术创新LAB联合北京大学郭耀教授、李锭助理教授研究团队,针对WasmWebAssembly代码孵化开发了一个可工业场景落地的静态符号执行引擎服务Eunomia。该工作对应论文“Eunomia: Enabling User-Specified Fine-Grained Search in Symbolically Executing WebAssembly Binaries”已被软件工程顶会 ISSTA 2023在2023 年国际软件测试与分析会议(2023 ACM International Symposium on Software Testing and Analysis 2023, ACM ISSTA 2023)录用发表上,发表题为 “Eunomia: Enabling User-Specified Fine-Grained Search in Symbolically Executing WebAssembly Binaries” 的论文,并荣获 “荣获该会议的 ACM SIGSOFT 杰出论文奖(Distinguished Paper Award)”。论文第一作者为北京大学计算机学院 2019 级博士生贺宁宇。

图1 ACM SIGSOFT 杰出论文奖证书

Wasm是在泛在计算领域广泛使用的一种新的中间语言范型,可以为 C/C++、Go 等语言提供统一的泛在应用执行环境。Wasm已被广泛应用于网络应用程序、区块链应用以及服务器无感知(severless)应用。但是现有的针对Wasm的符号执行引擎不完全支持Wasm接口(WASI),导致应用范围受限。研究团队针对 Wasm语言的特点设计了一种领域专用语言(DSL)AES Script,该语言允许用户将先验知识形式化的引入到被测试程序中。通过作者提出并实现的基于用户细粒度知识引导的Wasm符号执行引擎,相较于目前的前沿工作,该工作可以将针对 Wasm语言的静态符号执行分析效率提升一到两个数量级,成功在实际应用和系统中发现了多个 0-Day 漏洞,证明了该工作的有效性,并为后续工作指出了一个新的研究方向。

图2 论文工作的框架与工作流图

实验结果表明,在Logic Bomb基准测试集上成功触发逻辑炸弹和超时的案例数量上,Eunomia明显优于Manticore。在所有12个类别中,Eunomia在专注于符号内存、浮点数和外部库函数的逻辑炸弹方面有更好的表现。对于分析真实世界的应用程序,结果如表2的第三列和第四列所示。我们可以看到,在8个应用程序中,Manticore只能在2小时内完成对3个应用程序的分析,而Eunomia的数量是5个。此外,很容易观察到,与Manticore相比,Eunomia的效率提高了一到两个数量级,并发现了2个新漏洞。

PaaS技术创新Lab隶属于华为云,致力于综合利用软件分析、数据挖掘、机器学习等技术,为软件研发人员提供下一代智能研发工具服务的核心引擎和智慧大脑。我们将聚焦软件工程领域硬核能力,不断构筑研发利器,持续交付高价值商业特性!加入我们,一起开创研发新“境界”!

点击关注,第一时间了解华为云新鲜技术~

华为云WebAssembly代码静态符号执行技术实现新突破的更多相关文章

  1. 王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019

    演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019) ...

  2. 基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一

    [摘要]仓储管理存在四大细分场景:出入库管理.盘点.分拣和货物跟踪.本系列将介绍利用华为云IOT全栈云服务,端侧采用华为收发分离式RFID解决方案,打造端到端到IOT智慧仓储解决方案的最佳实践. 仓储 ...

  3. 一文带你读懂!华为云在ACMUG技术沙龙上都透露了些啥?

    摘要:近日,华为云数据库业务总裁苏光牛在ACMUG中国MySQL用户组主办的 "华为云专场" 技术沙龙中分享了华为云数据库重磅新品GaussDB的核心能力与竞争优势.那么, Gau ...

  4. 华为云 AI 实战营计划,带你迈上 AI 之路

    当今,AI的开发人才需求呈现极大的供需不平衡.所有开发者都关心,要如何从一名开发者晋升为AI开发者?AI开发能力,是主要的进入障碍.不用慌,华为云推出了 <华为云ModelArts-Lab AI ...

  5. 鲲鹏凌云,并行科技Paramon通过华为云鲲鹏云服务兼容性认证

    随着Cloud2.0时代到来,5G技术开始应用普及,超算云服务需求不断升级,业务多样性.数据多样性不断延伸.2019年7月,华为召开鲲鹏计算产业发展峰会,依托在联接领域坚实的基础,华为未来将着力打造智 ...

  6. 中国DevOps平台市场,华为云再次位居领导者位置

    摘要:华为云软件开发生产线DevCloud在市场份额和发展战略两大维度均排名第一,再次位居领导者位置. 9月21日 ,国际权威分析师机构IDC发布<IDC MarketScape: 中国 Dev ...

  7. 【云享专刊】开源遇上华为云,OCP架构变身“云原生框架”

    摘要:华为云DTSE团队出品云原生改造指南,助力轻松实践OCP上云. 本文分享自华为云社区<[云享专刊]开源遇上华为云,OCP架构变身"云原生框架">,作者:华为云社区 ...

  8. Cloud Native Weekly | KubeCon首登中国,华为云亮相KubeCon 2018,微软云服务又罢工

    1.KubeCon首登中国,Kubernetes将如何再演进? 11月14日,由CNCF发起的云原生领域全球最大的峰会之一KubeCon+CloudNativeCon首次登陆中国,中国已经成为云原生领 ...

  9. 华为云PaaS首席科学家:Cloud Native +AI,企业数字化转型的最佳拍档

    近日,在2019华为全球分析师大会期间,华为云PaaS首席科学家熊英博士在+智能,见未来(华为云&大数据)的分论坛上,从云计算行业发展谈起,深入云原生发展趋势,对华为云智能应用平台做了深度解读 ...

  10. 沈抚示范区·“华为云杯”2021全国AI大赛圆满落

    摘要:以赛促学,赛教结合!驱动AI产业繁荣发展 本文分享自华为云社区<云聚沈抚 · 智赢未来!沈抚示范区·"华为云杯"2021全国AI大赛圆满落幕>,作者:灰灰哒. 近 ...

随机推荐

  1. 【pandas小技巧】--修改列的名称

    重命名 pandas 数据中列的名称是一种常见的数据预处理任务.这通常是因为原始数据中的列名称可能不够清晰或准确.例如,列名可能包含空格.大写字母.特殊字符或拼写错误. 使用 pandas 的 ren ...

  2. ASP.NET WebForm中在TextBox输入框回车时会触发其他事件,如何处理?

    一.TextBox在输入框回车时会触发其他事件,如何解决? 前台代码: <ul> <li><span>名称:</span><asp:TextBox ...

  3. 渗透-02:HTTPS主干-分支和HTTPS传输过程

    一.HTTPS主干-分支 第一层 第一层,是主干的主干,加密通信就是双方都持有一个对称加密的秘钥,然后就可以安全通信了. 问题就是,无论这个最初的秘钥是由客户端传给服务端,还是服务端传给客户端,都是明 ...

  4. asp.net core之EfCore

    EF Core(Entity Framework Core)是一个轻量级.跨平台的对象关系映射(ORM)框架,用于在.NET应用程序中访问和操作数据库.它是Entity Framework的下一代版本 ...

  5. [故障处理]WindowsServer休眠后黑屏

    情况 Windows Server 2016休眠后无法被远程桌面,现场连接显示器也是黑屏.直连显示器的情况下,有时候长按 ctrl键能亮屏. 处理步骤 先扫描是否有系统文件损坏:Dism /Onlin ...

  6. Protobuf vs JSON

    Protobuf(Protocol Buffers)和 JSON 都是数据序列化格式,但它们在许多方面有着显著的不同.以下是对两者的一些主要比较: 数据大小和速度: Protobuf:由于 Proto ...

  7. 关于Vue的就地更新策略的解析

    在Vue中使用v-for渲染列表时,默认使用就地更新策略.该策略默认是基于索引的,规定在列表绑定的数据元素顺序变化时,不会重新创建整个列表,而只是更新对应DOM元素上的数据.以下代码实现了一个TODO ...

  8. Linux 内核音频数据传递主要流程 (下)

    来而不往非礼也.前面看到了用户空间应用程序和 DMA buffer 之间交换数据,并更新 runtime->control->appl_ptr 指针的过程,这里看一下硬件设备驱动程序在完成 ...

  9. 修改DataTable中的值

    DataTable dt ;for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; row.BeginEdit() ...

  10. mysql8关闭binlog并清空Binlog

    编辑my.ini或者my.cnf文件 清空binlog信息 #查看现存的binlog文件列表 show master logs; #重置清空binlog文件 reset master; #重置清空后 ...