GHSA-mx2j-7cmv-353c wasmvm: Malicious smart contract can slow down block production
A malicious smart contract can slow down block production in CosmWasm chains, requiring library upgrades to mitigate.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is GHSA-mx2j-7cmv-353c?
GHSA-mx2j-7cmv-353c is a denial of service vulnerability in github.com/CosmWasm/wasmvm, published on 4 Feb 2025. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
CWA-2025-002
Severity
Medium (Moderate + Likely)1
Affected versions:
- wasmvm >= 2.2.0, < 2.2.2
- wasmvm >= 2.1.0, < 2.1.5
- wasmvm >= 2.0.0, < 2.0.6
- wasmvm < 1.5.8
Patched versions:
- wasmvm 1.5.8, 2.0.6, 2.1.5, 2.2.2
Description of the bug
The vulnerability can be used to slow down block production. The attack requires a malicious contract, so permissioned chains are unlikely to be affected.
(We'll add more detail once chains had a chance to upgrade.)
Patch
- 1.5: https://github.com/CosmWasm/cosmwasm/commit/2b7f2faa57a1efc8207455c37f87f1eee6035a27
- 2.0: https://github.com/CosmWasm/cosmwasm/commit/d6143b0aff16a39bbea4be37597d8e9d9b213d3b
- 2.1: https://github.com/CosmWasm/cosmwasm/commit/f0c04c03cbe2557634c1bbcdc2ce203fe7caca58
- 2.2: https://github.com/CosmWasm/cosmwasm/commit/a5d62f65b5eb947ebe40e2085b1c48a9d0a244d0
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 one of the patched version depending on which minor version you are on;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.8, 2.0.6, 2.1.5 or 2.2.2. - Follow your regular practices to deploy chain upgrades.
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-11-24: Confio receives a report through the Cosmos bug bounty program maintained by Amulet.
- 2024-12-20: Confio security contributors confirm the report.
- 2024-01-27: Confio developed the patch internally.
- 2025-02-04: Patch gets released.
following Amulet's Severity Classification Framework ACMv1.2: https://github.com/interchainio/security/blob/0295254e8645301ccb606d46108a45cede0a73e0/resources/CLASSIFICATION_MATRIX.md ↩︎
Which versions are affected by GHSA-mx2j-7cmv-353c?
26 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 | All versions | 2.0.0-20250204103256-d62c3b826a9d |
github.com/CosmWasm/wasmvm/v2 Go | All versions | 2.0.0-20250204103256-d62c3b826a9d |
github.com/CosmWasm/wasmvm/v2 Go | From 2.0.0 | 2.0.6, 2.1.5, 2.2.2 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.0.0 | 2.0.6 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.0.0 | 2.0.6 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.0.6-0 | 2.0.6-0.20250204103256-d62c3b826a9d |
20 more packages
github.com/CosmWasm/wasmvm/v2 Go | From 2.0.6-0 | 2.0.6-0.20250204103256-d62c3b826a9d |
github.com/CosmWasm/wasmvm/v2 Go | From 2.1.0 | 2.1.5 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.1.0 | 2.1.5 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.2.0 | 2.2.2 |
github.com/CosmWasm/wasmvm/v2 Go | From 2.2.0 | 2.2.2 |
github.com/CosmWasm/wasmvm Go | All versions | 0.0.0-20250204093451-1f4db20199b8 |
github.com/CosmWasm/wasmvm Go | All versions | 0.0.0-20250204093451-1f4db20199b8 |
github.com/CosmWasm/wasmvm Go | All versions | 1.5.8 |
github.com/CosmWasm/wasmvm Go | From 0.1.0 | 1.5.8 |
github.com/CosmWasm/wasmvm Go | From 0.1.0 | 1.5.8 |
github.com/CosmWasm/wasmvm Go | From 1.5.8-0 | 1.5.8-0.20250204093451-1f4db20199b8 |
github.com/CosmWasm/wasmvm Go | From 1.5.8-0 | 1.5.8-0.20250204093451-1f4db20199b8 |
cosmwasm-vm crates.io | All versions | 1.5.10 |
cosmwasm-vm crates.io | All versions | 1.5.10 |
cosmwasm-vm crates.io | From 2.0.0 | 2.0.9 |
cosmwasm-vm crates.io | From 2.0.0 | 2.0.9 |
cosmwasm-vm crates.io | From 2.1.0 | 2.1.6 |
cosmwasm-vm crates.io | From 2.1.0 | 2.1.6 |
cosmwasm-vm crates.io | From 2.2.0 | 2.2.1 |
cosmwasm-vm crates.io | From 2.2.0 | 2.2.1 |
How do I fix GHSA-mx2j-7cmv-353c?
Upgrade github.com/CosmWasm/wasmvm/v2 to a fixed version for your release line: 2.0.0-20250204103256-d62c3b826a9d, 2.0.6, 2.1.5 or 2.2.2.
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-mx2j-7cmv-353c being exploited?
There is no known exploitation of GHSA-mx2j-7cmv-353c in the wild and no public exploit code.
Sources
Also known as GO-2025-3449.