演講嘉賓 | 王浩宇
回顧整理 | 廖 濤
排版校對(duì) | 李萍萍
嘉賓簡(jiǎn)介
王浩宇,華中科技大學(xué)教授,博士生導(dǎo)師,華中科技大學(xué)OpenHarmony技術(shù)俱樂部主任。研究關(guān)注于新興軟件系統(tǒng)中的安全、隱私和可靠性問題,近五年發(fā)表CCF A類和CSRankings頂會(huì)論文近70篇,在軟件安全和系統(tǒng)測(cè)量領(lǐng)域的頂會(huì)論文成果在國(guó)內(nèi)名列前茅。
內(nèi)容來源
第一屆開放原子開源基金會(huì)OpenHarmony技術(shù)峰會(huì)——開發(fā)者工具分論壇
正 文 內(nèi) 容
WebAssembly(Wasm)是W3C標(biāo)準(zhǔn)化組織制定的一種高效、底層、可移植的字節(jié)碼格式。目前,Wasm越來越多地用于瀏覽器、無服務(wù)器計(jì)算、跨平臺(tái)容器和區(qū)塊鏈DApp等場(chǎng)景。Wasm與OpenHarmony生態(tài)能夠有哪些碰撞呢?華中科技大學(xué)網(wǎng)絡(luò)安全學(xué)院王浩宇教授在第一屆OpenHarmony技術(shù)峰會(huì)上,分享了當(dāng)前在Wasm安全領(lǐng)域所做的探索,并展望了Wasm與OpenHarmony結(jié)合的新方向。
![e4b0ea1a-04cb-11ee-9c1d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/C0/wKgaomTntS-AMbAbAAp3sO9ygzE214.png)
01?
Wasm軟件生態(tài)系統(tǒng)介紹
目前,如C、C++、Rust、Go、Java、C#等幾乎所有主流高級(jí)語(yǔ)言都可以被編譯到Wasm,所有的主流瀏覽器也均支持Wasm。此外業(yè)界也實(shí)現(xiàn)了很多獨(dú)立的Wasm虛擬機(jī)(運(yùn)行時(shí)),支持解釋器、AOT、JIT等模式。
![e4bc9b9e-04cb-11ee-9c1d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/C0/wKgaomTntS-AXBNuAANGiP3xbXo926.png)
WebAssembly (Wasm) 及其運(yùn)行環(huán)境
Wasm的執(zhí)行架構(gòu)與設(shè)計(jì)特點(diǎn)有:
-
類型安全的棧指令:線性時(shí)間類型檢查算法,完全確定棧上值的數(shù)量和類型;
-
結(jié)構(gòu)化的控制流指令:內(nèi)部指令僅能根據(jù)嵌套結(jié)構(gòu)跳轉(zhuǎn),簡(jiǎn)化了編譯器實(shí)現(xiàn);
-
可拓展的線性內(nèi)存:一頁(yè)為64KB,模塊中指定初始內(nèi)存頁(yè)和最大內(nèi)存頁(yè)數(shù)量,運(yùn)行時(shí)可動(dòng)態(tài)增長(zhǎng);函數(shù)調(diào)用棧,返回地址等重要數(shù)據(jù)由外部運(yùn)行時(shí)維護(hù),保證了安全性;
-
指令和數(shù)據(jù)完全分離:函數(shù)“地址”通過下標(biāo)表示,非直接跳轉(zhuǎn)通過跳轉(zhuǎn)表實(shí)現(xiàn)。
Wasm的應(yīng)用前景十分廣闊。例如,Wasm能夠支持高效的Web計(jì)算,因此基于Wasm能夠?qū)崿F(xiàn)大型應(yīng)用在瀏覽器中運(yùn)行;Wasm也支持跨平臺(tái)容器技術(shù),適用于嵌入式、可信計(jì)算以及云計(jì)算等場(chǎng)景。此外,Wasm在Web 3.0/區(qū)塊鏈中的DApp和智能合約等領(lǐng)域也被應(yīng)用廣泛。
Wasm多語(yǔ)言、跨平臺(tái)以及高性能的特性,使其非常契合OpenHarmony面向萬物互聯(lián)新場(chǎng)景的開源生態(tài),在移動(dòng)設(shè)備上應(yīng)用前景廣泛。目前,WasmEdge開源項(xiàng)?維護(hù)者M(jìn)ichael Yuan等人已經(jīng)發(fā)起了OpenHarmony Wasm-SIG提案,致?于宣傳、實(shí)施、推?Wasm與OpenHarmony的集成,在OpenHarmony終端設(shè)備上可以安全高效的運(yùn)行第三方開發(fā)者用 C、C++、Rust 等語(yǔ)言編寫的 Wasm 程序,有利于擴(kuò)大 OpenHarmony生態(tài)的開發(fā)者群體。
02?
Wasm安全及相關(guān)研究
Wasm生態(tài)中也有很多安全問題得到了學(xué)術(shù)界的重視,包括前端編譯器安全,代碼移植安全,Wasm二進(jìn)制安全,Wasm相關(guān)的惡意應(yīng)用,Wasm可信執(zhí)行環(huán)境等等。
-
代碼內(nèi)存安全:由于Wasm生態(tài)還較不成熟,在傳統(tǒng)二進(jìn)制中已經(jīng)有成熟防御措施的漏洞仍然能夠被利用。例如,由于缺乏stack canary機(jī)制,攻擊者可以輕松利用棧溢出漏洞;Wasm也缺乏相關(guān)的堆保護(hù)機(jī)制等。
-
程序移植安全:大量的現(xiàn)有程序可以被“直接”編譯到Wasm,但可能會(huì)引入bug或安全問題;移植會(huì)導(dǎo)致代碼行為(如指針大小、內(nèi)存能力、環(huán)境變量等)不同;移植時(shí)處理不當(dāng)可能導(dǎo)致不同的堆內(nèi)存管理實(shí)現(xiàn)困難、缺乏安全措施等安全問題。
-
惡意Wasm程序:目前很大一部分Wasm程序被用于惡意挖礦等行為,Wasm也可以作為混淆或者加殼方式被惡意軟件利用。
![e510d40c-04cb-11ee-9c1d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/C0/wKgaomTntS-AP6heAAQGA-eR7Rw247.png)
Wasm (安全) 問題及學(xué)術(shù)界相關(guān)研究
然而,目前Wasm安全相關(guān)研究還處于初級(jí)階段。一方面,Wasm不斷引入的新特性與新場(chǎng)景持續(xù)帶來新的安全問題和挑戰(zhàn);另一方面,Wasm幾乎沒有通用的程序分析框架,大部分工具都是針對(duì)特定平臺(tái)的Wasm二進(jìn)制分析(只支持部分指令集、只對(duì)平臺(tái)相關(guān)庫(kù)函數(shù)做建模),無法分析通用 Wasm 二進(jìn)制;此外,Wasm的二進(jìn)制反編譯器還處于初期階段,Wasm虛擬機(jī)和編譯器不夠成熟,Wasm代碼混淆以及代碼保護(hù)技術(shù)還較為欠缺等。
針對(duì)上述安全問題,王浩宇教授所帶領(lǐng)的學(xué)術(shù)團(tuán)隊(duì)在Wasm二進(jìn)制翻譯、Wasm程序分析、Wasm運(yùn)行時(shí)/編譯器bug檢測(cè)等方面做了安全增強(qiáng)相關(guān)工作。例如,在區(qū)塊鏈智能合約場(chǎng)景下,實(shí)現(xiàn)了從EVM字節(jié)碼到eWasm字節(jié)碼的安全Wasm二進(jìn)制翻譯;提出了Wasm符號(hào)執(zhí)行框架EOSafe、Wasm模糊測(cè)試框架WASAI、Wasm通用二進(jìn)制重寫框架BREWasm、Wasm二進(jìn)制混淆工具Chaos等分析技術(shù)。此外,王浩宇教授團(tuán)隊(duì)提出了針對(duì)Wasm運(yùn)行時(shí)的模糊測(cè)試技術(shù),已經(jīng)在wasmer,wasmtime,WAMR,wasm3,Wasm Edge等運(yùn)行時(shí)中發(fā)現(xiàn)了數(shù)十個(gè)代碼缺陷。
![e557f454-04cb-11ee-9c1d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/C0/wKgaomTntS-ACE-SAAOL1p6sc7k688.png)
王浩宇教授的團(tuán)隊(duì)Wasm相關(guān)研究工作
03?
Wasm二進(jìn)制重寫及其安全應(yīng)用
在本次峰會(huì)的開發(fā)者工具分論壇,王浩宇教授介紹了其團(tuán)隊(duì)提出的一個(gè)通用的Wasm二進(jìn)制重寫工具。Wasm二進(jìn)制重寫具有無需源碼、跨平臺(tái)和跨語(yǔ)言等優(yōu)點(diǎn),其應(yīng)用場(chǎng)景包括Wasm程序修復(fù)、測(cè)試用例生成、代碼插樁、輔助動(dòng)態(tài)分析、Wasm代碼漏洞檢測(cè)、Wasm模糊測(cè)試、Wasm二進(jìn)制保護(hù)與混淆等。目前,學(xué)術(shù)界已有的Wasm二進(jìn)制重寫和插樁的研究大都只局限于簡(jiǎn)單的指令級(jí)別修改,比如在某一指令前后添加一些指令,對(duì)控制流的修改也僅局限于某一特定模式的更改等。然而,一個(gè)通用的Wasm二進(jìn)制重寫框架是如上眾多Wasm研究工作的基礎(chǔ)。
實(shí)現(xiàn)一個(gè)通用的Wasm二進(jìn)制重寫框架存在一些挑戰(zhàn)。
(1)Wasm不同段之間的耦合性:Wasm中,一個(gè)函數(shù)的所有信息,包括函數(shù)簽名,函數(shù)指令等內(nèi)容分布在不同的Wasm段中,這導(dǎo)致對(duì)單獨(dú)一個(gè)段的重寫不足以實(shí)現(xiàn)Wasm中的一個(gè)微小功能。而且開發(fā)者需要熟悉多個(gè)段的不同的數(shù)據(jù)結(jié)構(gòu)才能實(shí)現(xiàn)對(duì)Wasm中某一功能的重寫;
(2)結(jié)構(gòu)化控制流與控制流修改:Wasm沒有g(shù)oto-like的跳轉(zhuǎn)指令,且只有將代碼塊進(jìn)行嵌套才能添加跳轉(zhuǎn)指令,這對(duì)實(shí)現(xiàn)靈活的控制流重寫帶來了較大挑戰(zhàn)
(3)Wasm棧平衡校驗(yàn)和修復(fù):一個(gè)正確的Wasm二進(jìn)制需要滿足靜態(tài)校驗(yàn)規(guī)則。例如,一個(gè)函數(shù)的所有信息都靠函數(shù)的index索引,且函數(shù)的指令需要滿足棧平衡。在對(duì)Wasm二進(jìn)制重寫后,如果出現(xiàn)了index之間的索引不一致或某一函數(shù)指令沒有棧平衡等靜態(tài)校驗(yàn)問題,則會(huì)生成錯(cuò)誤的Wasm二進(jìn)制。
王浩宇教授團(tuán)隊(duì)針對(duì)上述挑戰(zhàn),分別提出了相應(yīng)的解決方案。針對(duì)挑戰(zhàn)(1),除了提供細(xì)粒度的對(duì)每個(gè)段中數(shù)據(jù)結(jié)構(gòu)的重寫功能外,還將各個(gè)段的結(jié)構(gòu)抽象成一組語(yǔ)義并提供大量針對(duì)語(yǔ)義的重寫API,使開發(fā)者不需要關(guān)心底層對(duì)各個(gè)段的修改邏輯。
針對(duì)挑戰(zhàn)(2),提出控制流結(jié)構(gòu)原子化的方法,在加載Wasm模塊時(shí),對(duì)指令進(jìn)行分割和構(gòu)建代碼塊(原子化),利用原子化的控制流結(jié)構(gòu)可以組合構(gòu)建更復(fù)雜的控制流結(jié)構(gòu),并在修改結(jié)束后,將基于原子化代碼塊的控制流結(jié)構(gòu)轉(zhuǎn)換回Wasm指令。
針對(duì)挑戰(zhàn)(3),實(shí)現(xiàn)兩個(gè)輔助模塊indices-fixer和stack-calculator以修復(fù)索引錯(cuò)誤和棧平衡。
![e564dec6-04cb-11ee-9c1d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/C0/wKgaomTntTCAXnCKAAFzzsQnFfs745.png)
BREWasm框架
基于上述解決方案,王浩宇教授帶領(lǐng)的團(tuán)隊(duì)提出了一個(gè)通用的Wasm二進(jìn)制重寫框架——BREWasm。該框架主要包括以下5部分功能:
-
Wasm Parser:給定一套簡(jiǎn)易DSL,將Wasm段和數(shù)據(jù)結(jié)構(gòu)抽象,并解析為一個(gè)可操作對(duì)象的列表;
-
Section Rewriter:基于Wasm段和數(shù)據(jù)結(jié)構(gòu)抽象,實(shí)現(xiàn)細(xì)粒度段重寫API;
-
Semantics Rewriter:將段重寫API進(jìn)行組合,實(shí)現(xiàn)一組語(yǔ)義更為豐富的Semantic API;
-
Control Flow Reconstructor:實(shí)現(xiàn)了一組能夠任意靈活修改控制流且無需關(guān)注棧平衡的Control Flow API;
-
Wasm Encoder:將重寫后的可操作對(duì)象列表按照段和數(shù)據(jù)結(jié)構(gòu)抽象重新編碼為合法的 Wasm 二進(jìn)制。
![e5888448-04cb-11ee-9c1d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/C0/wKgaomTntTCAdoycAAKFlDkn_pk380.png)
Wasm控制流原子化示意以及BREWasm中提供的部分Control Flow API
BREWasm能夠應(yīng)用在Wasm代碼混淆、Wasm程序棧溢出保護(hù)、Wasm程序插樁等場(chǎng)景。例如,在Wasm二進(jìn)制混淆上,BREWasm采取切分原有Wasm代碼塊來獲得控制流重寫的基本元素,并將這些元素構(gòu)成一個(gè)switch-case的控制流結(jié)構(gòu),再將其插入到while控制流中,可以僅用幾行代碼實(shí)現(xiàn)對(duì)任意Wasm程序的控制流平坦化混淆;在Wasm程序棧溢出保護(hù)上,僅調(diào)用BREWasm提供的幾個(gè)API,即可實(shí)現(xiàn)對(duì)可能存在棧溢出問題的函數(shù)進(jìn)行hook,在函數(shù)被調(diào)用前提前在棧上插入canary,在函數(shù)執(zhí)行完成后去檢測(cè)canary的值是否發(fā)生改變,來確定函數(shù)執(zhí)行過程中是否出現(xiàn)了棧溢出問題;在Wasm程序插樁上,BREWasm能夠?qū)asm二進(jìn)制插樁,實(shí)現(xiàn)動(dòng)態(tài)污點(diǎn)分析,調(diào)用圖分析,內(nèi)存訪問分析,惡意挖礦檢測(cè)等功能,也能夠給定插樁規(guī)則,對(duì)每個(gè)Wasm指令進(jìn)行自動(dòng)化插樁,為Wasm 二進(jìn)制導(dǎo)入外部實(shí)現(xiàn)的分析API。此外,BREWasm還能夠非常方便地應(yīng)用于Wasm代碼變換、Wasm程序修復(fù)以及Wasm模糊測(cè)試等場(chǎng)景。
![e594ba56-04cb-11ee-9c1d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/C0/wKgaomTntTCAbIEbAAM6S60nQ6g118.png)
BREWasm對(duì)任意Wasm程序?qū)崿F(xiàn)控制流平坦化示例
04?
總結(jié)與展望
跨語(yǔ)言、跨平臺(tái)、跨場(chǎng)景的開源軟件生態(tài)是發(fā)展趨勢(shì),也引入眾多新的攻擊面。Wasm的特性使其非常契合OpenHarmony面向萬物互聯(lián)新場(chǎng)景的開源生態(tài),而其中的安全問題也不可忽視。期待學(xué)術(shù)界和工業(yè)界一起,為萬物互聯(lián)的開源生態(tài)添磚加瓦,持續(xù)為新興軟件安全賦能!
![e5cbd220-04cb-11ee-9c1d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9B/C0/wKgaomTntTCAP5utAAPuXfm9eEM887.png)
Wasm未來研究展望
E N D
點(diǎn)擊下方閱讀原文獲取演講PPT。
關(guān)注我們,獲取更多精彩。
審核編輯黃宇
-
OpenHarmony
+關(guān)注
關(guān)注
25文章
3753瀏覽量
16668
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
安森美PRISM生態(tài)系統(tǒng)助力相機(jī)開發(fā)
![安森美PRISM<b class='flag-5'>生態(tài)系統(tǒng)</b>助力相機(jī)開發(fā)](https://file1.elecfans.com/web3/M00/07/4C/wKgZO2ekH9eAYTQaAAA-76MGi4M834.png)
回顧2024年度潤(rùn)和軟件與openEuler的精彩瞬間
笙泉完善的MCU生態(tài)系統(tǒng)(ECO System),賦能高效開發(fā)、提升競(jìng)爭(zhēng)優(yōu)勢(shì)
潤(rùn)和軟件參與openEuler社區(qū)操作系統(tǒng)安全主題技術(shù)交流
對(duì)三星而言開放生態(tài)系統(tǒng)是什么
2024 RISC-V 中國(guó)峰會(huì):華秋電子助力RISC-V生態(tài)!
第二屆大會(huì)回顧第22期 軟件缺陷漏洞分析
![第二屆大會(huì)<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>](https://file1.elecfans.com/web2/M00/F3/A9/wKgZomZ9K3-AFH2aAAARKjl8HmE876.jpg)
商湯科技發(fā)布粵語(yǔ)大模型,推動(dòng)香港人工智能生態(tài)系統(tǒng)發(fā)展
蘋果硬件生態(tài)系統(tǒng)豐富,用戶黏性大
淺談AMD Ryzen AI PC生態(tài)系統(tǒng)
萊迪思舉辦2024萊迪思技術(shù)峰會(huì)展示其強(qiáng)大的FPGA合作生態(tài)系統(tǒng)
Meta欲打造巨型AI覆蓋視頻推薦生態(tài)系統(tǒng)
第二屆大會(huì)回顧第9期 | 從操作系統(tǒng)視角看大模型數(shù)據(jù)安全挑戰(zhàn)
![第二屆大會(huì)<b class='flag-5'>回顧</b><b class='flag-5'>第</b>9<b class='flag-5'>期</b> | 從操作<b class='flag-5'>系統(tǒng)</b>視角看大模型數(shù)據(jù)<b class='flag-5'>安全</b>挑戰(zhàn)](https://file1.elecfans.com/web2/M00/C0/8B/wKgZomXWs2yAKLM_AAA3A1qZDwI783.png)
Renesas Ready生態(tài)系統(tǒng)合作伙伴解決方案介紹
![Renesas Ready<b class='flag-5'>生態(tài)系統(tǒng)</b>合作伙伴解決方案介紹](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RA生態(tài)系統(tǒng)合作伙伴解決方案提供卓越的平面航向和6軸IMU性能
![RA<b class='flag-5'>生態(tài)系統(tǒng)</b>合作伙伴解決方案提供卓越的平面航向和6軸IMU性能](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論