¡Bienvenido al Spotlight de Vulnerabilidades de Sherlock! Cada semana, destacaremos una vulnerabilidad impactante que nuestros investigadores descubrieron durante una auditoría de Sherlock.
Esta semana tenemos un retiro excesivo debido a una mala configuración.
Fue encontrado por @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 y @0xleastwood en el concurso V3 de @NotionalFinance.

Si el currentBalance es 999,900 USDC y el withdrawAmountExternal es 1,000,000 USDC, entonces hay un saldo insuficiente en el contrato, y se necesitan retirar fondos adicionales del mercado monetario (por ejemplo, Compound).

Dado que el contrato ya tiene 999,900 USDC, solo se necesita retirar 100 USDC adicionales del mercado monetario para cumplir con la solicitud de retiro de 1,000,000 USDC.
Sin embargo, en lugar de retirar 100 USDC del mercado monetario, Notional retira 1,000,000 USDC del mercado según la función oracle.getRedemptionCalldata(withdrawAmountExternal). Como resultado, se está retirando un exceso de 999,900 USDC del mercado monetario.
¿Cuál es el impacto?
Esto llevó a una cantidad excesiva de activos inactivos en Notional y que no generaban ningún rendimiento o interés en el mercado monetario, lo que resultó en una pérdida significativa de rendimiento para los usuarios, ya que recibirían una tasa de interés más baja de lo esperado y sufrirían una pérdida de oportunidad.
Los atacantes podrían potencialmente abusar de esto para retirar los fondos que Notional invirtió en el mercado monetario, lo que llevaría a un daño y a una pérdida asombrosa de retornos/intereses para el protocolo.
La Solución:
Esencialmente, antes de la solución, el código le decía al oráculo: "Prepara los pasos para retirar todo lo que el usuario quiera del mercado monetario."
Cuando debería haber dicho: "Solo retira lo que nos falta del mercado monetario."

Después de la corrección, para el ejemplo anterior, los 999,900 USDC ya mantenidos por el contrato permanecen intactos y continúan generando rendimiento, mejorando la eficiencia y preservando los retornos para todos los usuarios.
Esta vulnerabilidad se originó a partir de un sutil error de lógica en la forma en que se calculaban y pasaban los montos de retiro. Al pasar por alto el saldo existente del contrato, el sistema retiró innecesariamente fondos excesivos del mercado monetario, lo que llevó a una ineficiencia de capital y pérdida de rendimiento.
Estamos orgullosos de haber ayudado a asegurar Notional a través de este descubrimiento. Cuando realmente necesita estar seguro, Sherlock es la elección correcta.
2,83 mil
35
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.