Vulnerabilidad en Rust EVM (CVE-2024-21629)
Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
02/01/2024
Última modificación:
09/01/2024
Descripción
Rust EVM es un intérprete de máquina virtual Ethereum. En "rust-evm", se introdujo una función llamada "record_external_operation", que permite a los usuarios de la librería registrar cambios de gas personalizados. Esta característica puede tener algunas interacciones falsas con la pila de llamadas. En particular, durante la finalización de `CREATE` o `CREATE2`, en el caso de que la ejecución de la subpila se realice exitosamente, `rust-evm` primero confirmará el subestado y luego llamará a `record_external_operation(Write(out_code.len()) )`. Si `record_external_operation` falla posteriormente, este error se devuelve a la pila de llamadas principal, en lugar de `Succeeded`. Sin embargo, el compromiso subestatal ya se produjo. Esto hace que los contratos inteligentes puedan realizar cambios de estado, cuando el contrato principal de la persona que llama recibe una dirección cero (lo que generalmente indica que la ejecución ha fallado). Este problema solo afecta a los usuarios de la librería con `record_external_operative` personalizado que devuelve errores. El problema se solucionó en la versión 0.41.1. No hay workarounds disponibles.
Impacto
Puntuación base 3.x
7.50
Gravedad 3.x
ALTA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:evm_project:evm:*:*:*:*:*:rust:*:* | 0.41.1 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://github.com/rust-ethereum/evm/blob/release-v041/src/executor/stack/executor.rs#L1012C25-L1012C69
- https://github.com/rust-ethereum/evm/commit/d8991ec727ad0fb64fe9957a3cd307387a6701e4
- https://github.com/rust-ethereum/evm/pull/264
- https://github.com/rust-ethereum/evm/security/advisories/GHSA-27wg-99g8-2v4v