La tecnología blockchain ha despertado el interés de empresas de todo el mundo. Sus ventajas, entre ellas la inmutabilidad y la transparencia, han llevado a empresas tradicionales ajenas al sector financiero, como BMW y Bosch, a experimentar con contratos inteligentes para crear cadenas de suministro más eficientes y fabricar productos de ingeniería más inteligentes.
Los contratos inteligentes, que son esencialmente software codificado en una cadena de bloques específica, formalizan y ejecutan acuerdos entre múltiples partes, eliminando la necesidad de un intermediario externo de confianza, ahorrando tiempo y permitiendo una validación basada en el consenso de múltiples partes. Se pueden utilizar en una variedad de actividades, como testamentos, juegos de ajedrez e incluso transferencias de escrituras.
Pero a pesar de todo el potencial disruptivo y las muy promocionadas capacidades que promete la cadena de bloques, la cantidad de robos que tienen como blanco los contratos inteligentes se ha multiplicado por más de 12 en los últimos dos años. Si son tan inteligentes, ¿por qué estamos viendo un aumento tan masivo de robos?
Para entenderlo mejor, aclaremos la relación entre blockchain y los contratos inteligentes.
Descentralización
Piense en una red blockchain como la plataforma AWS de Amazon y en cada uno de sus contratos inteligentes como un servidor. Con blockchain, no hay un único servidor centralizado que los piratas informáticos puedan explotar, lo que dificulta que los cibercriminales utilicen métodos de piratería tradicionales, como caballos de Troya, ataques físicos y ransomware. Blockchain contrarresta estos problemas eliminando el único punto de fallo de una red.
Si bien una red blockchain no puede ser hackeada exactamente, muchas aplicaciones distribuidas y contratos inteligentes que blockchain facilita sí pueden.
Gracias al éxito y la influencia cada vez mayores de las finanzas descentralizadas (DeFi), se están canalizando grandes cantidades de valor a través de contratos inteligentes, lo que los hace atractivos para los piratas informáticos. Y es probable que esta amenaza solo aumente a medida que más activos se muevan dentro de la cadena de bloques con el aumento de los activos tokenizados del mundo real. La piratería plantea una grave amenaza para este floreciente sector de la cadena de bloques porque los activos robados de los contratos inteligentes son extremadamente difíciles de recuperar.
Amenazas a los contratos inteligentes
Como todo código, los contratos inteligentes están sujetos a errores humanos. Estos errores pueden presentarse en forma de errores tipográficos, tergiversaciones de especificaciones o errores más graves que pueden usarse para hackear o “engañar” al contrato inteligente. A diferencia de la cadena de bloques, no hay garantía de que los contratos hayan sido revisados o validados por pares.
Si bien una auditoría de contrato inteligente puede evitar errores de codificación, otras amenazas son más complejas. La vulnerabilidad de visibilidad predeterminada, por ejemplo, es un error común que ocurre cuando no se especifica la visibilidad de las funciones y ciertas funciones se dejan públicas. Por ejemplo, los piratas informáticos podrían acceder a la función Mint y crear miles de millones de tokens relevantes. Afortunadamente, esta vulnerabilidad se puede prevenir ejecutando una auditoría que garantice que todas las funciones estén configuradas como privadas de forma predeterminada.
Otra amenaza más complicada y grave causada por errores de codificación es un ataque de reentrada. Esto sucede cuando un atacante aprovecha las llamadas a funciones externas del contrato inteligente e implementa un contrato inteligente malicioso para interactuar con el que contiene los fondos.
En 2016, el incidente DAO, que ocurrió en los primeros días de Ethereum, demostró lo peligroso que puede ser este tipo de ataque y, en última instancia, condujo a la creación de Ethereum Classic. Prevenir los ataques de reentrada no es sencillo, pero existen marcos y protocolos que pueden mitigar el daño, que incluyen CEI (verificación, efectos e interacciones), protectores de reentrada y más.
Si eres competente en el código de contratos inteligentes, leer el código en sí mismo siempre es una gran ventaja. Así como leer un contrato antes de mudarte a un nuevo apartamento te protege de cualquier sorpresa, poder leer el código de un contrato inteligente puede revelar fallas, funciones maliciosas o características que no funcionan o no tienen sentido.
Sin embargo, si usted es un usuario final que no es especialmente experto en tecnología, utilice únicamente contratos inteligentes con código de acceso público que se utilice ampliamente. Esta es la opción preferida, a diferencia de los contratos inteligentes compilados, donde el código está oculto y las personas no pueden revisarlo.
Abordar las vulnerabilidades de los contratos inteligentes
No olvidemos que la mayoría de los administradores de contratos inteligentes se reservan algunos privilegios de administrador, generalmente para realizar cambios posteriores al lanzamiento. Para acceder a estos privilegios, los administradores deben usar sus claves privadas. Estas claves privadas son otra vulnerabilidad y, si no se custodian correctamente (es decir, en una bóveda fría fuera de línea), los piratas informáticos que de alguna manera obtengan acceso pueden realizar cambios en el contrato inteligente y canalizar los fondos a cualquier lugar que deseen.
Recientemente, el Parlamento Europeo ordenó que se utilizara un mecanismo de apagado automático para mitigar los daños en caso de que se vulnerara un contrato inteligente. Si bien la intención de los reguladores era brindar a las personas más protección sobre sus propios datos personales, la ley generó inquietudes en la comunidad Web3.
Si no se implementa correctamente, un interruptor de seguridad podría destruir todo el contrato inteligente y cualquier valor almacenado en él. Una mejor implementación sería activar una función de pausa que, en caso de una amenaza de seguridad, podría congelar el contrato inteligente y reactivarlo una vez que se resuelva el problema.