GHSA-vmqh-5232-v43r Panic in wasmvm can slow down block production
A panic in the CosmWasm VM library can slow down block production, causing a denial of service for blockchain networks using affected versions.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is GHSA-vmqh-5232-v43r?
GHSA-vmqh-5232-v43r is a denial of service vulnerability in github.com/CosmWasm/wasmvm, published on 10 Dec 2024. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
CWA-2024-008
Severity
Medium (Moderate + Likely)1
Affected versions:
- wasmvm >= 2.1.0, < 2.1.3
- wasmvm >= 2.0.0, < 2.0.4
- wasmvm < 1.5.5
- cosmwasm-vm >= 2.1.0, < 2.1.4
- cosmwasm-vm >= 2.0.0, < 2.0.7
- cosmwasm-vm < 1.5.8
Patched versions:
- wasmvm 1.5.5, 2.0.4, 2.1.3
- cosmwasm-vm 1.5.8, 2.0.7, 2.1.4
Description of the bug
(Blank for now. We'll add more detail once chains had a chance to upgrade.)
Patch
- 1.5: https://github.com/CosmWasm/cosmwasm/commit/edcdbc520d4f5521eed42de6e2869658278e91fd
- 2.0: https://github.com/CosmWasm/cosmwasm/commit/f63429ca59eb44dd5d780c1572016581337091e4
- 2.1: https://github.com/CosmWasm/cosmwasm/commit/108e7dcbf9c21df0fa83f355ad3a7355d7f220cb
Applying the patch
The patch will be shipped in releases of wasmvm. You can update more or less as follows:
- Check the current wasmvm version:
go list -m github.com/CosmWasm/wasmvm - Bump the
github.com/CosmWasm/wasmvmdependency in your go.mod to 1.5.5, 2.0.4, 2.1.3 depending on which minor version you are;go mod tidy; commit. - If you use the static libraries
libwasmvm_muslc.aarch64.a/libwasmvm_muslc.x86_64.a, update them accordingly. - Check the updated wasmvm version:
go list -m github.com/CosmWasm/wasmvmand ensure you see 1.5.5, 2.0.4, 2.1.3. - Follow your regular practices to deploy chain upgrades.
To double check if the correct library version is loaded at runtime, use this query:
<appd> query wasm libwasmvm-version. It must show 1.5.5, 2.0.4 or 2.1.3.
The patch is consensus breaking and requires a coordinated upgrade.
Acknowledgement
This issue was found by meadow101 who reported it to the Cosmos Bug Bounty Program on HackerOne.
If you believe you have found a bug in the Interchain Stack or would like to contribute to the program by reporting a bug, please see <https://hackerone.com/cosmos>.
Timeline
- 2024-08-22: Confio receives a report through the Cosmos bug bounty program maintained by Amulet.
- 2024-08-23: Confio security contributors confirm the report.
- 2024-09-09: Confio developed the patch internally.
- 2024-09-23: Patch is released.
following Amulet's Severity Classification Framework ACMv1: https://github.com/interchainio/security/blob/e0227a1fb4059144aab4f6003eeee7f09912db3a/resources/CLASSIFICATION_MATRIX.md ↩︎
Which versions are affected by GHSA-vmqh-5232-v43r?
12 open source packages ship an affected version, including github.com/CosmWasm/wasmvm/v2, github.com/CosmWasm/wasmvm and cosmwasm-vm.
| Package | Affected | Fixed in |
|---|---|---|
github.com/CosmWasm/wasmvm/v2 Go | From 2.0.0 | 2.0.4 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.0.0 | 2.0.4 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.1.0 | 2.1.3 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.1.0 | 2.1.3 |
github.com/CosmWasm/wasmvm Go | All versions | 1.5.5 |
github.com/CosmWasm/wasmvm Go | All versions | 1.5.5 |
6 more packages
cosmwasm-vm crates.io | All versions | 1.5.8 |
cosmwasm-vm crates.io | All versions | 1.5.8 |
cosmwasm-vm crates.io | From 2.0.0 | 2.0.7 |
cosmwasm-vm crates.io | From 2.0.0 | 2.0.7 |
cosmwasm-vm crates.io | From 2.1.0 | 2.1.4 |
cosmwasm-vm crates.io | From 2.1.0 | 2.1.4 |
How do I fix GHSA-vmqh-5232-v43r?
Upgrade github.com/CosmWasm/wasmvm/v2 to a fixed version for your release line: 2.0.4 or 2.1.3.
Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.
Is GHSA-vmqh-5232-v43r being exploited?
There is no known exploitation of GHSA-vmqh-5232-v43r in the wild and no public exploit code.