slumps icon indicating copy to clipboard operation
slumps copied to clipboard

tools for WebAssembly

Open monperrus opened this issue 5 years ago • 62 comments

we collect open-source tools here

monperrus avatar Sep 02 '19 16:09 monperrus

WABT: WebAssembly Binary Toolkit https://github.com/WebAssembly/wabt

monperrus avatar Sep 02 '19 16:09 monperrus

Octopus: Security Analysis tool for WebAssembly module https://github.com/quoscient/octopus

monperrus avatar Sep 02 '19 16:09 monperrus

WASABI: First tool for dynamic analysis of webassembly modules, implemented in RUST

Jacarte avatar Sep 02 '19 16:09 Jacarte

Wasmer: a standalone WebAssembly runtime, for running WebAssembly outside of the Browser https://github.com/wasmerio/wasmer

jianguda avatar Sep 03 '19 06:09 jianguda

A small and efficient runtime for WebAssembly & WAS https://wasmtime.dev/

https://github.com/bytecodealliance/wasmtime

monperrus avatar Sep 06 '19 06:09 monperrus

A small and efficient runtime for WebAssembly & WAS https://wasmtime.dev/

On that topic, I also intend to add a WASI implementation to Swam, might be relevant for you as it also include security by capabilities.

satabin avatar Sep 06 '19 07:09 satabin

https://github.com/xtuc/webassemblyjs

Jacarte avatar Sep 06 '19 14:09 Jacarte

for fun: Vim editor ported to WebAssembly https://github.com/rhysd/vim.wasm

monperrus avatar Sep 27 '19 05:09 monperrus

TeaVM is an ahead-of-time compiler for Java bytecode that emits JavaScript and WebAssembly http://teavm.org/

monperrus avatar Sep 27 '19 08:09 monperrus

Similar to TeaVM Java to WebAssembly compiler https://github.com/i-net-software/JWebAssembly

monperrus avatar Sep 27 '19 15:09 monperrus

Lucet (the Sandboxing WebAssembly Compiler) Lucet is a native WebAssembly compiler and runtime. It is designed to safely execute untrusted WebAssembly programs inside your application. https://github.com/bytecodealliance/lucet

jianguda avatar Nov 13 '19 20:11 jianguda

a) Web Assembly Studio: https://webassembly.studio/

b) WASM Explorer - Side by side comparison of WASM, LLVM with Firefox x86 programs https://github.com/mbebenita/WasmExplorer

shrin18 avatar Nov 17 '19 22:11 shrin18

binaryen.js

Jacarte avatar Nov 18 '19 18:11 Jacarte

WebAssembly to C decompiler https://github.com/wwwg/wasmdec https://wwwg.github.io/web-wasmdec/

orestisfl avatar Nov 26 '19 07:11 orestisfl

Cool. To what extent is C the easiest target language for disassembling WASM?

monperrus avatar Nov 26 '19 12:11 monperrus

SideFuzz is an adaptive fuzzer that uses a genetic-algorithim optimizer in combination with t-statistics to find side-channel (timing) vulnerabilities in cryptography compiled to wasm. https://github.com/phayes/sidefuzz

monperrus avatar Nov 27 '19 14:11 monperrus

Cheerp: a C/C++ compiler for Web applications

Jacarte avatar Nov 29 '19 13:11 Jacarte

Walrus is a WebAssembly transformation library https://github.com/rustwasm/walrus

monperrus avatar Nov 29 '19 14:11 monperrus

GraalWasm a WebAssembly engine in GraalVM https://github.com/oracle/graal/tree/master/wasm

monperrus avatar Dec 08 '19 08:12 monperrus

Gate: a WebAssembly runtime which can migrate live programs across CPU architectures https://savo.la/introduction-to-gate.html

monperrus avatar Dec 09 '19 09:12 monperrus

ilwasm Maps a subset of .NET CIL to WebAssembly S-expressions. Implemented as a custom code generator backend for the JSIL CIL -> JS compiler.

Jacarte avatar Dec 10 '19 17:12 Jacarte

WASM Binary file parser from Mozilla: https://github.com/bytecodealliance/wasmparser

shrin18 avatar Dec 12 '19 08:12 shrin18

twiggy

Twiggy is a code size profiler for Wasm. It analyzes a binary's call graph to answer questions like:

  • Why was this function included in the binary in the first place? Who calls it?
  • What is the retained size of this function? I.e. how much space would be saved if I removed it and all the functions that become dead code after its removal.

jianguda avatar Dec 22 '19 17:12 jianguda

Running LibFuzzer in a Browser, via WASM https://github.com/jonathanmetzman/wasm-fuzzing-demo/blob/master/meetup-Fuzzing-Native-Applications-in-Browsers-With-WASM.pdf

monperrus avatar Dec 23 '19 16:12 monperrus

Fuzzing JavaScript WebAssembly APIs with Dharma/Domato (Chrome/v8) https://webassembly-security.com/fuzzing-wasm-javascript-dharma-chrome-v8/

monperrus avatar Jan 10 '20 08:01 monperrus

inNative WebAssembly Runtime: inNative is an AOT (ahead-of-time) compiler for WebAssembly that creates C compatible binaries, either as sandboxed plugins you can dynamically load, or as stand-alone executables that interface directly with the operating system https://innative.dev/

monperrus avatar Jan 13 '20 17:01 monperrus

wasm3/wasm3: 🚀 The fastest WebAssembly interpreter https://github.com/wasm3/wasm3

monperrus avatar Jan 14 '20 09:01 monperrus

https://v8.dev/blog/emscripten-standalone-wasm

Jacarte avatar Jan 16 '20 20:01 Jacarte