CVE-2025-52484: Risc0 zkvm ZkVM Underconstrained Vulnerability Vulnerability
LOWCVE-2025-52484 is a LOW zkvm underconstrained vulnerability vulnerability (CWE-345: Insufficient Verification of Data Authenticity) affecting Risc0 zkvm libraries in the crates.io ecosystem. The issue involves zkvm underconstrained vulnerability. Remediation is available by upgrading affected packages to version 2.1.0, 2.0.4.
CVE-2025-52484 at a Glance
How to Fix CVE-2025-52484
To remediate this vulnerability, upgrade all affected Risc0 zkvm dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade risc0-zkvm to 2.1.0
Upgrade risc0-circuit-rv32im to 2.0.4
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for risc0-zkvm
How to Check if You Are Affected
To determine whether your application is affected by CVE-2025-52484, inspect your project dependencies for Risc0 zkvm:
inspect dependencies for risc0-zkvm
Analyze the terminal output to locate any version of Risc0 zkvm in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.1.0), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-345: Insufficient Verification of Data Authenticity, where the product does not sufficiently verify the origin or authenticity of data, in a way that causes it to accept invalid data. In Risc0 zkvm, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2025-52484 Affected Risc0 zkvm Versions
2 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
risc0-zkvm
|
crates.io |
≥ 2.0.0
< 2.1.0
|
2.1.0
|
|
risc0-circuit-rv32im
|
crates.io |
≥ 2.0.0
< 2.0.4
|
2.0.4
|
References
Frequently Asked Questions
What is CVE-2025-52484?
Which Risc0 zkvm versions are affected?
What version fixes CVE-2025-52484?
Is risc0-zkvm affected?
Is risc0-circuit-rv32im affected?
What CWE is associated with CVE-2025-52484?
How can I check crates.io dependencies for CVE-2025-52484?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-g3qg-6746-3mg9",
"modified" : "2025-06-27T23:59:02Z",
"published" : "2025-06-20T18:08:04Z",
"aliases" : [ "CVE-2025-52484" ],
"summary" : "zkVM Underconstrained Vulnerability",
"details" : "Due to a missing constraint in the rv32im circuit, any 3-register RISC-V instruction (including remu and divu) in risc0-zkvm 2.0.0, 2.0.1, and 2.0.2 are vulnerable to an attack by a malicious prover. The main idea for the attack is to confuse the RISC-V virtual machine into treating the value of the rs1 register as the same as the rs2 register due to a lack of constraints in the rv32im circuit.\n\nThis vulnerability was reported by Christoph Hochrainer via our Hackenproof bug bounty. We have evaluated the severity of the vulnerability as “Critical,” and paid a bounty. \n\nThe fix for the circuit was implemented in [zirgen/pull/238](https://github.com/risc0/zirgen/pull/238), and the update to risc0 was implemented in [risc0/pull/3181](https://github.com/risc0/risc0/pull/3181). Impacted on-chain verifiers have already been disabled via the estop mechanism outlined in the [Verifier Management Design](https://github.com/risc0/risc0-ethereum/blob/release-2.0/contracts/version-management-design.md#base-verifier-implementations). \n\n## Mitigation\nWe recommend all impacted users upgrade as soon as possible.\n\nRust applications using the risc0-zkvm crate at versions 2.0.0, 2.0.1, and 2.0.2 should upgrade to version 2.1.0.\n\nSmart contract applications using the official [RISC Zero Verifier Router](https://dev.risczero.com/api/blockchain-integration/contracts/verifier#verifier-router) do not need to take any action: zkVM version 2.1 is active on all official routers, and version 2.0 has been disabled.\n\nSmart contract applications not using the verifier router should update their contracts to send verification calls to the 2.1 version of the verifier.",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:U"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "crates.io",
"name" : "risc0-zkvm"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "2.0.0"
}, {
"fixed" : "2.1.0"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 2.0.2"
}
}, {
"package" : {
"ecosystem" : "crates.io",
"name" : "risc0-circuit-rv32im"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "2.0.0"
}, {
"fixed" : "2.0.4"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 2.0.3"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/risc0/risc0/security/advisories/GHSA-g3qg-6746-3mg9"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-52484"
}, {
"type" : "WEB",
"url" : "https://github.com/risc0/risc0/pull/3181"
}, {
"type" : "WEB",
"url" : "https://github.com/risc0/zirgen/pull/238"
}, {
"type" : "WEB",
"url" : "https://github.com/risc0/risc0/commit/006d86c363b16d2b2ac42d32d832a209ff8ab4c9"
}, {
"type" : "WEB",
"url" : "https://github.com/risc0/risc0/commit/1873bbb8a56793edd1f6195242d184cf6cc5175d"
}, {
"type" : "WEB",
"url" : "https://github.com/risc0/risc0/commit/67f2d81c638bff5f4fcfe11a084ebb34799b7a89"
}, {
"type" : "WEB",
"url" : "https://github.com/risc0/zirgen/commit/e0e2918302c93e956f73ca2e44aef2b861d8c3ae"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/risc0/risc0"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-345" ],
"severity" : "LOW",
"github_reviewed" : true,
"github_reviewed_at" : "2025-06-20T18:08:04Z",
"nvd_published_at" : "2025-06-20T18:15:28Z"
}
}