背景
C/C++ プログラムを sandbox 環境的な状況で動かしたい.
e.g. サーバで動く画像処理(性能のために C/C++ で記述が必要)サービスで, ユーザーが malicous な画像データをアップロードしても堅牢に動いてくれるとか.
runC とか Docker コンテナとかありますが, そこまで大掛かりなもの(+ OS 依存のもの)は必要ない
(e.g. ネットワークは不要で, 演算(CPU/mem)だけセキュアに実行したい)
WasmBoxC
WasmBoxC: Simple, Easy, and Fast VM-less Sandboxing
https://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html
ありがとうございます.
Wasm -> C にして, C/C++ と同等の速度でサンドボックス実行します.
ツールチェインとしては特に新規のものはなくて, wasm(emcc) の既存ツール環境で実現しています.
利用例
その他
一応こちらが WASM ランタイムの本命っぽい? AoT(事前コンパイル), interpreter, JIT 実行できます.
wasm 自体を高速インタプリタ実行
TODO
- rust や go で書かれたコードなども, Wasm にすることで WasmBoxC で動かせるかためす.
- 生成された C コードに fuzzer をかけたりしてさらなるセキュリティの向上をはかる.