Bienvenido de nuevo a Spotlight de Vulnerabilidades de Sherlock, donde destacamos una vulnerabilidad impactante descubierta durante una auditoría de Sherlock.
Esta semana, tenemos Spoofing de Depósitos.
Fue descubierto por @0xalpharush y @bernd_eth en el Concurso Cross-Chain de @zetablockchain. 🧵

Aquí está el resumen de la vulnerabilidad de @bernd_eth:
1. Los observadores de ZetaChain monitorean transacciones en cadenas externas (por ejemplo, Ethereum, Solana) y las añaden a un rastreador centralizado de entradas para procesarlas como depósitos y retiros, asumiendo el éxito de la transacción.
2. A diferencia de la integración EVM, la implementación de Solana omite las verificaciones de éxito de la transacción, lo que permite a un observador malicioso añadir depósitos fallidos, acuñando SOL ZRC20 sin respaldo y drenando fondos puentes.
3. A pesar de que los observadores están explícitamente autorizados por ZetaChain, es fundamental asegurar que ninguna parte única pueda comprometer la cadena o desviar activos.
Normalmente, los observadores no procesan transacciones fallidas, pero este camino de código no realiza la misma validación que su contraparte en EVM. Si bien esto requiere un rol "privilegiado", cada validador es un observador, y el consenso BFT se supone que es tolerante a fallos bizantinos, es decir, tolera <1/3 de partes maliciosas. Por lo tanto, un observador malicioso no debería poder falsificar un depósito e inducir a los validadores honestos a votar para acuñar ZRC20 Sol para transacciones fallidas a través del rastreador de entrada, que carece de validaciones para su implementación en Solana.
La causa raíz de esta vulnerabilidad:
La función ProcessInboundEvents no requiere que una transacción haya tenido éxito, a diferencia del observador de entrada EVM, que lo hace correctamente aquí. Dado que la instrucción se decodifica como si hubiera tenido éxito, un observador malicioso puede falsificar un depósito por el saldo completo de ZRC20-SOL y luego retirar el SOL bloqueado en el lado de Solana del puente, robando todos los lamports en el puente. Este ataque también podría usarse para retirar tokens SPL o realizar depósitos y llamadas arbitrarias. Por ejemplo, eliminar la propiedad escribible de la PDA del gateway en la instrucción de depósito resulta en una transacción fallida (ver el error de restricción de anclaje en el POC), y aún puede ser procesada una vez que se añade al rastreador de entrada a través de MsgAddInboundTracker.
Condiciones previas internas:
Un observador malicioso o negligente añade una transacción fallida de Solana que contiene instrucciones de Gateway al rastreador de entrada utilizando MsgAddInboundTracker, lo que resulta en que todos los validadores procesen y voten para acuñar ZRC20 Sol en Zetachain.
El CCTX recibe suficientes votos, y se acuña ZRC20 Sol no respaldado en Zetachain.
Precondiciones externas:
Cualquier parte envía una transacción fallida a la puerta de enlace con una instrucción de depósito (o depósito y llamada).
El destinatario del ZRC20 Sol en Zetachain lo retira y recibe lamports en Solana.
El camino del ataque:
1) Cualquier parte envía una transacción fallida a la puerta de enlace con una instrucción de depósito (o depósito y llamada).
2) Un observador malicioso o negligente añade una transacción fallida de Solana que contiene instrucciones de la puerta de enlace al rastreador de entrada utilizando MsgAddInboundTracker, lo que resulta en que todos los validadores procesen y voten para acuñar ZRC20 Sol en Zetachain.
3) La tarea ProcessInboundTrackers hace que el CCTX suplantado reciba suficientes votos, y se acuña ZRC20 Sol no respaldado en Zetachain.
4) El destinatario del ZRC20 Sol en Zetachain lo retira y recibe lamports en Solana.
¿Cuál es el impacto?
Todos los lamports y tokens SPL depositados en el puente de Solana pueden ser robados, dado que los depósitos pueden ser falsificados por cualquier cantidad (se procesan a pesar de que el programa Gateway provoca que las transacciones se reviertan).
La Mitigación:
En el procesamiento del rastreador de entrada del Observador de Solana, verifica si la transacción es exitosa antes de votar sobre ella.

Estamos orgullosos de haber ayudado a asegurar @zetablockchain a través de este descubrimiento.
Cuando realmente necesita ser seguro, Sherlock es la elección correcta.
7,78 mil
17
El contenido de esta página lo proporcionan terceros. A menos que se indique lo contrario, OKX no es el autor de los artículos citados y no reclama ningún derecho de autor sobre los materiales. El contenido se proporciona únicamente con fines informativos y no representa las opiniones de OKX. No pretende ser un respaldo de ningún tipo y no debe ser considerado como un consejo de inversión o una solicitud para comprar o vender activos digitales. En la medida en que la IA generativa se utiliza para proporcionar resúmenes u otra información, dicho contenido generado por IA puede ser inexacto o incoherente. Lee el artículo vinculado para obtener más detalles e información. OKX no es responsable del contenido alojado en sitios de terceros. El holding de activos digitales, incluyendo stablecoins y NFT, implican un alto grado de riesgo y pueden fluctuar en gran medida. Debes considerar cuidadosamente si el trading o holding de activos digitales es adecuado para ti a la luz de tu situación financiera.