Los puntos clave no están disponibles para este artículo en este momento.
A diferencia del software tradicional, los contratos inteligentes tienen una organización única en la que una secuencia de transacciones comparte estados persistentes. Desafortunadamente, esta característica dificulta que los fuzzers existentes encuentren secuencias de transacciones críticas. Para abordar este desafío, empleamos análisis estáticos y dinámicos para fuzzing de contratos inteligentes. Primero, analizamos estáticamente los códigos byte de los contratos inteligentes para predecir qué secuencias de transacciones llevarán a pruebas efectivas y determinar si hay alguna restricción que cada transacción deba satisfacer. Esta información se pasa a la fase de fuzzing y se utiliza para construir un corpus de semillas inicial. Durante una campaña de fuzzing, realizamos un análisis de flujo de datos dinámico ligero para recopilar retroalimentación basada en el flujo de datos que guíe efectivamente el fuzzing. Implementamos nuestras ideas en un fuzzer práctico de código abierto, llamado SMARTIAN. SMARTIAN puede descubrir errores en contratos inteligentes del mundo real sin necesidad del código fuente. Nuestros resultados experimentales muestran que SMARTIAN es más efectivo que las herramientas de última generación existentes para encontrar CVEs conocidas en contratos del mundo real. SMARTIAN también supera a otras herramientas en términos de cobertura de código.
Choi et al. (Mon,) estudiaron esta cuestión.