华为云WebAssembly代码静态符号执行技术实现新突破
本文分享自华为云社区《华为云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代码静态符号执行技术实现新突破的更多相关文章
- 王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019
演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019) ...
- 基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一
[摘要]仓储管理存在四大细分场景:出入库管理.盘点.分拣和货物跟踪.本系列将介绍利用华为云IOT全栈云服务,端侧采用华为收发分离式RFID解决方案,打造端到端到IOT智慧仓储解决方案的最佳实践. 仓储 ...
- 一文带你读懂!华为云在ACMUG技术沙龙上都透露了些啥?
摘要:近日,华为云数据库业务总裁苏光牛在ACMUG中国MySQL用户组主办的 "华为云专场" 技术沙龙中分享了华为云数据库重磅新品GaussDB的核心能力与竞争优势.那么, Gau ...
- 华为云 AI 实战营计划,带你迈上 AI 之路
当今,AI的开发人才需求呈现极大的供需不平衡.所有开发者都关心,要如何从一名开发者晋升为AI开发者?AI开发能力,是主要的进入障碍.不用慌,华为云推出了 <华为云ModelArts-Lab AI ...
- 鲲鹏凌云,并行科技Paramon通过华为云鲲鹏云服务兼容性认证
随着Cloud2.0时代到来,5G技术开始应用普及,超算云服务需求不断升级,业务多样性.数据多样性不断延伸.2019年7月,华为召开鲲鹏计算产业发展峰会,依托在联接领域坚实的基础,华为未来将着力打造智 ...
- 中国DevOps平台市场,华为云再次位居领导者位置
摘要:华为云软件开发生产线DevCloud在市场份额和发展战略两大维度均排名第一,再次位居领导者位置. 9月21日 ,国际权威分析师机构IDC发布<IDC MarketScape: 中国 Dev ...
- 【云享专刊】开源遇上华为云,OCP架构变身“云原生框架”
摘要:华为云DTSE团队出品云原生改造指南,助力轻松实践OCP上云. 本文分享自华为云社区<[云享专刊]开源遇上华为云,OCP架构变身"云原生框架">,作者:华为云社区 ...
- Cloud Native Weekly | KubeCon首登中国,华为云亮相KubeCon 2018,微软云服务又罢工
1.KubeCon首登中国,Kubernetes将如何再演进? 11月14日,由CNCF发起的云原生领域全球最大的峰会之一KubeCon+CloudNativeCon首次登陆中国,中国已经成为云原生领 ...
- 华为云PaaS首席科学家:Cloud Native +AI,企业数字化转型的最佳拍档
近日,在2019华为全球分析师大会期间,华为云PaaS首席科学家熊英博士在+智能,见未来(华为云&大数据)的分论坛上,从云计算行业发展谈起,深入云原生发展趋势,对华为云智能应用平台做了深度解读 ...
- 沈抚示范区·“华为云杯”2021全国AI大赛圆满落
摘要:以赛促学,赛教结合!驱动AI产业繁荣发展 本文分享自华为云社区<云聚沈抚 · 智赢未来!沈抚示范区·"华为云杯"2021全国AI大赛圆满落幕>,作者:灰灰哒. 近 ...
随机推荐
- Unity的IPreprocessShaders:深入解析与实用案例
Unity IPreprocessShaders Unity IPreprocessShaders是Unity引擎中的一个非常有用的功能,它可以让开发者在编译Shader时自定义哪些操作需要被执行.这 ...
- js实现继承的五种方法及原型的继承关系
继承是javascript中实现代码复用的一种方式,也能绑定对象或者函数之间的关系 为什么要继承 比如以下代码,Person.Student和Teacher构造函数,可以发现他们有一些特征 Perso ...
- [nginx]lua读取请求体
前言 nginx默认不读取请求体的数据,但可以通过$request_body内置变量来获取.$request_body存在内存中,如果它的字节大小超过nginx配置的client_body_buffe ...
- 1.0 Python 标准输入与输出
python 是一种高级.面向对象.通用的编程语言,由Guido van Rossum发明,于1991年首次发布.python 的设计哲学强调代码的可读性和简洁性,同时也非常适合于大型项目的开发.py ...
- AI绘画:Stable Diffusion 终极炼丹宝典:从入门到精通
本文收集于教程合集:AIGC从入门到精通教程汇总 我是小梦,以浅显易懂的方式,与大家分享那些实实在在可行之宝藏. 历经耗时数十个小时,总算将这份Stable Diffusion的使用教程整理妥当. 从 ...
- 我愿称之为"温水煮青蛙"
前言:作为开发在工作中如何将自己一点一点放弃. 事情是这样的,来新公司已经差不多三个多月了,公司的主要技术栈大部分还是jquer 这让我非常的头疼,不是说做不了这个技术,其实用过jquer 都知道这玩 ...
- RocketMQ 系列(二) 环境搭建
RocketMQ 系列(二) 环境搭建 上一个章节对于 RocketMQ 作了一些概念上的介绍,如果你对于 RocketMQ 没有概念,不妨先看RocketMQ系列(一) 基本介绍. 这个章节主要介绍 ...
- 2023-09-03:用go编写。给你一个 n 个节点的无向无根树,节点编号从 0 到 n - 1 给你整数 n 和一个长度为 n - 1 的二维整数数组 edges , 其中 edges[i] =
2023-09-03:用go语言编写.给你一个 n 个节点的无向无根树,节点编号从 0 到 n - 1 给你整数 n 和一个长度为 n - 1 的二维整数数组 edges , 其中 edges[i] ...
- 发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
蓝绿发布(Blue-Green Deployment) 蓝绿发布提供了一种零宕机的部署方式.不停老版本,部署新版本进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本.始终有两个版本同时 ...
- HTML视频背景(动态背景)
网页动态背景一般是用视频实现的,能增添网页的感染力,我觉得很好看,也不难,不妨学一下. 先加入下面一串代码: 1 <style> 2 video{ 3 height: 100%; 4 wi ...