GHSA-75jp-vq8x-h4cq
Wasmi Out-of-bounds Write for host to Wasm calls with more than 128 Parameters
Details
### Summary
In the WASMI Interpreter, an [Out-of-bounds Buffer Write](https://cwe.mitre.org/data/definitions/787.html) will arise arise if the host calls or resumes a Wasm function with more parameters than the default limit (128), as it will surpass the stack value. This doesn’t affect calls from Wasm to Wasm, only from host to Wasm.
### Impact
After conducting an analysis of the dependent Polkadot systems of `wasmi`: [Pallet Contracts](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/contracts), [Parity Signer](https://github.com/paritytech/parity-signer), and [Smoldot](https://github.com/smol-dot/smoldot), we have found that none on those systems have been affected by the issue as they are calling host to Wasm function with a small limited amount of parameters always.
### Mitigations
If you are using `wasmi` betwen version 0.15.0 and 0.31.0, please update it to the [0.31.1](https://github.com/paritytech/wasmi/releases/tag/v0.31.1) patch release that we just published.
### Workarounds
Ensure no more than 128 parameters can be pass in a call from the host to a Wasm function.
### References
Patch PR: <PR>
### Special thanks
Special thanks to Stellar Development Foundation for reporting this security vulnerability.
Are you affected?
Enter the version of the package you're using.
Affected packages
0.15.0Fixed in: 0.31.1Upgrade wasmi to 0.31.1 or newer (ecosystem crates.io).
References
- https://github.com/wasmi-labs/wasmi/security/advisories/GHSA-75jp-vq8x-h4cq[WEB]
- https://nvd.nist.gov/vuln/detail/CVE-2024-28123[ADVISORY]
- https://github.com/wasmi-labs/wasmi/commit/f7b3200e9f3dc9e2cbca966cb255c228453c792f[WEB]
- https://github.com/wasmi-labs/wasmi[PACKAGE]
- https://github.com/wasmi-labs/wasmi/releases/tag/v0.31.1[WEB]