SoK: Analysis Techniques for WebAssembly
Abstract
:1. Introduction
- A comprehensive analysis of current analysis techniques for WebAssembly binaries, using quantitative data to evaluate their strengths and weaknesses.
- A taxonomical classification of current analysis techniques for WebAssembly binaries.
- Key findings and limitations of current analysis techniques for WebAssembly binaries, including the trade-offs between accuracy and overhead of static and dynamic analysis methods.
- Identification of gaps in the literature and suggestions for future research directions.
2. Background
2.1. History
2.2. WebAssembly
2.2.1. Security
2.2.2. Vulnerabilities
2.2.3. Smart Contracts
2.2.4. Cryptojacking
3. Related Work
4. Methodology
4.1. Search Strategy
4.2. Selection Process
4.3. Data Extraction and Analysis
5. Analysis Techniques for WebAssembly
- Detecting malicious WebAssembly binaries (Section 5.1);
- Detecting vulnerabilities in WebAssembly binaries (Section 5.2);
- Detecting vulnerabilities in WebAssembly smart contracts (Section 5.3).
5.1. Detecting Malicious WebAssembly Binaries
5.1.1. Static Analysis
5.1.2. Dynamic Analysis
5.1.3. Comparative Analysis
5.2. Detecting Vulnerabilities in WebAssembly Binaries
5.2.1. Static Analysis
5.2.2. Dynamic Analysis
5.2.3. Hybrid Analysis
5.2.4. Comparative Analysis
5.3. Detecting Vulnerabilities in WebAssembly Smart Contracts
5.3.1. Static Analysis
5.3.2. Dynamic Analysis
5.3.3. Comparative Analysis
6. Discussion
6.1. Key Findings
6.2. Limitations
6.3. Applicability of WebAssembly Analysis Techniques in Other Domains
7. Conclusions
Research Directions
Author Contributions
Funding
Data Availability Statement
Conflicts of Interest
Abbreviations
ABI | Application Binary Interface |
AOT | Ahead-of-Time |
CFG | Control Flow Graph |
CG | Call Graph |
CNN | Convolutional Neural Network |
COM | Component Object Model |
CPG | Code Property Graph |
DOM | Document Object Model |
EVM | Ethereum Virtual Machine |
ICFG | Inter-Procedural Control Flow Graph |
IRM | In-Line Reference Monitor |
JIT | Just in Time |
NaCl | Native Client |
pNaCl | Portable Native Client |
PoW | Proof of Work |
SOP | Same Origin Policy |
SVM | Support Vector Machine |
VM | Virtual Machine |
W3C | World Wide Web Consortium |
WABT | WebAssembly Binary Toolkit |
WASI | WebAssembly System Interface |
XSS | Cross-Site Scripting |
References
- w3Techs. Usage Statistics of JavaScript as Client-Side Programming Language on Websites. December 2022. Available online: https://w3techs.com/technologies/details/cp-javascript (accessed on 4 November 2022).
- Contributors to Wikimedia Projects. ActiveX-Wikipedia. 2022. Available online: https://en.wikipedia.org/wiki/ActiveX (accessed on 4 November 2022).
- Google. Native Client-Chrome Developers. 2021. Available online: https://developer.chrome.com/docs/native-client (accessed on 4 November 2022).
- mdn web docs. asm.js-Game Development | MDN. 2022. Available online: https://developer.mozilla.org/en-US/docs/Games/Tools/asm.js?source=post_page (accessed on 4 November 2022).
- Can I Use WebAssembly | Can I Use… Support Tables for HTML5, CSS3, etc. 2022. Available online: https://caniuse.com/wasm (accessed on 12 November 2022).
- Møller, A. Technical perspective: WebAssembly: A quiet revolution of the Web. Commun. ACM 2018, 61, 106. [Google Scholar] [CrossRef]
- Pop, V.A.B.; Virtanen, S.; Sainio, P.; Niemi, A. Secure Migration of WebAssembly-Based Mobile Agents between Secure Enclaves. Master’s Thesis, University of Turku, Turku, Finland, 2021. [Google Scholar]
- Fastly. Fastly Docs. 2022. Available online: https://docs.fastly.com/products/compute-at-edge (accessed on 23 November 2022).
- Ewasm. Ethereum WebAssembly (Ewasm)-Ethereum WebAssembly. 2021. Available online: https://ewasm.readthedocs.io/en/mkdocs (accessed on 7 November 2022).
- Eosio. EOS Virtual Machine: A High-Performance Blockchain WebAssembly Interpreter–EOSIO. 2021. Available online: https://eos.io/news/eos-virtual-machine-a-high-performance-blockchain-webassembly-interpreter (accessed on 9 November 2022).
- NEARWhat Is a Smart Contract?|NEAR Documentation. 2022. Available online: https://docs.near.org/develop/contracts/whatisacontract (accessed on 11 November 2022).
- Liu, R.; Garcia, L.; Srivastava, M. Aerogel: Lightweight Access Control Framework for WebAssembly-Based Bare-Metal IoT Devices. In Proceedings of the 2021 IEEE/ACM Symposium on Edge Computing (SEC), San Jose, CA, USA, 14–17 December 2021; IEEE: Piscataway, NJ, USA, 2021; pp. 94–105. [Google Scholar]
- Mäkitalo, N.; Mikkonen, T.; Pautasso, C.; Bankowski, V.; Daubaris, P.; Mikkola, R.; Beletski, O. WebAssembly modules as lightweight containers for liquid IoT applications. In Proceedings of the International Conference on Web Engineering, Biarritz, France, 18–21 May 2021; Springer: Cham, Switzerland, 2021; pp. 328–336. [Google Scholar]
- Scheidl, F. Valent-Blocks: Scalable high-performance compilation of WebAssembly bytecode for embedded systems. In Proceedings of the 2020 International Conference on Computing, Electronics & Communications Engineering (iCCECE), Southend, UK, 17–18 August 2020; IEEE: Piscataway, NJ, USA, 2020; pp. 119–124. [Google Scholar]
- Lehmann, D.; Kinder, J.; Pradel, M. Everything Old is New Again: Binary Security of WebAssembly. In Proceedings of the 29th USENIX Security Symposium (USENIX Security 20), 12–14 August 2020; USENIX Association: Berkeley, CA, USA, 2020; pp. 217–234. [Google Scholar]
- Hilbig, A.; Lehmann, D.; Pradel, M. An Empirical Study of Real-World WebAssembly Binaries: Security, Languages, Use Cases. In Proceedings of the Web Conference 2021, Ljubljana, Slovenia, 19–23 April 2021; WWW ’21. pp. 2696–2708. [Google Scholar] [CrossRef]
- PeckShield. Defeating EOS Gambling Games: The Tech Behind Random Number Loophole. Medium 2018. Available online: https://peckshield.medium.com/defeating-eos-gambling-games-the-tech-behind-random-number-loophole-cf701c616dc0 (accessed on 5 January 2024).
- Huang, Y.; Jiang, B.; Chan, W.K. EOSFuzzer: Fuzzing EOSIO Smart Contracts for Vulnerability Detection. In Proceedings of the 12th Asia-Pacific Symposium on Internetware, Singapore, 1–3 November 2020; ACM: New York, NY, USA, 2020. [Google Scholar] [CrossRef]
- Musch, M.; Wressnegger, C.; Johns, M.; Rieck, K. New Kid on the Web: A Study on the Prevalence of WebAssembly in the Wild. In Proceedings of the International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment, Gothenburg, Sweden, 19–20 June 2019; Springer: Cham, Switzerland, 2019; pp. 23–42. [Google Scholar]
- Contributors to Wikimedia Projects. JavaScript-Wikipedia. 2001. Available online: https://en.wikipedia.org/w/index.php?title=JavaScript&oldid=1126827786 (accessed on 3 December 2022).
- Projects, T.C. Introduction to Portable Native Client. 2022. Available online: https://www.chromium.org/nativeclient/pnacl/introduction-to-portable-native-client (accessed on 2 December 2022).
- Emscripten. Main—Emscripten 3.1.26-git (dev) Documentation. 2022. Available online: https://emscripten.org (accessed on 1 December 2022).
- Contributors to Wikimedia Projects. Java (Programming Language)-Wikipedia. 2022. Available online: https://en.wikipedia.org/w/index.php?title=Java_(programming_language)&oldid=1126888277 (accessed on 2 December 2022).
- Contributors to Wikimedia Projects. Adobe Flash-Wikipedia. 2022. Available online: https://en.wikipedia.org/wiki/Adobe_Flash (accessed on 2 December 2022).
- Haas, A.; Rossberg, A.; Schuff, D.L.; Titzer, B.L.; Holman, M.; Gohman, D.; Wagner, L.; Zakai, A.; Bastien, J. Bringing the web up to speed with WebAssembly. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, Barcelona, Spain, 18–23 June 2017; pp. 185–200. [Google Scholar]
- w3c. World Wide Web Consortium (W3C) Brings a New Language to the Web as WebAssembly Becomes a W3C Recommendation. 2019. Available online: https://www.w3.org/2019/12/pressrelease-wasm-rec.html.en (accessed on 16 November 2022).
- Mozilla Using the WebAssembly JavaScript API-WebAssembly | MDN. 2022. Available online: https://developer.mozilla.org/en-US/docs/WebAssembly/Using_the_JavaScript_API (accessed on 29 November 2022).
- Node.js. Node.js. 2022. Available online: https://nodejs.org/en (accessed on 27 November 2022).
- Wasi. WASI|. 2022. Available online: https://wasi.dev (accessed on 25 November 2022).
- Rustwasm. Wasm-Pack. 2022. Available online: https://rustwasm.github.io/wasm-pack (accessed on 23 November 2022).
- WebAssembly. Wabt. 2022. Available online: https://github.com/WebAssembly/wabt (accessed on 26 November 2022).
- w3c. Same Origin Policy-Web Security. 2022. Available online: https://www.w3.org/Security/wiki/Same_Origin_Policy (accessed on 26 November 2022).
- Docs, W. Security-WebAssembly. 2022. Available online: https://webassembly.org/docs/security/#users (accessed on 3 November 2022).
- McFadden, B.; Lukasiewicz, T.; Dileo, J.; Engler, J. Security Chasms of Wasm. 2018. NCC Group Whitepaper. Available online: https://git.edik.cn/book/awesome-wasm-zh/raw/commit/e046f91804fb5deb95affb52d6348de92c5bd99c/spec/us-18-Lukasiewicz-WebAssembly-A-New-World-of-Native_Exploits-On-The-Web-wp.pdf (accessed on 5 January 2024).
- Fastly. Summary of June 8 Outage. 2021. Available online: https://www.fastly.com/blog/summary-of-june-8-outage (accessed on 29 November 2022).
- Szabo, N. Smart Contracts. 1994. Available online: https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html (accessed on 5 February 2024).
- He, N.; Zhang, R.; Wang, H.; Wu, L.; Luo, X.; Guo, Y.; Yu, T.; Jiang, X. EOSAFE: Security Analysis of EOSIO Smart Contracts. In Proceedings of the 30th USENIX Security Symposium (USENIX Security 21), Vancouver, BC, Canada, 11–13 August 2021; USENIX Association: Berkeley, CA, USA, 2021; pp. 1271–1288. [Google Scholar]
- Alliance, C.T. The Illicit Cryptocurrency Mining Threat. 2018. Available online: https://cyberthreatalliance.org/wp-content/uploads/2018/09/CTA-Illicit-CryptoMining-Whitepaper.pdf (accessed on 25 November 2022).
- Lonkar, A.; Chandrayan, S. The dark side of WebAssembly. In Proceedings of the Virus Bulletin Conference, Montreal, QC, Canada, 3–5 October 2018. [Google Scholar]
- Kim, M.; Jang, H.; Shin, Y. Avengers, Assemble! Survey of WebAssembly Security Solutions. In Proceedings of the 2022 IEEE 15th International Conference on Cloud Computing (CLOUD), Barcelona, Spain, 10–16 July 2022; IEEE: Piscataway, NJ, USA, 2022; pp. 543–553. [Google Scholar] [CrossRef]
- Tekiner, E.; Acar, A.; Uluagac, A.S.; Kirda, E.; Selcuk, A.A. SoK: Cryptojacking Malware. In Proceedings of the 2021 IEEE European Symposium on Security and Privacy (EuroS&P), Vienna, Austria, 6–10 September 2021; IEEE: Piscataway, NJ, USA, 2021; pp. 120–139. [Google Scholar]
- Romano, A.; Liu, X.; Kwon, Y.; Wang, W. An Empirical Study of Bugs in WebAssembly Compilers. In Proceedings of the 2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE), Melbourne, Australia, 15–19 November 2021; pp. 42–54. [Google Scholar] [CrossRef]
- Assemblyscript. AssemblyScript. 2022. Available online: https://www.assemblyscript.org (accessed on 24 November 2022).
- Rustwasm. Wasm-Bindgen. 2022. Available online: https://github.com/rustwasm/wasm-bindgen (accessed on 23 November 2022).
- Konoth, R.K.; Vineti, E.; Moonsamy, V.; Lindorfer, M.; Kruegel, C.; Bos, H.; Vigna, G. Minesweeper: An in-depth look into drive-by cryptocurrency mining and its defense. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, Toronto, BC, Canada, 15–19 October 2018; pp. 1714–1730. [Google Scholar]
- Wang, W.; Ferrell, B.; Xu, X.; Hamlen, K.W.; Hao, S. SEISMIC: SEcure In-lined Script Monitors for Interrupting Cryptojacks. In Computer Security; Springer International Publishing: Cham, Switzerland, 2018; pp. 122–142. [Google Scholar] [CrossRef]
- Romano, A.; Zheng, Y.; Wang, W. MinerRay: Semantics-aware analysisfor ever-evolving cryptojacking detection. In Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering, Virtual Event, 21–25 December 2020; ACM: New York, NY, USA, 2020. [Google Scholar] [CrossRef]
- Rodriguez, J.D.P.; Posegga, J. RAPID: Resource and API-Based Detection Against In-Browser Miners. In Proceedings of the 34th Annual Computer Security Applications Conference, San Juan, PR, USA, 3–7 December 2018; ACM: New York, NY, USA, 2018. [Google Scholar] [CrossRef]
- Naseem, F.N.; Aris, A.; Babun, L.; Tekiner, E.; Uluagac, A.S. MINOS: A Lightweight Real-Time Cryptojacking Detection System. In Proceedings of the NDSS, Virtual, 21–25 February 2021. [Google Scholar]
- Kharraz, A.; Ma, Z.; Murley, P.; Lever, C.; Mason, J.; Miller, A.; Borisov, N.; Antonakakis, M.; Bailey, M. Outguard: Detecting In-Browser Covert Cryptocurrency Mining in the Wild. In Proceedings of the The World Wide Web Conference on-WWW’19, San Francisco, CA, USA, 13–17 May 2019; ACM Press: New York, NY, USA, 2019. [Google Scholar] [CrossRef]
- Bian, W.; Meng, W.; Zhang, M. MineThrottle: Defending against Wasm In-Browser Cryptojacking. In Proceedings of the Web Conference 2020, Taipei, Taiwan, 20–24 April 2020; WWW ’20. pp. 3112–3118. [Google Scholar] [CrossRef]
- Kelton, C.; Balasubramanian, A.; Raghavendra, R.; Srivatsa, M. Proceedings of the 2020 Workshop on Measurements, Attacks, and Defenses for the Web. In Proceedings of the 2020 Workshop on Measurements, Internet Society, San Diego, CA, USA, 23 February 2020. [Google Scholar] [CrossRef]
- Stiévenart, Q.; De Roover, C. Compositional information flow analysis for webassembly programs. In Proceedings of the 2020 IEEE 20th International Working Conference on Source Code Analysis and Manipulation (SCAM), Adelaide, SA, Australia, 28 September–2 October 2020; IEEE: Piscataway, NJ, USA, 2020; pp. 13–24, WASSAIL. [Google Scholar]
- Szanto, A.; Tamm, T.; Pagnoni, A. Taint tracking for WebAssembly. arXiv 2018, arXiv:1807.08349. [Google Scholar]
- Sun, P.; Garcia, L.; Han, Y.; Zonouz, S.; Zhao, Y. Poster: Known Vulnerability Detection for WebAssembly Binaries. 2021. Available online: https://www.researchgate.net/publication/351101053_Poster_Known_Vulnerability_Detection_for_WebAssembly_Binaries (accessed on 5 January 2024).
- Lopes, P.D.R. Discovering Vulnerabilities in Webassembly with Code Property Graphs. Master’s Thesis, Instituto Superior Técnico, Lisbon, Portugal, 2021. [Google Scholar]
- Fu, W.; Lin, R.; Inge, D. Taintassembly: Taint-based information flow control tracking for webassembly. arXiv 2018, arXiv:1802.01050. [Google Scholar]
- Marques, F.; Fragoso Santos, J.; Santos, N.; Adão, P. Concolic Execution for WebAssembly. In Proceedings of the 36th European Conference on Object-Oriented Programming (ECOOP 2022), Berlin, Germany, 6–10 June 2022; Ali, K., Vitek, J., Eds.; Leibniz International Proceedings in Informatics (LIPIcs). Volume 222, pp. 11:1–11:29. [Google Scholar] [CrossRef]
- Lehmann, D.; Pradel, M. Wasabi: A framework for dynamically analyzing webassembly. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, Providence, RI, USA, 13–17 April 2019; pp. 1045–1058. [Google Scholar]
- Lehmann, D.; Torp, M.T.; Pradel, M. Fuzzm: Finding Memory Bugs through Binary-Only Instrumentation and Fuzzing of WebAssembly. arXiv 2021, arXiv:2110.15433. [Google Scholar] [CrossRef]
- Haßler, K.; Maier, D. WAFL: Binary-Only WebAssembly Fuzzing with Fast Snapshots. In Proceedings of the Reversing and Offensive-oriented Trends Symposium, Vienna, Austria, 18–19 November 2021; pp. 23–30. [Google Scholar]
- Quan, L.; Wu, L.; Wang, H. EVulHunter: Detecting Fake Transfer Vulnerabilities for EOSIO’s Smart Contracts at Webassembly-level. arXiv 2019, arXiv:1906.10362. [Google Scholar]
- Wang, D.; Jiang, B.; Chan, W.K. WANA: Symbolic Execution of Wasm Bytecode for Cross-Platform Smart Contract Vulnerability Detection. arXiv 2020, arXiv:2007.15510. [Google Scholar] [CrossRef]
- Chen, W.; Sun, Z.; Wang, H.; Luo, X.; Cai, H.; Wu, L. WASAI: Uncovering Vulnerabilities in Wasm Smart Contracts. In Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis, Virtual, 18–22 July 2022; ISSTA 2022. pp. 703–715. [Google Scholar] [CrossRef]
- Li, W.; He, J.; Zhao, G.; Yang, J.; Li, S.; Lai, R.; Li, P.; Tang, H.; Luo, H.; Zhou, Z. EOSIOAnalyzer: An Effective Static Analysis Vulnerability Detection Framework for EOSIO Smart Contracts. In Proceedings of the 2022 IEEE 46th Annual Computers, Software, and Applications Conference (COMPSAC), Los Alamitos, CA, USA, 27 June–1 July 2022; IEEE: Piscataway, NJ, USA, 2022. [Google Scholar] [CrossRef]
- Coolstory. CryptoNight–CryptoNote Protocol–BitcoinWiki. BitcoinWiki 2018. Available online: https://bitcoinwiki.org/wiki/cryptonote (accessed on 5 January 2024).
- Docker. Develop with Docker Engine API. 2022. Available online: https://docs.docker.com/engine/api (accessed on 3 November 2022).
- Blackshear, S.; Gorogiannis, N.; O’Hearn, P.W.; Sergey, I. RacerD: Compositional static race detection. Proc. ACM Program. Lang. 2018, 2, 1–28. [Google Scholar] [CrossRef]
- Journault, M.; Miné, A.; Ouadjaout, A. Modular static analysis of string manipulations in C programs. In Proceedings of the International Static Analysis Symposium, Freiburg, Germany, 29–31 August 2018; Springer: Cham, Switzerland, 2018; pp. 243–262. [Google Scholar]
- Google. AFL. 2022. Available online: https://github.com/google/AFL (accessed on 3 November 2022).
- Fioraldi, A.; Maier, D.; Eißfeldt, H.; Heuse, M. AFL++: Combining Incremental Steps of Fuzzing Research. In Proceedings of the 14th USENIX Workshop on Offensive Technologies (WOOT 20), Boston, MA, USA, 10–11 August 2020. [Google Scholar]
- WAVM. WAVM. 2021. Available online: https://wavm.github.io (accessed on 3 November 2022).
- FuzzingLabs. Octopus. 2022. Available online: https://github.com/FuzzingLabs/octopus (accessed on 5 November 2022).
- Second State. SOLL. 2022. Available online: https://github.com/second-state/soll (accessed on 5 November 2022).
- Eosio. Cleos–EOSIO. 2022. Available online: https://eos.io/for-developers/build/cleos (accessed on 29 November 2022).
- Bhansali, S.; Aris, A.; Acar, A.; Oz, H.; Uluagac, A.S. A First Look at Code Obfuscation for WebAssembly. In Proceedings of the 15th ACM Conference on Security and Privacy in Wireless and Mobile Networks, San Antonio, TX, USA, 16–19 May 2022; WiSec’22. pp. 140–145. [Google Scholar] [CrossRef]
- Liao, S. UNICEF Wants You to Mine Cryptocurrency for Charity. Verge 2018. Available online: https://www.theverge.com/2018/4/30/17303624/unicef-mining-cryptocurrency-charity-monero (accessed on 5 January 2024).
- Varlioglu, S.; Gonen, B.; Ozer, M.; Bastug, M. Is cryptojacking dead after coinhive shutdown? In Proceedings of the 2020 3rd International Conference on Information and Computer Technologies (ICICT), San Jose, CA, USA, 9–12 March 2020; IEEE: Piscataway, NJ, USA, 2020; pp. 385–389. [Google Scholar]
- Spies, B.; Mock, M. An Evaluation of WebAssembly in Non-Web Environments. In Proceedings of the 2021 XLVII Latin American Computing Conference (CLEI), Cartago, Costa Rica, 25–29 October 2021; pp. 1–10. [Google Scholar] [CrossRef]
- Singh, J.; Singh, J. Challenge of malware analysis: Malware obfuscation techniques. Int. J. Inf. Secur. Sci. 2018, 7, 100–110. [Google Scholar]
- VirusTotal. VirusTotal-Home. 2022. Available online: https://www.virustotal.com/gui/home/upload (accessed on 2 December 2022).
Category | Static Analysis | Dynamic Analysis | Hybrid Analysis |
---|---|---|---|
Detecting malicious WebAssembly binaries (Section 5.1) | MineSweeper [45] | SEISMIC [46] | |
MinerRay [47] | RAPID [48] | ||
MINOS [49] | OutGuard [50] | ||
MineThrottle [51] | |||
CoinSpy [52] | |||
Detecting vulnerabilities in WebAssembly binaries (Section 5.2) | Wassail [53] | Szanto et al. [54] | WASP2 [55] |
Wasmati [56] | TaintAssembly [57] | ||
WASP1 [58] | Wasabi [59] | ||
Fuzzm [60] | |||
WAFL [61] | |||
Detecting vulnerabilities in WebAssembly smart contracts (Section 5.3) | EVulHunter [62] | EOSFuzzer [18] | |
WANA [63] | WASAI [64] | ||
EOSAFE [37] | |||
EOSIOAnalyzer [65] |
Dataset | Performance | |||||||
---|---|---|---|---|---|---|---|---|
Scheme | Feature(s) | Classifier | Source | Samples | Precision | Recall | F1 | DT * |
MineSweeper [45] (2018) | WebAssembly code | Matching or threshold | Alexa 1M | 748 | 100% | 100% | 100% | - |
MinerRay [47] (2020) | WebAssembly code | *ICFG | Alexa 1.2M | 3825 | 99% | 100% | 99% | 1.9 s |
MINOS [49] (2021) | WebAssembly code | CNN | Tranco 100K, PublicWWW | 682 | 93% | 97% | 95% | 0.0259 s |
Dataset | Performance | |||||||
---|---|---|---|---|---|---|---|---|
Scheme | Feature(s) | Classifier | Source | Samples | Precision | Recall | F1 | Overhead |
SEISMIC [46] (2018) | WebAssembly code, instruction count obtained at runtime | Matching | Asteroids, A-Star, Tanks, Bullet (1000), CoinHive_v0, CoinHive, Basic4GL, HushMiner, CreaturePack FunkyKarts, NFWebMiner, YAZECMiner | 12 | 96% | 100% | 98% | 100% |
RAPID [48] (2018) | JavaScript API calls, memory, processor and network usage | SVM | Alexa 330K | 71,450 | 97% | 96% | 96% | 9–40% |
OutGuard [50] (2019) | Parallel tasks, WebAssembly, hashing algorithms, WebSockets, PostMessage event load, MessageLoop event load | SVM, or RF | Alexa 1M, Alexa 600K | 29,700 | 99% | 97% | 98% | 2% |
CoinSpy [52] (2020) | JavaScript stack execution time, JavaScript heap, network usage | CNN | Alexa 1M, Alexa 100K, PublicWWW | 2000 | Accuracy: 97% | 0% | ||
MineThrottle [51] (2020) | WebAssembly code, processor usage | Matching | Alexa 1M | 659 | 100% | 98% | 99% | 0% |
Type | Scheme | Technique | Runtime | Binary-Only | WASI Support | Overhead |
---|---|---|---|---|---|---|
Static | Wassail [53] (2020) | Compositional information flow | - | ✓ | - | - |
Wasmati [56] (2022) | CPG | - | ✓ | - | - | |
WASP1 [58] (2022) | Concolic execution | - | ✗ | - | - | |
Dynamic | Szanto et al. [54] (2018) | Taint tracking | WebAssembly VM (custom) | ✓ | ✗ | 100% |
TaintAssembly [57] (2018) | Taint tracking | V8 engine (modified) | ✓ | ✓ | 5–12% | |
Wasabi [59] (2019) | Binary instrumentation | Any runtime | ✓ | ✓ | 2–163% | |
Fuzzm [60] (2021) | Fuzzing | Any runtime w/ WASI-support | ✓ | ✓ | 5–6% | |
WAFL [61] (2021) | Fuzzing | WAVM (modified) | ✓ | ✓ | - | |
Hybrid | WASP2 [55] (2021) | Known vulnerabilities | - | ✓ | ✓ | - |
Vulnerability Detection | Performance | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Type | Scheme | Technique | FE * | FN * | BD * | RB * | MAV * | Precision | Recall | F1 | DT * |
Static | EVulHunter [62] (2019) | CFG | ✓ | ✓ | ✗ | ✗ | ✗ | 89% | 100% | 93% | 1–3 s |
WANA [63] (2020) | Symbolic execution | ✓ | ✓ | ✓ | ✗ | ✗ | 100% | 100% | 100% | 0.21 s | |
EOSAFE [37] (2021) | Symbolic execution | ✓ | ✓ | ✗ | ✓ | ✓ | 100% | 96% | 98% | - | |
EOSIOAnalyzer [65] (2022) | ICFG | ✓ | ✓ | ✓ | ✗ | ✗ | 93% | 100% | 96% | 7.6 s | |
Dynamic | EOSFuzzer [18] (2020) | Fuzzing | ✓ | ✓ | ✓ | ✗ | ✗ | 88% | 88% | 88% | - |
WASAI [64] (2022) | Concolic fuzzing | ✓ | ✓ | ✓ | ✓ | ✓ | 100% | 98% | 99% | - |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2024 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Harnes, H.; Morrison, D. SoK: Analysis Techniques for WebAssembly. Future Internet 2024, 16, 84. https://doi.org/10.3390/fi16030084
Harnes H, Morrison D. SoK: Analysis Techniques for WebAssembly. Future Internet. 2024; 16(3):84. https://doi.org/10.3390/fi16030084
Chicago/Turabian StyleHarnes, Håkon, and Donn Morrison. 2024. "SoK: Analysis Techniques for WebAssembly" Future Internet 16, no. 3: 84. https://doi.org/10.3390/fi16030084
APA StyleHarnes, H., & Morrison, D. (2024). SoK: Analysis Techniques for WebAssembly. Future Internet, 16(3), 84. https://doi.org/10.3390/fi16030084