logo móvil
Contáctanos

Detección de similitud de bytecode de contratos inteligentes entre opciones de optimización y versiones de compilador basada en una red de tripletes

Autores: Zhu, Di; Yue, Feng; Pang, Jianmin; Zhou, Xin; Han, Wenjie; Liu, Fudong

Idioma: Inglés

Editor: MDPI

Año: 2022

Descargar PDF

Acceso abierto

Artículo científico
2022

Detección de similitud de bytecode de contratos inteligentes entre opciones de optimización y versiones de compilador basada en una red de tripletes


Categoría

Ingeniería y Tecnología

Subcategoría

Ingeniería Eléctrica y Electrónica

Palabras clave

Contratos inteligentes
Cadena de bloques
Problemas de seguridad
Similitud de bytecode
Búsqueda de vulnerabilidades
Análisis de contratos maliciosos

Licencia

CC BY-SA – Atribución – Compartir Igual

Consultas: 44

Citaciones: Sin citaciones


Descripción
En los últimos años, el número de contratos inteligentes en funcionamiento en la cadena de bloques ha aumentado rápidamente, acompañado de muchos problemas de seguridad, como la propagación de vulnerabilidades causadas por la reutilización de código o transacciones maliciosas causadas por la implementación de contratos maliciosos, por ejemplo. La mayoría de los contratos inteligentes no publican el código fuente, sino solo el bytecode. Basándose en la investigación de la similitud de bytecode de los contratos inteligentes, se pueden llevar a cabo la actualización de contratos inteligentes, la búsqueda de vulnerabilidades y el análisis de contratos maliciosos. La dificultad de la investigación de similitud de bytecode es que diferentes versiones de compilación y opciones de optimización llevan a la diversificación del bytecode del mismo código fuente. Este documento presenta una solución, que incluye una serie de métodos para medir la similitud de bytecode de contratos inteligentes. A partir del opcode del contrato inteligente, se propone un método de pre-entrenamiento de la secuencia de bloques básicos del contrato inteligente, que puede incrustar el vector de bloques básicos. Se obtuvieron muestras positivas mediante el marcado de bloques básicos, y se mejoró el método de muestreo negativo. Después de estos trabajos, colocamos las muestras positivas obtenidas, las muestras negativas y los propios bloques básicos en la red de tripletes compuesta por transformadores. Nuestra solución puede obtener resultados de evaluación con una precisión del 97.8%, de modo que la secuencia de bloques básicos de opciones optimizadas y no optimizadas puede transformarse entre sí. Al mismo tiempo, las instrucciones se normalizan, y se normaliza el orden de las instrucciones de la versión compilada. Los experimentos muestran que nuestra solución puede reducir eficazmente la diferencia de bytecode causada por las opciones de optimización y la versión del compilador, y mejorar la precisión en un 1.4% en comparación con el trabajo existente. Proporcionamos un conjunto de datos que cubre 64 compiladores de Solidity actualmente utilizados, que incluye un millón de pares de bloques básicos extraídos de ellos.

Otros recursos que podrían interesarte

Temas Virtualpro