Los contratos inteligentes son contratos autoejecutables en la cadena de bloques. Eliminan la necesidad de intermediarios como abogados o bancos al automatizar el proceso de ejecución y cumplimiento de las disposiciones de un contrato. Los contratos inteligentes pueden ejecutarse automáticamente sin intervención humana, son seguros y no se pueden manipular. Son atractivos para las personas, las empresas y los gobiernos que buscan automatizar los procedimientos y reducir los costos de transacción debido a esta capacidad.
La capacidad de los contratos inteligentes para eliminar la necesidad de intermediarios puede reducir los costos de transacción, acelerar las transacciones y aumentar la transparencia, que es una de sus principales ventajas. Dado que los datos se registran en un libro mayor descentralizado e impenetrable, los contratos inteligentes también pueden ofrecer mayor seguridad y privacidad que los contratos convencionales.
Este artículo profundiza en los contratos inteligentes, explicando más sobre cómo funcionan y cómo podrían ser pirateados. Los lectores pueden esperar aprender lo siguiente:
¡Vamos a sumergirnos!
Cómo funcionan los contratos inteligentes
Los contratos inteligentes funcionan mediante el uso de codificación para hacer cumplir los términos de un acuerdo. El contrato se ejecutará automáticamente cuando se cumplan las circunstancias preestablecidas una vez que el código se haya publicado en la cadena de bloques. No se puede modificar más allá de ese punto.
Por ejemplo, si dos partes acuerdan un contrato inteligente para la venta de una casa, una vez que se realiza el pago y la cadena de bloques lo verifica, el contrato transferirá inmediatamente la propiedad de la casa al comprador.
Numerosas industrias, incluidas las finanzas, la gestión de la cadena de suministro, los bienes raíces y otras, podrían usar contratos inteligentes. La tecnología tiene la capacidad de cambiar la forma en que hacemos negocios y nos comunicamos entre nosotros a medida que se desarrolla y se usa más comúnmente.
Cómo se pueden piratear los contratos inteligentes
Debido a que pueden automatizar los acuerdos contractuales sin el uso de intermediarios, los contratos inteligentes se han anunciado como una tecnología que cambia el paradigma. Como cualquier tecnología, no son inmunes a las fallas y los piratas informáticos buscan continuamente nuevos métodos para aprovecharlas. Los siguientes son algunos de los hacks de contratos inteligentes más típicos:
1. Ataques de reentrada
Los ataques de reingreso pueden ser difíciles de detectar porque el código parece estar funcionando correctamente, lo que permite al atacante explotar repetidamente la vulnerabilidad hasta que tenga éxito. La violación de DAO, en la que un atacante robó 50 millones de dólares en éter tomando repetidamente dinero del contrato de DAO, es un ejemplo bien conocido de un asalto de reingreso.
Los desarrolladores pueden emplear una variedad de técnicas para reducir el peligro de ataques de reingreso. Por ejemplo, pueden crear bloqueos mutex para prohibir la ejecución simultánea del mismo contrato o establecer límites de consumo de gas para detener funciones recursivas prolongadas.
2. Desbordamiento/Subdesbordamiento
Cuando el resultado de una operación matemática excede los límites de un tipo de datos, se produce un desbordamiento y un subdesbordamiento de enteros.
Las consecuencias del desbordamiento y subdesbordamiento de enteros pueden ser desastrosas. Por ejemplo, un usuario puede retirar dinero y terminar con un saldo negativo. Un atacante también puede crear un valor extraordinariamente grande para eludir una restricción o lanzar un ataque de denegación de servicio.
Los desarrolladores pueden evitar el desbordamiento y el subdesbordamiento de enteros utilizando tipos de datos como BigInt o uint256 que pueden manejar enteros enormes. Para garantizar que los valores de entrada se encuentren dentro del rango permitido, pueden incorporar controles adicionales para las condiciones de contorno.
3. Dependencia de sellos de tiempo
La dependencia de la marca de tiempo es otro problema que puede provocar un comportamiento inesperado. Los contratos inteligentes pueden emplear marcas de tiempo para validar circunstancias sensibles al tiempo, incluso si un usuario tiene derecho a un pago. Los atacantes pueden aprovechar esta debilidad cambiando la marca de tiempo o iniciando una transacción en un momento específico para hacer que una condición ocurra antes de lo debido.
Los desarrolladores pueden confirmar la validez de circunstancias específicas sin depender de las marcas de tiempo utilizando números de bloque en su lugar. También pueden establecer límites de tiempo para evitar la ejecución del contrato más allá de un cierto período de tiempo. Los desarrolladores también pueden obtener marcas de tiempo precisas de fuentes de tiempo externas confiables.
4. Tokens de acuñación y listas negras
Los piratas informáticos pueden utilizar funciones de acuñación y listas negras en contratos inteligentes para agregar, eliminar o restringir el acceso de los usuarios a los tokens. Por ejemplo, un pirata informático puede producir una cantidad infinita de tokens utilizando una función de acuñación, que luego podría vender para obtener ganancias.
Alternativamente, un atacante puede utilizar una función de lista negra para denegar el acceso a los tokens de usuarios particulares, lo que erosionaría la confianza del usuario. Para detener este tipo de ataques, los desarrolladores de contratos inteligentes deben construir correctamente mecanismos de acuñación y listas negras y probarlos rigurosamente.
5. Cálculos incorrectos
Para funcionar correctamente, los contratos inteligentes dependen de cálculos precisos. Las estimaciones inexactas pueden tener resultados inesperados. Por ejemplo, el propietario del contrato podría perder dinero si un contrato inteligente contiene un error de cálculo que permite a un atacante eludir ciertas restricciones o acceder a dinero en efectivo para el que no está autorizado. Además, los consumidores pueden confundirse y perder la confianza en un contrato inteligente si un error de cálculo produce saldos de tokens inexactos.
6. Bibliotecas y dependencias maliciosas
Los contratos inteligentes usan con frecuencia bibliotecas y dependencias de otras fuentes. Estas dependencias o bibliotecas podrían dar acceso a un atacante al contrato o sus fondos si son maliciosos o están comprometidos. Un atacante podría aprovechar el uso de una biblioteca con puerta trasera en un contrato inteligente, por ejemplo, para apoderarse del contrato. Además, si una biblioteca es vulnerable, el atacante puede aprovechar el contrato inteligente en su beneficio.
7. Carrera frontal
El acto de avanzar en la cola de ejecución de una transacción para canjearla antes de que tenga lugar una transacción futura conocida se conoce en el ámbito de blockchain y las criptomonedas como front-running. Con el fin de extraer posibles ganancias y cortar el efectivo, esto se hace con frecuencia examinando las instrucciones y funciones del contrato inteligente que nunca antes se han utilizado en un contrato inteligente.
Cuando un atacante observa una transacción de intercambio después de que se haya transmitido pero antes de que haya finalizado, está cometiendo un ataque frontal. Luego reordenan las transacciones para su propio beneficio. Esto lo logra con frecuencia un minero o un bot que agrega su nueva transacción frente a la existente de inmediato. La transacción maliciosa se ejecuta antes de que finalice la transacción existente.
Ejemplos de hacks de contratos inteligentes del mundo real
Aunque los contratos inteligentes están diseñados para ser seguros, ocasionalmente se han violado o utilizado con fines maliciosos. Los siguientes son algunos casos de piratería de contratos inteligentes reales:
Basado en la cadena de bloques Ethereum, KingDice es una red de juego descentralizada. En agosto de 2017, un pirata informático se apoderó de Ether por un valor de casi 300 000 dólares aprovechando una falla en el código del contrato inteligente.
En noviembre de 2020, un pirata informático aprovechó una falla en el contrato inteligente Uniswap V2 para robar Bitcoin por valor de casi $ 300,000. Para manipular el precio de un token y aprovechar la oportunidad de arbitraje, el atacante utilizó un préstamo rápido.
Desarrollado sobre la cadena de bloques Ethereum, el DAO (Organización Autónoma Descentralizada) era un fondo de inversión basado en contratos inteligentes. En junio de 2016, un pirata informático robó casi $ 50 millones en Ethereum del DAO aprovechando una falla en la programación. El hack hizo que la cadena de bloques de Ethereum se bifurcara, dando lugar a Ethereum Classic.
En julio de 2017, un pirata informático se apoderó de Ethereum por valor de casi 30 millones de dólares al aprovechar una falla en la billetera multi-sig de Parity. Debido a un error en la programación del contrato inteligente, el pirata informático pudo tomar el control de la billetera y mover todo el dinero a otra cuenta.
Estrategias de Prevención y Mitigación
Los desarrolladores pueden usar las siguientes prácticas recomendadas para crear contratos inteligentes seguros:
- Usar bibliotecas y dependencias bien establecidas y auditadas. El uso de bibliotecas y dependencias bien establecidas y auditadas puede ayudar a reducir el riesgo de introducir vulnerabilidades en un contrato inteligente. Se debe evitar el uso de código no probado o que no sea de confianza, y los desarrolladores deben verificar cuidadosamente la seguridad de cualquier código de terceros que utilicen.
- Implementación de comprobaciones de condiciones de contorno. Los contratos inteligentes deben implementar verificaciones de condiciones límite, incluidos los valores máximos y mínimos de los parámetros de entrada. Al hacer esto, se pueden reducir los ataques de desbordamiento y subdesbordamiento de enteros. La efectividad y el uso generalizado de las tecnologías de contratos inteligentes dependen de la prevención y mitigación de los ataques de contratos inteligentes.
- Usar bibliotecas y dependencias bien establecidas y auditadas puede ayudar a reducir el riesgo de introducir vulnerabilidades en un contrato inteligente. Se debe evitar el uso de código no probado o que no sea de confianza, y los desarrolladores deben verificar cuidadosamente la seguridad de cualquier código de terceros que utilicen.
- Evitar dependencias de marcas de tiempo. Para reducir la posibilidad de manipulación de la marca de tiempo, los desarrolladores deben abstenerse de usar marcas de tiempo como la única base para llevar a cabo la lógica del contrato inteligente. Cuando se cumplen requisitos específicos, pueden emplear técnicas alternativas como números de bloque o hash de bloque.
- Pruebas exhaustivas. Encontrar y reparar vulnerabilidades de contratos inteligentes depende de pruebas exhaustivas. Los desarrolladores deben realizar pruebas unitarias y de integración para confirmar que el contrato funciona según lo previsto y para identificar cualquier problema potencial desde el principio.
- Implementar correctamente las funciones de acuñación y listas negras. Los desarrolladores deben tener cuidado al implementar funciones de acuñación y listas negras para evitar el acceso y la manipulación no deseados.
- Garantizar cálculos precisos. El correcto funcionamiento de los contratos inteligentes depende de cálculos precisos. Al realizar operaciones matemáticas difíciles, los desarrolladores deben usar bibliotecas probadas y asegurarse de que sus cálculos sean precisos.
- Auditorías de seguridad. Las auditorías de seguridad son una técnica útil para localizar debilidades en los contratos inteligentes. Antes de implementar sus contratos inteligentes, los desarrolladores pueden contratar empresas de auditoría de contratos inteligentes para auditarlos. Dichas auditorías pueden ayudar a los equipos a encontrar y solucionar cualquier problema potencial antes de que el código entre en producción.
- Verificación formal. Es una técnica matemática para confirmar la precisión de un contrato inteligente. Este método puede ayudar a garantizar que un contrato inteligente funcione según lo planeado y sea seguro.
- Recompensas de errores. Se alienta a los investigadores de seguridad a descubrir e informar fallas en los contratos inteligentes ofreciendo recompensas por errores. Para encontrar y solucionar posibles problemas, los desarrolladores pueden acceder a un amplio grupo de expertos en seguridad pagándoles para encontrar vulnerabilidades.
Conclusión
En conclusión, si bien los contratos inteligentes ofrecen una forma revolucionaria de automatizar transacciones en la cadena de bloques, son vulnerables a la piratería y a las infracciones de seguridad. Los desarrolladores deben adherirse a prácticas recomendadas como auditorías de contratos inteligentes y pruebas de seguridad para evitar la piratería de contratos inteligentes.
Los desarrolladores pueden asegurar la salud a largo plazo de la tecnología blockchain y crear un ecosistema confiable para todos los usuarios, libre de los peligros de la piratería de contratos inteligentes. Pueden lograr ese resultado implementando procedimientos como recompensas por errores, verificación formal y auditorías de seguridad. Al final, priorizar la seguridad es fundamental para el desarrollo de los contratos inteligentes y el sector blockchain.
Su cripto merece la mejor seguridad. Obtener una ¡Cartera de hardware Ledger por solo $ 79!
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones