Ataques de denegación de servicio a contratos inteligentes: cómo solucionarlos y evitarlos (una guía de expertos) PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Ataques de denegación de servicio en contratos inteligentes: cómo solucionarlos y evitarlos (una guía de expertos)

Tiempo de lectura: 6 minutos

¿Alguna vez visitó un sitio que tardó mucho tiempo en cargarse y descubrió que no se puede abrir en ese momento? Eso es simplemente todo sobre el efecto de los ataques de denegación de servicio. 

Los ataques de denegación de servicio (DoS) son una de las muchas vulnerabilidades que se buscan principalmente al auditar contratos inteligentes. Este blog tiene como objetivo desentrañar los entresijos del ataque DoS: qué es, su impacto, tipos y mucho más para agregar.

Entremos rápidamente y exploremos todos ellos. 

¿Qué es un ataque DoS?

El ataque DoS tiene la intención de interrumpir las capacidades de procesamiento de una red, servidor o aplicación, impidiendo aceptar las solicitudes de usuarios legítimos. En esto, el atacante abruma la red enviando más tráfico que agota la memoria y el ancho de banda de los servidores. 

Debido al inmenso potencial que tiene blockchain, son el objetivo principal de los ataques DoS para robar las riquezas. Las criptomonedas más famosas, como Bitcoin, Ethereum, etc., también han experimentado ataques DoS. 

Denegación de servicio distribuido (DDoS)

La denegación de servicio distribuida (DDoS) es un ataque DoS en el que el atacante controla varios dispositivos para lanzar un ataque en el nodo de destino.

El atacante observa el nodo de destino y canaliza los múltiples dispositivos bajo su control para enviar una gran cantidad de información que inunda el nodo de destino. Esto hace que el objetivo se bloquee y no pueda cumplir con la tarea especificada.  

Objetivos de los ataques DoS en el ecosistema Blockchain

De las grabaciones de eventos pasados ​​de ataques DoS, cada parte del ecosistema de la cadena de bloques es vulnerable a los ataques DoS. Y por nombrar algunos, 

Monederos de criptomonedas: Como cualquier monedero, el monedero de criptomonedas se utiliza para almacenar, enviar o recibir criptomonedas. Y esas billeteras en línea usan contratos inteligentes, que son propensos a ataques DoS que dificultan sus servicios e interacción con Dapps. 

Servicios de intercambio de criptomonedas: La plataforma en línea en la que se intercambian criptomonedas y el intercambio se produce entre usuarios. Son los principales objetivos de los piratas informáticos para realizar ataques DoS que provocan la falta de disponibilidad de la plataforma y sus servicios. 

Ej: plataforma de intercambio de Bitcoin, Bifinex ha sufrido ataques DDoS varias veces. 

Grupos de memoria (transacción): Las transacciones en la cadena de bloques deben validarse antes de que se agreguen a los bloques. Hasta entonces, las solicitudes de transacción se almacenan en el mempool, que es como un depósito de transacciones no confirmadas que esperan ser seleccionadas por un minero. 

Es más probable que el minero elija la transacción con una tarifa alta. Por lo tanto, inundar el mempool con muchas transacciones de tarifas pequeñas hace que el usuario pague tarifas altas para procesar su transacción. Por lo tanto, el ataque DoS ha hecho su magia al aumentar la tarifa de procesamiento. 

Participantes del consenso: Son los jugadores que resuelven la lógica y deciden los bloques que se agregarán a la cadena de bloques. Infligir ataques DoS al líder de consenso detiene todo el sistema. 

Servicios de mezcla: Emplea un protocolo para que los usuarios realicen transacciones de forma anónima. Sufren ataques DoS por varios medios, como solicitudes de participación excesivas en el grupo de mezcla, entrada inconsistente para la reproducción aleatoria, etc. 

Contratos inteligentes: El contrato inteligente es el protocolo subyacente detrás de cada transacción en la cadena de bloques. Los ataques DoS a los contratos inteligentes pueden bloquear el nodo que detiene el funcionamiento de las Dapps alojadas por él.

Los ataques DoS se realizan sobre ellos de varias maneras posibles, detalladas en la siguiente sección.

Análisis de tipos de ataques DoS de contratos inteligentes 

La vulnerabilidad DoS en los contratos inteligentes da como resultado el uso ilimitado de recursos o la manipulación del contrato. Esto conduce a la suspensión en la ejecución de las actividades normales o interrumpe y colapsa la lógica del contrato. 

A continuación se encuentra la clasificación de varios ataques DoS en contratos inteligentes

DoS de reversión inesperada

Para estudiar este ataque DoS a los contratos inteligentes, tomemos un contrato de subasta como ejemplo. El contrato de subasta se actualiza con cada oferta más alta recibida y devuelve el monto de la oferta del postor anterior, ya que es más bajo que la oferta actual.

contract Auction {
    address frontRunner;
    uint256 highestBid;

    function bid() public payable {
        require(msg.value > highestBid, "Need to be higher than highest bid");
        // Refund the old leader, if it fails then revert   
        require(payable(frontRunner).send(highestBid), "Failed to send Ether");
 
        frontRunner = msg.sender;
        highestBid = msg.value;
    }
}

El contrato atacante se inicializa con el contrato de subasta en el constructor, que accede al contrato de subasta. En esto, al llamar a la función 'ataque()', el atacante bloquea el monto y, por lo tanto, no puede devolver el monto de la oferta al atacante, incluso al recibir una oferta más alta que esa. 

import "./Auction.sol";   
contract Attacker{
    Auction auction;

    constructor(Auction _auctionaddr){
        auction = Auction(_auctionaddr);
    }

    function attack (){
        auction.bid{value: msg.value}();
    }

}

Esto se debe a que el contrato del 'atacante' no incluye ninguna función 'recibir ()' o alternativa para reembolsar Ether, lo que resulta en una reversión inesperada. Esto hace que el atacante se comprometa a ser siempre el mejor postor. 

DoS de límite de gas de bloque 

El bloque tiene un límite máximo de gas a gastar que es proporcional a la cantidad de trabajo computacional a realizar. En caso de exceder el límite de gas, conduce a dos tipos de ataques DoS.

DoS de límite de gas: operación de contrato ilimitada

Hay un límite de gas establecido, y si las transacciones alcanzan un límite de gas más alto que el límite establecido, la transacción fallará. 

Se vuelve aún peor cuando el atacante manipula el gas necesario. Es entonces cuando el atacante agrega algunas direcciones por un reembolso muy pequeño. Cada reembolso cuesta una tarifa de gas; por lo tanto, el costo del gas supera el límite que impide que se realicen las transacciones de reembolso. 

struct Payee {
    address addr;
    uint256 value;
}

Payee[] payees;
uint256 nextPayeeIndex;

function payOut() {
    uint256 i = nextPayeeIndex;
    while (i < payees.length && msg.gas > 200000) {
      payees[i].addr.send(payees[i].value);
      i++;
    }
    nextPayeeIndex = i;
}

Por lo tanto, se deben considerar los pasos necesarios al implementar un bucle sobre una matriz. 

relleno de bloque

El atacante inicia este ataque para evitar que las transacciones se agreguen a los bloques mediante el envío de transacciones computacionalmente intensivas con altos precios de gasolina. Se emiten varias transacciones de manera similar para consumir todo el límite de gas. 

Al pagar la alta tarifa de gas, el atacante se asegura de que solo las transacciones previstas se agreguen a los bloques, dejando fuera el resto. 

Acción del propietario

Cada contrato tiene una dirección de propietario que tiene la autoridad para abrir o suspender transacciones. Toda la operación depende de la dirección del propietario, por lo que si se pierde, el usuario no puede enviar tokens y el funcionamiento del contrato colapsará.

Impacto del ataque DoS

El relleno de bloques es uno de los muchos impactos que impiden que se agreguen transacciones legítimas a los bloques. Sin embargo, hay varios otros impactos de los ataques DoS. 

Libro mayor inflado: El libro mayor de blockchain es donde las transacciones se registran de forma permanente. Los nodos de blockchain almacenan una copia de las transacciones para verificar los gastos dobles. Un ataque DoS puede inflar el libro mayor con transacciones de spam.

Tráfico de red: Conocemos las funciones de blockchain basadas en el modo peer-to-peer. Cada nodo en la cadena de bloques recibe una copia de la transacción. Una inundación DoS puede resultar en un gran volumen de transacciones, consumiendo el ancho de banda de la red. 

Fallos de nodo: Blockchain funciona en los nodos que requieren el soporte del software para manejar grandes volúmenes de datos. Durante la inundación de transacciones, los nodos pueden quedarse sin memoria, lo que detiene las operaciones.

Bloqueo de software: Como comentamos, el mempool o los bloques vienen con ciertos límites en la memoria que se les asigna. El software recibe, procesa y almacena transacciones dentro del límite establecido. Cuando las transacciones entrantes superan los límites integrados, el software falla.  

Restrinja los contratos inteligentes de los ataques DoS 

A partir del análisis de los ataques DoS, se pueden emplear las siguientes formas para mitigar el ataque. 

Rompecabezas: Los servidores pueden generar acertijos como acertijos de memoria, acertijos de bloqueo de tiempo, acertijos vinculados a la CPU, etc. Para que un usuario obtenga acceso a un servicio, los acertijos deben resolverse, lo que combate los ataques de spam.

Enfoque basado en tarifas: Se puede imponer una tarifa adicional a la cadena de bloques, como tarifas de minería para grupos de minería, tarifas de transacción, etc. Esto hace que el ataque DoS sea costoso para los atacantes, lo que reduce dichos ataques. 

Nota final

Una auditoría de contrato inteligente realizada en QuillAuditorias busca las posibles vulnerabilidades que se encuentran en la codificación. Algunos de ellos incluyen vulnerabilidad de reingreso, colisión de almacenamiento, ataque aleatorio, denegación de servicio, etc. 

Esto claramente significa que el contratos inteligentes se prueban minuciosamente para estar libres de amenazas de ataques de denegación de servicio. Esto asegura que su proyecto esté protegido de las posibles vulnerabilidades del espacio Web3.

Esté atento a nuestro canal de Telegram para recopilar las últimas novedades sobre nuestros servicios: https://t.me/quillhash

13 Vistas

Sello de tiempo:

Mas de hachís