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
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
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.
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.