Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

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.

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)