¡Bienvenido al Foco 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 por mala configuración. Fue encontrado por @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 y @0xleastwood en el concurso @NotionalFinance V3.
Si el currentBalance es de 999,900 USDC y el withdrawAmountExternal es de 1,000,000 USDC, entonces no hay saldo suficiente en el contrato y es necesario retirar fondos adicionales del mercado monetario (por ejemplo, Compound).
Dado que el contrato ya tiene 999,900 USDC, solo se necesitan 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 del mercado monetario un exceso de 999,900 USDC.
¿Cuál es el impacto? Esto llevó a una cantidad excesiva de activos inactivos en Notional y no generaron ningún rendimiento o interés en el mercado monetario, lo que condujo a una pérdida significativa de rendimiento para los usuarios, ya que recibirían una tasa de interés más baja de lo esperado e incurrirían en pérdidas de oportunidad.
Los atacantes podrían abusar de esto para retirar los fondos que Notional invirtió en el mercado monetario, lo que provocaría un duelo y una asombrosa pérdida de rendimientos/intereses para el protocolo.
La solución: Esencialmente, antes de la corrección, el código le decía al oráculo: "Prepare los pasos para retirar todo lo que el usuario quiera del mercado monetario". Cuando debería haber dicho: "Solo saca lo que nos falta del mercado monetario".
Después de la corrección, para el ejemplo anterior, los 999,900 USDC que ya tenía el contrato permanecen intactos y continúan obteniendo rendimiento, mejorando la eficiencia y preservando los rendimientos para todos los usuarios.
Esta vulnerabilidad se debió a una sutil falla lógica en la forma en que se calcularon y aprobaron los montos de retiro. Al pasar por alto el saldo existente del contrato, el sistema retiró innecesariamente fondos excesivos del mercado monetario, lo que provocó ineficiencia de capital y pérdida de rendimiento. Estamos orgullosos de haber ayudado a asegurar a Notional a través de este descubrimiento. Cuando es absolutamente necesario que sea seguro, Sherlock es la elección correcta.
Mostrar original
2.82 K
35
El contenido al que estás accediendo se ofrece por terceros. A menos que se indique lo contrario, OKX no es autor de la información y no reclama ningún derecho de autor sobre los materiales. El contenido solo se proporciona 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 enlazado para más detalles e información. OKX no es responsable del contenido alojado en sitios de terceros. Los holdings de activos digitales, incluidos stablecoins y NFT, suponen un alto nivel de riesgo y pueden fluctuar mucho. Debes considerar cuidadosamente si el trading o holding de activos digitales es adecuado para ti según tu situación financiera.