Vulnerabilidad en soroban-sdk (CVE-2026-26267)
Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
19/02/2026
Última modificación:
20/02/2026
Descripción
soroban-sdk es un SDK de Rust para contratos Soroban. Antes de las versiones 22.0.10, 23.5.2 y 25.1.1, la macro `#[contractimpl]` contiene un error en cómo conecta las llamadas a funciones. `#[contractimpl]` genera código que utiliza llamadas al estilo `MyContract::value()` incluso cuando está procesando la versión del trait. Esto significa que si una función inherente también se define con el mismo nombre, se llama a la función inherente en lugar de la función del trait. Esto significa que el punto de entrada exportado por Wasm llama silenciosamente a la función incorrecta cuando se cumplen dos condiciones simultáneamente: Primero, se define un bloque `impl Trait for MyContract` con una o más funciones, con `#[contractimpl]` aplicado. Segundo, se define un bloque `impl MyContract` con una o más funciones con nombres idénticos, sin `#[contractimpl]` aplicado. Si la versión del trait contiene comprobaciones de seguridad importantes, como verificar que el llamador está autorizado, que la versión inherente no tiene, esas comprobaciones se eluden. Cualquiera que interactúe con el contrato a través de su interfaz pública llamará a la función incorrecta. El problema está parcheado en las versiones de `soroban-sdk-macros` 22.0.10, 23.5.2 y 25.1.1. La corrección cambia la llamada generada de `::func()` a `::func()` al procesar implementaciones de traits, asegurando que Rust resuelva a la función asociada del trait independientemente de si existe una función inherente con el mismo nombre. Los usuarios deben actualizar a `soroban-sdk-macros` 22.0.10, 23.5.2 o 25.1.1 y recompilar sus contratos. Si la actualización no es posible de inmediato, los desarrolladores de contratos pueden evitar el problema asegurándose de que ninguna función asociada inherente en el tipo de contrato comparta un nombre con ninguna función en la implementación del trait. Renombrar o eliminar la función inherente en conflicto elimina la ambigüedad y hace que el código generado por la macro se resuelva correctamente a la función del trait.
Impacto
Puntuación base 3.x
7.50
Gravedad 3.x
ALTA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:a:stellar:rs-soroban-sdk:*:*:*:*:*:rust:*:* | 22.0.10 (excluyendo) | |
| cpe:2.3:a:stellar:rs-soroban-sdk:*:*:*:*:*:rust:*:* | 23.0.0 (incluyendo) | 23.5.2 (excluyendo) |
| cpe:2.3:a:stellar:rs-soroban-sdk:*:*:*:*:*:rust:*:* | 25.0.0 (incluyendo) | 25.1.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/stellar/rs-soroban-sdk/commit/e92a3933e5f92dc09da3c740cf6a360d55709a2b
- https://github.com/stellar/rs-soroban-sdk/pull/1729
- https://github.com/stellar/rs-soroban-sdk/pull/1730
- https://github.com/stellar/rs-soroban-sdk/pull/1731
- https://github.com/stellar/rs-soroban-sdk/security/advisories/GHSA-4chv-4c6w-w254



