核心概念
WebAssembly(WASM)デコンパイラの現状と課題を、逆コンパイルされたコードの正確性、可読性、構造的類似性の観点から、ネイティブバイナリデコンパイラと比較分析し、今後の改善点を提示する。
要約
WebAssembly バイナリデコンパイル技術の包括的な研究:逆コンパイルされたコードは元のコードと同じか?
本稿は、WebAssembly(WASM)の安全性評価において重要な役割を果たすデコンパイラの現状と課題を、ネイティブバイナリデコンパイラとの比較分析を通して明らかにした研究論文である。
WASMは、ウェブブラウザ上での高速実行を目的とした低レベルのバイトコード言語であり、近年、IoTやモバイルデバイスなど、ウェブブラウザ以外の環境でも広く採用されつつある。しかし、WASMバイナリは依然としてセキュリティ上の脆弱性を抱えており、第三者ライブラリなどを利用する際には、潜在的なセキュリティリスクを検査することが不可欠となる。
WASMバイナリを手動で検査することは、その低レベルな性質から困難を伴う。そこで、セキュリティ専門家は、WASMバイナリから高レベルのソースコードを復元するデコンパイラを活用することで、効率的なセキュリティ分析が可能となる。しかし、ネイティブバイナリデコンパイラに比べて、WASMデコンパイラの研究は進んでおらず、その性能評価も十分に行われていないのが現状である。
本研究では、既存のWASMデコンパイラの有効性を多角的に評価することを目的とし、ネイティブバイナリデコンパイラとの比較分析を通して、WASMデコンパイラの現状と課題を明らかにする。
本研究では、WASMデコンパイラとして、wasm2c、w2c2、wasm-decompileの3つを、ネイティブバイナリデコンパイラとして、GhidraとRetDecの2つを選定し、これらのデコンパイラを以下の3つの観点から評価した。
正確性: 逆コンパイルされたコードが、元のプログラムの機能を正確に再現できるかどうかを評価する。具体的には、逆コンパイルされたコードを再度コンパイルし、実行結果が元のバイナリの実行結果と一致するかどうかを検証した。
可読性: 逆コンパイルされたコードが、人間にとって理解しやすいかどうかを評価する。具体的には、コードの行数、ネストの深さ、循環的複雑度、Halstead複雑度などの指標を用いて評価した。
構造的類似性: 逆コンパイルされたコードの構造が、元のソースコードの構造とどの程度類似しているかを評価する。具体的には、抽象構文木(AST)を用いて、元のコードと逆コンパイルされたコードの構造を比較した。
評価にあたり、DecFuzzerによって生成された1,000個のCSmith合成Cプログラムを正確性の評価に、PolyBenchCとCHStoneの2つのベンチマークスイートを構造的類似性と可読性の評価に用いた。