Bienvenido de nuevo al Enfoque de vulnerabilidades de Sherlock, donde destacamos una vulnerabilidad impactante descubierta durante una auditoría de Sherlock. Esta semana, examinamos una denegación de servicio encontrada en el concurso de @GMX_IO por @0xdeadbeef____ y @IllIllI000. Crédito a @int0x1catedCode por el desglose.
Resumen de la vulnerabilidad: La vulnerabilidad permite a un atacante manipular el flujo de ejecución de órdenes proporcionando longitudes de motivo de reversión falsas que no coinciden con los datos reales. Esto hace que el manejo de errores del protocolo lea regiones de memoria incorrectas, lo que puede interrumpir el proceso de ejecución o provocar un comportamiento inesperado al procesar pedidos fallidos.
Pasos de ataque: 1. Fase de configuración Implementar un contrato malintencionado que implemente un comportamiento de reversión personalizado El contrato malicioso debe ser invocable por el protocolo de destino (por ejemplo, como controlador de devolución de llamada). 2. Crear datos de reversión maliciosos Revertir datos de estructura con un parámetro de longitud falsificado. 3. Ejecutar orden a través del protocolo Crear un pedido que desencadene la interacción con el contrato malintencionado Cuando el protocolo procesa el pedido y llama al contrato malicioso, se revierte con los datos creados. El manejo de errores del protocolo intenta decodificar el motivo de reversión utilizando la longitud falsa. 4. Desencadenar desbordamiento de lectura de memoria El protocolo lee la memoria en función del parámetro de longitud falsa Esto hace que lea más allá de los límites reales de los datos de reversión.
¿Cuál es el impacto? Denegación de servicio: las órdenes pueden no ejecutarse correctamente, bloqueando las operaciones legítimas del protocolo, como la liquidación de posiciones incorrectas Interrupción de la ejecución de pedidos: el procesamiento de pedidos por lotes puede detenerse, lo que afecta a varios usuarios Pérdida de gas: el procesamiento de datos de reversión mal formados puede consumir un exceso de gas
La causa raíz: 1. Parámetros de longitud no comprobados: el protocolo confía en el valor de longitud proporcionado en los datos de reversión sin validación 2. Faltan comprobaciones de límites: no hay verificación de que la longitud declarada coincida con el tamaño real de los datos
La mitigación: 1. Validar siempre la longitud de los datos de reversión 2. Implementar límites de longitud máxima
Estamos orgullosos de haber ayudado a asegurar @GMX_IO a través de este descubrimiento. Cuando es absolutamente necesario que sea seguro, Sherlock es la elección correcta.
2.33K