WebAssembly 模块使用了一个导入函数,该函数对数组索引没有边界检查。攻击者可以提供越界索引,在线性内存之外进行读取或写入,从而可能泄露宿主机密或在 WASM 运行时中实现代码执行。
unsafe 代码在偏移原始指针时未将索引限制在数组长度范围内。rustup target add wasm32-unknown-unknown
rustc --target wasm32-unknown-unknown -O wasm_vuln.rs -o wasm_vuln.wasm
pip install wasmer wasmer_compiler_cranelift
python exploit_wasm_oob.py
输出显示了来自数组外部的一个内存值。