Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Criptografía y seguridad# Tecnologías emergentes# Ingeniería del software

Navegando los riesgos de los contratos inteligentes proxy

Los contratos proxy en Ethereum ofrecen ventajas, pero también tienen preocupaciones de seguridad importantes.

Cheng-Kang Chen, Wen-Yi Chu, Muoi Tran, Laurent Vanbever, Hsu-Chun Hsiao

― 8 minilectura


Riesgos de los contratosRiesgos de los contratosproxy expuestospresentan serios riesgos de seguridad.Los contratos proxy en Ethereum
Tabla de contenidos

En el mundo de las criptomonedas, Ethereum se destaca como una plataforma popular que soporta varias aplicaciones en línea. Una de las características más importantes de Ethereum es su capacidad para ejecutar contratos inteligentes. Estos contratos son programas autoejecutables que llevan a cabo tareas automáticamente cuando se cumplen ciertas condiciones. Sin embargo, hay un patrón de diseño llamado patrón de proxy que permite a los desarrolladores crear contratos que pueden ser actualizados sin perder su estado. Aunque esto suena beneficioso, también conlleva riesgos, especialmente en términos de seguridad.

¿Qué son los Contratos Inteligentes Proxy?

Los contratos inteligentes proxy son contratos que separan la lógica del programa de los datos que almacenan. Esto significa que el código real que realiza las acciones puede ser cambiado sin alterar los datos almacenados en el contrato. Al usar un proxy, los desarrolladores pueden actualizar la parte lógica mientras mantienen la misma dirección y estado, lo cual es atractivo para proyectos en curso que necesitan actualizaciones.

Sin embargo, este diseño tiene sus desventajas. Dos tipos significativos de problemas pueden surgir del uso de contratos proxy: colisiones de funciones y colisiones de almacenamiento.

Colisiones de Funciones

Las colisiones de funciones ocurren cuando dos funciones comparten el mismo nombre o firma tanto en el proxy como en los contratos de lógica. Cuando esto sucede, lleva a confusión. El proxy puede intentar ejecutar su propia función en lugar de la función deseada del contrato de lógica. Esto puede causar problemas operativos y puede ser explotado por atacantes.

Por ejemplo, imagina que un contrato proxy tiene una función para que los usuarios retiren dinero. Si hay otra función en el contrato de lógica con el mismo nombre, el proxy podría no llamar a la correcta, lo que llevaría a transferencias de fondos no deseadas. Los actores maliciosos pueden aprovechar esta confusión para robar fondos.

Colisiones de Almacenamiento

Las colisiones de almacenamiento ocurren cuando dos contratos diferentes ocupan inadvertidamente el mismo espacio de almacenamiento. Dado que tanto el contrato proxy como el de lógica comparten el mismo espacio de almacenamiento, si no se gestionan correctamente, podrían terminar sobrescribiendo los datos del otro. Este solapamiento puede llevar a vulnerabilidades serias donde los atacantes explotan el espacio compartido para cambiar información importante, como quién posee un contrato en particular.

Por ejemplo, si un contrato proxy almacena la dirección de un propietario y el contrato de lógica intenta almacenar un valor booleano en el mismo lugar, podría sobrescribir la dirección del propietario con información falsa. Este tipo de problema puede llevar a accesos y controles no autorizados sobre el contrato.

La Importancia de Encontrar Colisiones

Dado los riesgos asociados con colisiones de funciones y almacenamiento, identificar tales vulnerabilidades es crucial para proteger a los usuarios y sus activos. Existen muchas herramientas y métodos para este propósito, pero a menudo no logran cubrir todos los contratos en la red de Ethereum. Muchas herramientas existentes solo pueden analizar contratos que son accesibles públicamente o aquellos que han sido utilizados en transacciones pasadas.

Esta limitación es preocupante porque una porción significativa de contratos en Ethereum no tiene código fuente o historial de transacciones disponible. Por lo tanto, es necesaria un enfoque integral para identificar colisiones.

La Necesidad de una Nueva Herramienta

Para abordar estos problemas, se ha desarrollado una nueva herramienta automatizada que puede identificar contratos inteligentes proxy y verificar vulnerabilidades de colisión. Esta herramienta utiliza técnicas avanzadas para evaluar contratos que carecen tanto de código fuente como de historial de transacciones. Analiza millones de contratos inteligentes de manera eficiente y precisa, ofreciendo una cobertura más amplia que las herramientas existentes.

Cómo Funciona la Herramienta

La herramienta tiene un proceso de dos pasos para identificar contratos proxy. Primero, descompone el bytecode de un contrato inteligente para buscar opcodes específicos que indiquen si el contrato actúa como un proxy. Si un contrato tiene el opcode correcto, pasa al segundo paso, donde simula la ejecución del contrato para verificar si se comporta como un proxy.

Una vez que se confirma un contrato proxy, la herramienta buscará contratos de lógica asociados y comprobará posibles colisiones. Utiliza varias técnicas, como ejecución simbólica y segmentación de programas, para verificar colisiones de almacenamiento efectivamente.

Hallazgos al Usar la Herramienta

La herramienta ha analizado millones de contratos activos en la red de Ethereum y ha descubierto un número asombroso de contratos proxy y vulnerabilidades asociadas. El análisis reveló que más de la mitad de los contratos activos son contratos proxy, y muchos de ellos son efectivamente susceptibles a colisiones de funciones y almacenamiento.

Estadísticas de Contratos Proxy

Según el análisis, se han identificado alrededor de 19.5 millones de contratos proxy, un porcentaje significativo de los cuales no publican su código fuente. Esta estadística es alarmante ya que destaca una falta de transparencia en muchos de estos contratos. Alrededor de 1.5 millones de contratos proxy ocultos fueron descubiertos, los cuales no poseen código fuente o datos de transacción accesibles.

Estadísticas de Vulnerabilidad por Colisión

Además, la herramienta detectó aproximadamente 1.5 millones de casos de colisiones de funciones en los contratos proxy identificados. Es importante señalar que una gran mayoría de estas colisiones provienen de la duplicación de contratos, donde muchos contratos proxy comparten el mismo código. Además, también se identificaron varios casos de colisiones de almacenamiento explotables, lo que genera preocupaciones para las entidades que gestionan estos contratos.

El Crecimiento de los Contratos Proxy

El análisis también observó una tendencia de crecimiento notable en el número de contratos proxy desplegados a lo largo de los años. Antes de 2020, se introdujeron alrededor de 2 millones de contratos proxy, pero para 2023, los números de despliegue se dispararon, con millones siendo creados en solo los primeros meses del año. Esta tendencia indica un fuerte cambio hacia el uso de contratos proxy en el ecosistema de Ethereum.

Muchos desarrolladores se sienten atraídos por el patrón de proxy debido a la flexibilidad que ofrece para actualizaciones y funcionalidades de contratos. Sin embargo, este aumento en el uso también significa más vulnerabilidades potenciales que necesitan ser monitoreadas y gestionadas de manera efectiva.

Prácticas de Seguridad para Contratos Proxy

A medida que el uso de contratos proxy sigue creciendo, implementar prácticas de seguridad robustas sigue siendo esencial. Se insta a los desarrolladores a seguir mejores prácticas para evitar colisiones de funciones y almacenamiento. Esto incluye separar claramente los nombres de las funciones, asegurarse de que las firmas sean únicas y gestionar cuidadosamente los diseños de almacenamiento.

La introducción de nuevos patrones de diseño de proxy, como el Proxy Actualizable Transparente, tiene como objetivo minimizar la probabilidad de colisiones implementando un enfoque más estructurado para las llamadas a funciones. Al distinguir entre tipos de llamadores, estos diseños ayudan a prevenir ejecuciones no intencionadas de funciones, mejorando así la seguridad del contrato.

Desafíos para Garantizar la Seguridad

A pesar de los mejores esfuerzos para asegurar los contratos proxy, persisten varios desafíos. Muchos desarrolladores no revisan a fondo sus contratos o dependen demasiado de herramientas externas para el análisis. Esta dependencia puede llevar a que vulnerabilidades se escapen, especialmente cuando las herramientas de seguridad existentes no pueden analizar contratos debido a la falta de código fuente o historial de transacciones.

A medida que los actores maliciosos se vuelven más sofisticados, la necesidad de herramientas de análisis integrales se vuelve cada vez más urgente. El desarrollo continuo y la mejora de Herramientas automatizadas pueden proporcionar una mejor cobertura, lo que lleva a un entorno más seguro para todos los usuarios de Ethereum.

Conclusión

Los contratos inteligentes proxy en Ethereum ofrecen flexibilidad y capacidad de actualización, pero también introducen riesgos de seguridad significativos. Comprender estos riesgos, particularmente con colisiones de funciones y almacenamiento, es vital tanto para desarrolladores como para usuarios.

La aparición de herramientas automatizadas que pueden identificar estas vulnerabilidades es un paso positivo hacia la seguridad del ecosistema de Ethereum. A medida que la popularidad de los contratos proxy sigue en aumento, la vigilancia continua y las prácticas mejoradas serán cruciales para proteger a los usuarios y sus activos de posibles explotaciones.

Al ser proactivos e implementar medidas de seguridad efectivas, los desarrolladores pueden asegurar que los beneficios de los contratos proxy superen con creces los riesgos involucrados.

Fuente original

Título: Proxion: Uncovering Hidden Proxy Smart Contracts for Finding Collision Vulnerabilities in Ethereum

Resumen: The proxy design pattern allows Ethereum smart contracts to be simultaneously immutable and upgradeable, in which an original contract is split into a proxy contract containing the data storage and a logic contract containing the implementation logic. This architecture is known to have security issues, namely function collisions and storage collisions between the proxy and logic contracts, and has been exploited in real-world incidents to steal users' millions of dollars worth of digital assets. In response to this concern, several previous works have sought to identify proxy contracts in Ethereum and detect their collisions. However, they all fell short due to their limited coverage, often restricting analysis to only contracts with available source code or past transactions. To bridge this gap, we present Proxion, an automated cross-contract analyzer that identifies all proxy smart contracts and their collisions in Ethereum. What sets Proxion apart is its ability to analyze hidden smart contracts that lack both source code and past transactions. Equipped with various techniques to enhance efficiency and accuracy, Proxion outperforms the state-of-the-art tools, notably identifying millions more proxy contracts and thousands of unreported collisions. We apply Proxion to analyze over 36 million alive contracts from 2015 to 2023, revealing that 54.2% of them are proxy contracts, and about 1.5 million contracts exhibit at least one collision issue.

Autores: Cheng-Kang Chen, Wen-Yi Chu, Muoi Tran, Laurent Vanbever, Hsu-Chun Hsiao

Última actualización: 2024-09-20 00:00:00

Idioma: English

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

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

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.

Artículos similares