0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

峰会回顾第12期 | Wasm软件生态系统安全分析

OpenHarmony TSC 来源:OpenHarmony TSC 作者:OpenHarmony TSC 2023-06-07 08:40 次阅读

演讲嘉宾 | 王浩宇

回顾整理 | 廖 涛

排版校对 | 李萍萍

e4814990-04cb-11ee-9c1d-dac502259ad0.png

嘉宾简介

王浩宇,华中科技大学教授,博士生导师,华中科技大学OpenHarmony技术俱乐部主任。研究关注于新兴软件系统中的安全、隐私和可靠性问题,近五年发表CCF A类和CSRankings顶会论文近70篇,在软件安全和系统测量领域的顶会论文成果在国内名列前茅。

内容来源

第一届开放原子开源基金会OpenHarmony技术峰会——开发者工具分论坛

正 文 内 容

WebAssembly(Wasm)是W3C标准化组织制定的一种高效、底层、可移植的字节码格式。目前,Wasm越来越多地用于浏览器、无服务器计算、跨平台容器和区块链DApp等场景。Wasm与OpenHarmony生态能够有哪些碰撞呢?华中科技大学网络安全学院王浩宇教授在第一届OpenHarmony技术峰会上,分享了当前在Wasm安全领域所做的探索,并展望了Wasm与OpenHarmony结合的新方向。

e4b0ea1a-04cb-11ee-9c1d-dac502259ad0.png

01

Wasm软件生态系统介绍

目前,如C、C++、Rust、Go、JavaC#等几乎所有主流高级语言都可以被编译到Wasm,所有的主流浏览器也均支持Wasm。此外业界也实现了很多独立的Wasm虚拟机(运行时),支持解释器、AOT、JIT等模式。

e4bc9b9e-04cb-11ee-9c1d-dac502259ad0.png

WebAssembly (Wasm) 及其运行环境

Wasm的执行架构与设计特点有:

  • 类型安全的栈指令:线性时间类型检查算法,完全确定栈上值的数量和类型;

  • 结构化的控制流指令:内部指令仅能根据嵌套结构跳转,简化了编译器实现;

  • 可拓展的线性内存:一页为64KB,模块中指定初始内存页和最大内存页数量,运行时可动态增长;函数调用栈,返回地址等重要数据由外部运行时维护,保证了安全性;

  • 指令和数据完全分离:函数“地址”通过下标表示,非直接跳转通过跳转表实现。

Wasm的应用前景十分广阔。例如,Wasm能够支持高效的Web计算,因此基于Wasm能够实现大型应用在浏览器中运行;Wasm也支持跨平台容器技术,适用于嵌入式、可信计算以及云计算等场景。此外,Wasm在Web 3.0/区块链中的DApp和智能合约等领域也被应用广泛。

Wasm多语言、跨平台以及高性能的特性,使其非常契合OpenHarmony面向万物互联新场景的开源生态,在移动设备上应用前景广泛。目前,WasmEdge开源项⽬维护者Michael Yuan等人已经发起了OpenHarmony Wasm-SIG提案,致⼒于宣传、实施、推⼴Wasm与OpenHarmony的集成,在OpenHarmony终端设备上可以安全高效的运行第三方开发者用 C、C++、Rust 等语言编写的 Wasm 程序,有利于扩大 OpenHarmony生态的开发者群体。

02

Wasm安全及相关研究

Wasm生态中也有很多安全问题得到了学术界的重视,包括前端编译器安全,代码移植安全,Wasm二进制安全,Wasm相关的恶意应用,Wasm可信执行环境等等。

  • 代码内存安全:由于Wasm生态还较不成熟,在传统二进制中已经有成熟防御措施的漏洞仍然能够被利用。例如,由于缺乏stack canary机制,攻击者可以轻松利用栈溢出漏洞;Wasm也缺乏相关的堆保护机制等。

  • 程序移植安全:大量的现有程序可以被“直接”编译到Wasm,但可能会引入bug或安全问题;移植会导致代码行为(如指针大小、内存能力、环境变量等)不同;移植时处理不当可能导致不同的堆内存管理实现困难、缺乏安全措施等安全问题。

  • 恶意Wasm程序:目前很大一部分Wasm程序被用于恶意挖矿等行为,Wasm也可以作为混淆或者加壳方式被恶意软件利用。

e510d40c-04cb-11ee-9c1d-dac502259ad0.png

Wasm (安全) 问题及学术界相关研究

然而,目前Wasm安全相关研究还处于初级阶段。一方面,Wasm不断引入的新特性与新场景持续带来新的安全问题和挑战;另一方面,Wasm几乎没有通用的程序分析框架,大部分工具都是针对特定平台的Wasm二进制分析(只支持部分指令集、只对平台相关库函数做建模),无法分析通用 Wasm 二进制;此外,Wasm的二进制反编译器还处于初期阶段,Wasm虚拟机和编译器不够成熟,Wasm代码混淆以及代码保护技术还较为欠缺等。

针对上述安全问题,王浩宇教授所带领的学术团队在Wasm二进制翻译、Wasm程序分析、Wasm运行时/编译器bug检测等方面做了安全增强相关工作。例如,在区块链智能合约场景下,实现了从EVM字节码到eWasm字节码的安全Wasm二进制翻译;提出了Wasm符号执行框架EOSafe、Wasm模糊测试框架WASAI、Wasm通用二进制重写框架BREWasm、Wasm二进制混淆工具Chaos等分析技术。此外,王浩宇教授团队提出了针对Wasm运行时的模糊测试技术,已经在wasmer,wasmtime,WAMR,wasm3,Wasm Edge等运行时中发现了数十个代码缺陷。

e557f454-04cb-11ee-9c1d-dac502259ad0.png

王浩宇教授的团队Wasm相关研究工作

03

Wasm二进制重写及其安全应用

在本次峰会的开发者工具分论坛,王浩宇教授介绍了其团队提出的一个通用的Wasm二进制重写工具。Wasm二进制重写具有无需源码、跨平台和跨语言等优点,其应用场景包括Wasm程序修复、测试用例生成、代码插桩、辅助动态分析、Wasm代码漏洞检测、Wasm模糊测试、Wasm二进制保护与混淆等。目前,学术界已有的Wasm二进制重写和插桩的研究大都只局限于简单的指令级别修改,比如在某一指令前后添加一些指令,对控制流的修改也仅局限于某一特定模式的更改等。然而,一个通用的Wasm二进制重写框架是如上众多Wasm研究工作的基础。

实现一个通用的Wasm二进制重写框架存在一些挑战。

(1)Wasm不同段之间的耦合性:Wasm中,一个函数的所有信息,包括函数签名,函数指令等内容分布在不同的Wasm段中,这导致对单独一个段的重写不足以实现Wasm中的一个微小功能。而且开发者需要熟悉多个段的不同的数据结构才能实现对Wasm中某一功能的重写;

(2)结构化控制流与控制流修改:Wasm没有goto-like的跳转指令,且只有将代码块进行嵌套才能添加跳转指令,这对实现灵活的控制流重写带来了较大挑战

(3)Wasm栈平衡校验和修复:一个正确的Wasm二进制需要满足静态校验规则。例如,一个函数的所有信息都靠函数的index索引,且函数的指令需要满足栈平衡。在对Wasm二进制重写后,如果出现了index之间的索引不一致或某一函数指令没有栈平衡等静态校验问题,则会生成错误的Wasm二进制。

王浩宇教授团队针对上述挑战,分别提出了相应的解决方案。针对挑战(1),除了提供细粒度的对每个段中数据结构的重写功能外,还将各个段的结构抽象成一组语义并提供大量针对语义的重写API,使开发者不需要关心底层对各个段的修改逻辑。

针对挑战(2),提出控制流结构原子化的方法,在加载Wasm模块时,对指令进行分割和构建代码块(原子化),利用原子化的控制流结构可以组合构建更复杂的控制流结构,并在修改结束后,将基于原子化代码块的控制流结构转换回Wasm指令。

针对挑战(3),实现两个辅助模块indices-fixer和stack-calculator以修复索引错误和栈平衡。

e564dec6-04cb-11ee-9c1d-dac502259ad0.png

BREWasm框架

基于上述解决方案,王浩宇教授带领的团队提出了一个通用的Wasm二进制重写框架——BREWasm。该框架主要包括以下5部分功能:

  • Wasm Parser:给定一套简易DSL,将Wasm段和数据结构抽象,并解析为一个可操作对象的列表;

  • Section Rewriter:基于Wasm段和数据结构抽象,实现细粒度段重写API;

  • Semantics Rewriter:将段重写API进行组合,实现一组语义更为丰富的Semantic API;

  • Control Flow Reconstructor:实现了一组能够任意灵活修改控制流且无需关注栈平衡的Control Flow API;

  • Wasm Encoder:将重写后的可操作对象列表按照段和数据结构抽象重新编码为合法的 Wasm 二进制。

e5888448-04cb-11ee-9c1d-dac502259ad0.png

Wasm控制流原子化示意以及BREWasm中提供的部分Control Flow API

BREWasm能够应用在Wasm代码混淆、Wasm程序栈溢出保护、Wasm程序插桩等场景。例如,在Wasm二进制混淆上,BREWasm采取切分原有Wasm代码块来获得控制流重写的基本元素,并将这些元素构成一个switch-case的控制流结构,再将其插入到while控制流中,可以仅用几行代码实现对任意Wasm程序的控制流平坦化混淆;在Wasm程序栈溢出保护上,仅调用BREWasm提供的几个API,即可实现对可能存在栈溢出问题的函数进行hook,在函数被调用前提前在栈上插入canary,在函数执行完成后去检测canary的值是否发生改变,来确定函数执行过程中是否出现了栈溢出问题;在Wasm程序插桩上,BREWasm能够对Wasm二进制插桩,实现动态污点分析,调用图分析,内存访问分析,恶意挖矿检测等功能,也能够给定插桩规则,对每个Wasm指令进行自动化插桩,为Wasm 二进制导入外部实现的分析API。此外,BREWasm还能够非常方便地应用于Wasm代码变换、Wasm程序修复以及Wasm模糊测试等场景。

e594ba56-04cb-11ee-9c1d-dac502259ad0.png

BREWasm对任意Wasm程序实现控制流平坦化示例

04

总结与展望

跨语言、跨平台、跨场景的开源软件生态是发展趋势,也引入众多新的攻击面。Wasm的特性使其非常契合OpenHarmony面向万物互联新场景的开源生态,而其中的安全问题也不可忽视。期待学术界和工业界一起,为万物互联的开源生态添砖加瓦,持续为新兴软件安全赋能!

e5cbd220-04cb-11ee-9c1d-dac502259ad0.png

Wasm未来研究展望

E N D

点击下方阅读原文获取演讲PPT。

关注我们,获取更多精彩。

审核编辑黄宇


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenHarmony
    +关注

    关注

    25

    文章

    3753

    浏览量

    16735
收藏 人收藏

    评论

    相关推荐

    安森美PRISM生态系统助力相机开发

    安森美(onsemi)开发了一个高级图像传感器模块参考设计 (Premier Reference Image Sensor Module,PRISM) 生态系统,大大缩短了原型开发周期,进一步减轻了工程负担,提高了相机质量,并最终帮助我们的客户实现产品快速上市。
    的头像 发表于 02-06 10:32 114次阅读
    安森美PRISM<b class='flag-5'>生态系统</b>助力相机开发

    回顾2024年度润和软件与openEuler的精彩瞬间

    openEuler生态系统蓬勃发展中扮演了关键角色。让我们共同回顾2024年度润和软件与openEuler的精彩瞬间!
    的头像 发表于 01-07 18:12 554次阅读

    笙泉完善的MCU生态系统(ECO System),赋能高效开发、提升竞争优势

    本帖最后由 noctor 于 2024-12-27 10:46 编辑 笙泉完善的MCU生态系统(ECO System),赋能高效开发、提升竞争优势 完善的生态系统 笙泉科技已深耕MCU
    发表于 12-27 09:58

    润和软件参与openEuler社区操作系统安全主题技术交流

    信息技术飞速发展,操作系统安全已成为保障数字世界稳定运行的基石,OpenAtom openEuler(简称"openEuler")致力于构建一个开放、可靠、安全的开源操作系统生态
    的头像 发表于 11-13 16:14 507次阅读

    对三星而言开放生态系统是什么

    在过去的五年里,三星投入了大量精力来建立团队、文化和流程,成为开放生态系统的积极贡献者。那么,为什么一家硬件公司会进行这样的投资?其价值何在?我们如何将硬件差异化与开源和标准结合起来?
    的头像 发表于 11-13 15:58 468次阅读

    2024 RISC-V 中国峰会:华秋电子助力RISC-V生态

    。 (华秋电子<电子发烧友>平台社区负责人刘勇对RISC-V生态系统介绍) 在峰会现场,刘勇分享了华秋电子在RISC-V芯片创新应用与生态上的一些思考及布局,打造
    发表于 08-26 16:46

    第二届大会回顾22 软件缺陷漏洞分析

    演讲嘉宾 | 梁洪亮 回顾整理 | 廖   涛 排版校对 | 宋夕明 嘉宾介绍 OS安全分论坛  梁洪亮, 博士,北京邮电大学副教授,博士生导师。研究兴趣为可信软件与智能系统。 视频
    的头像 发表于 06-27 08:42 431次阅读
    第二届大会<b class='flag-5'>回顾</b><b class='flag-5'>第</b>22<b class='flag-5'>期</b>  <b class='flag-5'>软件</b>缺陷漏洞<b class='flag-5'>分析</b>

    商汤科技发布粤语大模型,推动香港人工智能生态系统发展

    商汤科技董事长兼 CEO 徐立表示,此次推出商量粤语版具有重要意义,希望借助日日新大模型 5.0 系列的创新产品和巨大潜力,助力香港人工智能生态系统的发展。
    的头像 发表于 05-31 11:11 669次阅读

    苹果硬件生态系统丰富,用户黏性大

     苹果以其丰富多元的硬件生态系统,涵盖了从 iPhone 至 Mac 电脑等多种设备,每个设备都有其独特的用户群体。
    的头像 发表于 04-18 11:03 617次阅读

    浅谈AMD Ryzen AI PC生态系统

    AMD与OEM合作伙伴联想和华硕,以及生态系统合作伙伴百川智能、有道、游戏加加、生数、始智AI等共同努力,共庆龙年,并在大中华区扩展了Ryzen AI生态系统
    的头像 发表于 04-11 11:05 837次阅读

    莱迪思举办2024莱迪思技术峰会展示其强大的FPGA合作生态系统

    莱迪思半导体近日在上海举办的2024年莱迪思技术峰会上展示了其强大且不断增长的全球生态系统,该生态系统由客户、IP和参考平台合作伙伴以及致力于推动FPGA创新的开发人员组成。
    的头像 发表于 03-14 15:10 642次阅读

    Meta欲打造巨型AI覆盖视频推荐生态系统

    Meta正计划打造一款巨型AI系统,以全面覆盖其视频推荐生态系统,为旗下产品提供统一的视频推荐引擎。
    的头像 发表于 03-11 11:14 748次阅读

    第二届大会回顾9 | 从操作系统视角看大模型数据安全挑战

    演讲嘉宾 | 李   屹 回顾整理 | 廖   涛 排版校对 | 李萍萍 嘉宾介绍  OS安全分论坛  李屹 ,华为OS内核实验室安全技术专家与助理科学家。主要研究领域包括操作系统安全
    的头像 发表于 02-22 10:36 702次阅读
    第二届大会<b class='flag-5'>回顾</b><b class='flag-5'>第</b>9<b class='flag-5'>期</b> | 从操作<b class='flag-5'>系统</b>视角看大模型数据<b class='flag-5'>安全</b>挑战

    Renesas Ready生态系统合作伙伴解决方案介绍

    电子发烧友网站提供《Renesas Ready生态系统合作伙伴解决方案介绍.pdf》资料免费下载
    发表于 02-21 09:38 0次下载
    Renesas Ready<b class='flag-5'>生态系统</b>合作伙伴解决方案介绍

    RA生态系统合作伙伴解决方案提供卓越的平面航向和6轴IMU性能

    电子发烧友网站提供《RA生态系统合作伙伴解决方案提供卓越的平面航向和6轴IMU性能.pdf》资料免费下载
    发表于 02-19 09:46 0次下载
    RA<b class='flag-5'>生态系统</b>合作伙伴解决方案提供卓越的平面航向和6轴IMU性能