CVE-2025-52884

RISC Zero is a zero-knowledge verifiable general computing platform, with Ethereum integration. The risc0-ethereum repository contains Solidity verifier contracts, Steel EVM view call library, and supporting code. Prior to versions 2.1.1 and 2.2.0, the `Steel.validateCommitment` Solidity library function will return `true` for a crafted commitment with a digest value of zero. This violates the semantics of `validateCommitment`, as this does not commitment to a block that is in the current chain. Because the digest is zero, it does not correspond to any block and there exist no known openings. As a result, this commitment will never be produced by a correct zkVM guest using Steel and leveraging this bug to compromise the soundness of a program using Steel would require a separate bug or misuse of the Steel library, which is expected to be used to validate the root of state opening proofs. A fix has been released as part of `risc0-ethereum` 2.1.1 and 2.2.0. Users for the `Steel` Solidity library versions 2.1.0 or earlier should ensure they are using `Steel.validateCommitment` in tandem with zkVM proof verification of a Steel program, as shown in the ERC-20 counter example, and documentation. This is the correct usage of Steel, and users following this pattern are not at risk, and do not need to take action. Users not verifying a zkVM proof of a Steel program should update their application to do so, as this is incorrect usage of Steel.
CVSS

No CVSS.

Configurations

No configuration.

History

26 Jun 2025, 18:58

Type Values Removed Values Added
Summary
  • (es) RISC Zero es una plataforma informática general verificable de conocimiento cero, con integración con Ethereum. El repositorio risc0-ethereum contiene los contratos del verificador de Solidity, la librería de llamadas de vista Steel EVM y código de soporte. En versiones anteriores a la 2.1.1 y la 2.2.0, la función de la librería de Solidity `Steel.validateCommitment` devolvía `true` para un compromiso manipulado con un valor de resumen de cero. Esto viola la semántica de `validateCommitment`, ya que no se compromete con un bloque que esté en la cadena actual. Dado que el resumen es cero, no corresponde a ningún bloque y no existen aperturas conocidas. Como resultado, este compromiso nunca será producido por un invitado zkVM correcto que utilice Steel, y aprovechar este error para comprometer la solidez de un programa que utilice Steel requeriría un error separado o un mal uso de la librería Steel, que se espera que se utilice para validar la raíz de las pruebas de apertura de estado. Se ha publicado una corrección como parte de `risc0-ethereum` 2.1.1 y 2.2.0. Los usuarios de la librería `Steel` de Solidity, versiones 2.1.0 o anteriores, deben asegurarse de usar `Steel.validateCommitment` junto con la verificación de pruebas de zkVM de un programa Steel, como se muestra en el contraejemplo ERC-20 y la documentación. Este es el uso correcto de Steel, y los usuarios que siguen este patrón no corren ningún riesgo y no necesitan tomar medidas. Los usuarios que no verifiquen una prueba de zkVM de un programa Steel deben actualizar su aplicación para hacerlo, ya que este es un uso incorrecto de Steel.

24 Jun 2025, 21:15

Type Values Removed Values Added
New CVE

Information

Published : 2025-06-24 21:15

Updated : 2025-06-26 18:58


NVD link : CVE-2025-52884

Mitre link : CVE-2025-52884

CVE.ORG link : CVE-2025-52884


JSON object : View

Products Affected

No product.

CWE
CWE-159

Improper Handling of Invalid Use of Special Elements