Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Ingeniería del software

Evaluando Herramientas de Seguridad de Contratos Inteligentes

Un estudio sobre la efectividad de las herramientas SAST para contratos inteligentes.

― 9 minilectura


Evaluación deEvaluación deherramientas de seguridadpara contratosvulnerabilidades.herramientas SAST para identificarAnalizando la efectividad de las
Tabla de contenidos

Los contratos inteligentes están ganando popularidad en el mundo de blockchain. Permiten a las personas hacer acuerdos directamente entre ellas sin necesidad de un intermediario. Sin embargo, a medida que su uso aumenta, también lo hacen los problemas de seguridad que los rodean. Muchos contratos inteligentes han sido atacados, lo que ha llevado a pérdidas financieras significativas. Para ayudar a esto, los investigadores han creado herramientas que pueden analizar contratos inteligentes en busca de posibles debilidades de seguridad. Estas herramientas se conocen como herramientas de Pruebas de Seguridad de Aplicaciones Estáticas (SAST).

Desafortunadamente, es difícil averiguar qué herramientas son efectivas. Algunos estudios intentan compararlas, pero a menudo usan listas desactualizadas de Vulnerabilidades, lo que hace que sus resultados sean poco confiables. En este artículo, vamos a presentar un conjunto de categorías de vulnerabilidades más actualizado específicamente para contratos inteligentes. Mostraremos cómo creamos un estándar para evaluar ocho herramientas SAST basándonos en nuestras nuevas categorías. Nuestros hallazgos revelan que muchas herramientas tienen problemas para encontrar vulnerabilidades, con algunas pasando por alto la mitad de los problemas.

La Importancia de la Seguridad en los Contratos Inteligentes

Los contratos inteligentes automatizan transacciones y hacen cumplir condiciones sin necesidad de una autoridad central. Aunque esto ofrece un gran potencial, también plantea preguntas sobre la seguridad. Las vulnerabilidades en los contratos inteligentes pueden llevar a pérdidas financieras significativas. Por ejemplo, en la última década, se han perdido más de $4.75 mil millones debido a fallos de seguridad.

Por lo tanto, es crucial tener maneras confiables de verificar las vulnerabilidades en los contratos inteligentes. Existen varias técnicas para encontrar estos problemas, incluyendo tanto SAST como Pruebas de Seguridad de Aplicaciones Dinámicas (DAST). Las herramientas SAST analizan el código del contrato sin ejecutarlo, mientras que las herramientas DAST ejecutan el contrato en entornos controlados con diferentes entradas después de la implementación. SAST es valioso porque puede identificar problemas durante el proceso de codificación, siendo esencial para los desarrolladores.

Desafíos en la Comparación de Herramientas SAST

A pesar de la importancia de estas herramientas, compararlas no es fácil. Diferentes estudios han intentado evaluar estas herramientas, pero a menudo no ofrecen una imagen clara de su rendimiento. Hay varias razones para esto:

  1. Categorías Desactualizadas: Muchos estudios utilizan listas desactualizadas de vulnerabilidades, que no cubren descubrimientos recientes.
  2. Estándares Inconsistentes: Las pruebas usadas para evaluar estas herramientas a menudo no son completas, lo que lleva a conclusiones variables sobre su Efectividad.
  3. Métricas Limitadas: La mayoría de los estudios se centran solo en unos pocos aspectos de evaluación, como precisión o recuperación, sin mirar el panorama general.

Nuestro estudio tiene como objetivo abordar estos problemas creando una nueva lista de vulnerabilidades actualizada. También construiremos un estándar que cubra una amplia gama de vulnerabilidades, permitiendo una evaluación exhaustiva de las herramientas SAST.

Creando una Lista de Vulnerabilidades Actualizada

Para entender mejor las vulnerabilidades en los contratos inteligentes, necesitamos una lista precisa y completa. Las listas existentes, como el DASP Top 10 y la Clasificación de Debilidades de Contratos Inteligentes (SWC), tienen limitaciones. Están desactualizadas o son demasiado amplias, fallando en capturar vulnerabilidades más nuevas que amenazan los contratos inteligentes.

Nuestro enfoque incluyó los siguientes pasos:

  1. Examinar Taxonomías Existentes: Revisamos listas existentes y anotamos sus limitaciones. Eliminamos vulnerabilidades desactualizadas e incorporamos los últimos hallazgos.
  2. Organizar Vulnerabilidades por Causa: Analizamos las vulnerabilidades según sus causas raíz, asegurándonos de que estén estructuradas de manera significativa.
  3. Aclarar Ambigüedades: Muchas categorías anteriores se superponían, lo que generaba confusión. Trabajamos para que nuestras categorías fueran claras y distintas, asegurando que no hubiera superposiciones.
  4. Alinear con Herramientas del Mundo Real: Nuestra nueva lista considera las capacidades de las herramientas SAST existentes, asegurando que refleje lo que las herramientas pueden detectar de manera realista.

Nuestra lista final contiene 45 tipos de vulnerabilidades que son esenciales para evaluar contratos inteligentes. Esta lista actualizada sirve como base para el estándar que desarrollamos.

Construyendo un Estándar Integral

Para evaluar a fondo las herramientas SAST, necesitábamos construir un estándar integral. Este estándar incluye una variedad de contratos inteligentes, cada uno conteniendo vulnerabilidades conocidas. Siguiendo estos pasos:

  1. Recopilación de Contratos Inteligentes: Reunimos contratos de varias fuentes, asegurándonos de que sean de código abierto y estén disponibles públicamente. Identificamos 19 conjuntos de datos que contienen contratos inteligentes en Solidity.
  2. Aseguramiento de Calidad: Nos concentramos en conjuntos de datos bien conocidos o revisados por pares, asegurando que hayan sido reconocidos en la comunidad de investigación.
  3. Vulnerabilidades Etiquetadas: Una parte crucial de nuestro estándar es etiquetar vulnerabilidades a nivel de función, ya que esto permite un análisis preciso. Trabajamos con expertos en seguridad para etiquetar exhaustivamente las vulnerabilidades en los contratos recopilados.

El estándar final incluye miles de archivos únicos de contratos inteligentes, cubriendo una amplia gama de vulnerabilidades. Este conjunto de datos integral es esencial para evaluar con precisión la efectividad de las herramientas SAST.

Evaluando Herramientas SAST

Seleccionamos ocho herramientas SAST para evaluación basándonos en su relevancia y efectividad en identificar vulnerabilidades. Estas herramientas varían en sus enfoques y técnicas, lo que nos permite analizar sus diversas capacidades. Nuestra evaluación se centró en cuatro áreas principales:

  1. Análisis de Cobertura: Examinamos cuántos tipos de vulnerabilidades podía detectar cada herramienta.
  2. Análisis de Efectividad: Medimos qué tan bien se desempeñaba cada herramienta en la identificación de vulnerabilidades usando nuestro estándar.
  3. Análisis de Consistencia: Vimos si las herramientas ofrecían resultados consistentes al probar los mismos tipos de vulnerabilidades.
  4. Análisis de Eficiencia: Evaluamos qué tan rápido podía cada herramienta analizar los contratos inteligentes en nuestro estándar.

Análisis de Cobertura

Nuestro análisis reveló que la capacidad de cada herramienta para cubrir diferentes tipos de vulnerabilidades variaba significativamente. Algunas herramientas, como la herramienta comercial, cubrieron casi todas las vulnerabilidades. En cambio, muchas herramientas de código abierto mostraron una cobertura más limitada, indicando áreas de mejora.

Notablemente, una herramienta fue particularmente efectiva en identificar vulnerabilidades relacionadas con la reentrada (un problema de seguridad común donde se puede llamar a una función nuevamente antes de que su ejecución anterior finalice). Otras fueron mejores para encontrar problemas de Control de Acceso (donde usuarios no autorizados pueden acceder a funciones o datos).

Sin embargo, muchas herramientas tuvieron problemas con ciertas categorías, particularmente las relacionadas con operaciones aritméticas y vulnerabilidades relacionadas con el almacenamiento. Esta inconsistencia es una conclusión crucial para los desarrolladores, ya que destaca la necesidad de herramientas más completas que puedan cubrir un rango más amplio de vulnerabilidades de manera efectiva.

Análisis de Efectividad

El análisis de efectividad buscó determinar qué tan bien podían identificar vulnerabilidades las herramientas seleccionadas en nuestro estándar. Evaluamos el rendimiento calculando métricas como recuperación (cuántas vulnerabilidades reales se encontraron) y precisión (la exactitud de los hallazgos).

Nuestros hallazgos mostraron que algunas herramientas eran más efectivas que otras. La herramienta comercial, por ejemplo, tenía una alta tasa de recuperación, lo que indica que era buena para encontrar vulnerabilidades. Por otro lado, muchas herramientas tenían altas tasas de falsos positivos, lo que significa que marcaron muchos elementos como vulnerabilidades que en realidad no eran problemas.

Esta discrepancia señala un problema más amplio en el panorama de las herramientas SAST: mientras que algunas pueden identificar vulnerabilidades, lo hacen a costa de marcar muchas falsas alarmas. Los desarrolladores que usan estas herramientas deben ser conscientes de esta compensación.

Análisis de Consistencia

La consistencia entre diferentes herramientas fue otro área crítica de nuestra investigación. Analizamos qué tan consistentes fueron los resultados al probar las mismas vulnerabilidades con diferentes herramientas.

Nuestros resultados mostraron notables inconsistencias en las capacidades de detección de las herramientas. Por ejemplo, algunas herramientas eran particularmente buenas para encontrar vulnerabilidades de control de acceso, mientras que otras carecían de efectividad para detectarlas. Esta variación indica que la selección de herramientas es esencial, ya que depender de una sola podría llevar a perder vulnerabilidades.

También analizamos si combinar los resultados de múltiples herramientas podría mejorar las tasas de detección generales. En algunos casos, fusionar resultados mejoró la recuperación de vulnerabilidades identificadas. Sin embargo, este enfoque también llevó a un aumento en los falsos positivos, enfatizando la importancia de equilibrar la detección completa con la precisión.

Análisis de Eficiencia

Finalmente, analizamos la eficiencia de cada herramienta. Medimos cuánto tiempo tomó cada herramienta para analizar los contratos inteligentes. Los resultados destacaron diferencias significativas en el tiempo de análisis, con algunas herramientas completando sus evaluaciones en segundos mientras que otras tardaron mucho más.

Por ejemplo, las herramientas más rápidas pudieron analizar contratos en menos de 20 segundos, lo que las hace más adecuadas para análisis a gran escala o aplicaciones sensibles al tiempo. En contraste, las herramientas que dependían de técnicas de análisis más complejas a menudo tardaron horas en proporcionar resultados.

Este análisis tiene implicaciones prácticas para los desarrolladores. Deben elegir herramientas que no solo identifiquen vulnerabilidades de manera efectiva, sino que también funcionen de manera eficiente dentro de su flujo de trabajo.

Conclusiones

Nuestra evaluación de herramientas SAST revela información crítica sobre su efectividad en identificar vulnerabilidades en contratos inteligentes. Muchas herramientas tienen problemas con la detección, especialmente en lo que respecta a vulnerabilidades nuevas y complejas. Las altas tasas de falsos positivos en muchas herramientas complican aún más su uso en el proceso de desarrollo.

Recomendamos a los desarrolladores que consideren cuidadosamente qué herramientas utilizan, ya que su efectividad varía ampliamente. Además, hay una clara necesidad de que las herramientas evolucionen junto con el cambiante panorama de contratos inteligentes y las vulnerabilidades que enfrentan.

La futura investigación debería centrarse en mejorar el rendimiento de las herramientas y la implementación de la detección para aumentar la precisión y reducir los falsos positivos. También sugerimos explorar técnicas de análisis híbridas que podrían ofrecer mejor cobertura de vulnerabilidades. Al abordar estos desafíos, la seguridad de los contratos inteligentes puede mejorarse significativamente, ayudando a proteger el ecosistema de blockchain a medida que continúa creciendo.

Fuente original

Título: Static Application Security Testing (SAST) Tools for Smart Contracts: How Far Are We?

Resumen: In recent years, the importance of smart contract security has been heightened by the increasing number of attacks against them. To address this issue, a multitude of static application security testing (SAST) tools have been proposed for detecting vulnerabilities in smart contracts. However, objectively comparing these tools to determine their effectiveness remains challenging. Existing studies often fall short due to the taxonomies and benchmarks only covering a coarse and potentially outdated set of vulnerability types, which leads to evaluations that are not entirely comprehensive and may display bias. In this paper, we fill this gap by proposing an up-to-date and fine-grained taxonomy that includes 45 unique vulnerability types for smart contracts. Taking it as a baseline, we develop an extensive benchmark that covers 40 distinct types and includes a diverse range of code characteristics, vulnerability patterns, and application scenarios. Based on them, we evaluated 8 SAST tools using this benchmark, which comprises 788 smart contract files and 10,394 vulnerabilities. Our results reveal that the existing SAST tools fail to detect around 50% of vulnerabilities in our benchmark and suffer from high false positives, with precision not surpassing 10%. We also discover that by combining the results of multiple tools, the false negative rate can be reduced effectively, at the expense of flagging 36.77 percentage points more functions. Nevertheless, many vulnerabilities, especially those beyond Access Control and Reentrancy vulnerabilities, remain undetected. We finally highlight the valuable insights from our study, hoping to provide guidance on tool development, enhancement, evaluation, and selection for developers, researchers, and practitioners.

Autores: Kaixuan Li, Yue Xue, Sen Chen, Han Liu, Kairan Sun, Ming Hu, Haijun Wang, Yang Liu, Yixiang Chen

Última actualización: 2024-06-29 00:00:00

Idioma: English

Fuente URL: https://arxiv.org/abs/2404.18186

Fuente PDF: https://arxiv.org/pdf/2404.18186

Licencia: https://creativecommons.org/licenses/by/4.0/

Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.

Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.

Más de autores

Artículos similares