Атаки типа «отказ в обслуживании» на смарт-контракты: как исправить и избежать (Руководство для экспертов) PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Атаки типа «отказ в обслуживании» на смарт-контракты: как исправить и избежать (экспертное руководство)

Время Читать: 6 минут

Вы когда-нибудь посещали сайт, загрузка которого занимала много времени, и обнаруживали, что в данный момент его невозможно открыть? Вот и все, что касается эффекта атак типа «отказ в обслуживании». 

Атаки типа «отказ в обслуживании» (DoS) — одна из многих уязвимостей, на которые обращают особое внимание при аудите смарт-контрактов. Этот блог направлен на то, чтобы раскрыть все тонкости DoS-атаки: что это такое, ее влияние, типы и многое другое, что можно добавить.

Давайте быстро войдем и изучим их все. 

Что такое DoS-атака?

DoS-атака направлена ​​на то, чтобы нарушить возможности обработки сети, сервера или приложения, не позволяя принимать запросы от законных пользователей. При этом злоумышленник перегружает сеть, отправляя больше трафика, который истощает память и пропускную способность серверов. 

Из-за огромного потенциала, которым обладает блокчейн, они являются основной целью DoS-атак для кражи богатства. Самые известные криптовалюты, такие как биткойн, Эфириуми т. д., также подвергались DoS-атакам. 

Распределенный отказ в обслуживании (DDoS)

Распределенный отказ в обслуживании (DDoS) — это DoS-атака, в которой злоумышленник контролирует несколько устройств для запуска атаки на целевой узел.

Злоумышленник наблюдает за целевым узлом и направляет несколько устройств, находящихся под его контролем, для отправки большого количества информации, наводняющей целевой узел. Это приводит к сбою цели и невозможности выполнить указанную задачу.  

Цели DoS-атак в экосистеме блокчейна

Судя по записям прошлых событий DoS-атак, каждая часть экосистемы блокчейна уязвима для DoS-атак. И чтобы назвать несколько, 

Криптовалютные кошельки: Как и любой кошелек, криптовалютный кошелек используется для хранения, отправки или получения криптовалюты. И эти онлайн-кошельки используют смарт-контракты, которые подвержены DoS-атакам, которые препятствуют их обслуживанию и взаимодействию с Dapps. 

Сервисы обмена криптовалют: Онлайн-платформа, на которой торгуются криптовалюты, а обмен происходит между пользователями. Они являются основными целями хакеров для выполнения DoS-атак, которые приводят к недоступности платформы и ее сервисов. 

Пример: платформа обмена биткойнами Bifinex несколько раз подвергалась DDoS-атакам. 

Пулы памяти (транзакций): Транзакции в блокчейне должны быть проверены, прежде чем они будут добавлены в блоки. До тех пор запросы транзакций хранятся в мемпуле, который похож на хранилище неподтвержденных транзакций, ожидающих выбора майнером. 

Транзакция с высокой комиссией, скорее всего, будет выбрана майнером. Таким образом, заполнение мемпула множеством транзакций с небольшими комиссиями приводит к тому, что пользователь платит высокие комиссии за обработку своей транзакции. Таким образом, DoS-атака сотворила свое волшебство, повысив плату за обработку. 

Участники консенсуса: Это игроки, которые решают логику и решают, какие блоки будут добавлены в блокчейн. Нанесение DoS-атак на лидера консенсуса останавливает всю систему. 

Услуги миксера: Он использует протокол для анонимного выполнения пользователями транзакций. Они подвергаются DoS-атакам различными способами, такими как чрезмерные запросы на участие в микшерном пуле, несогласованный ввод для перемешивания и т. д. 

Смарт-контракты: Смарт-контракт — это базовый протокол, лежащий в основе каждой транзакции в блокчейне. DoS-атаки на смарт-контракты могут привести к сбою узла, который остановит функционирование размещенных на нем Dapps.

DoS-атаки выполняются на них несколькими возможными способами, подробно описанными в следующем разделе.

Анализ типов DoS-атак на смарт-контракты 

Уязвимость DoS в смарт-контрактах приводит к неограниченному использованию ресурсов или манипулированию контрактом. Это приводит к приостановке выполнения обычной деятельности или прерывает и разрушает логику контракта. 

Ниже приведена классификация различных DoS-атак в смарт-контрактах.

Неожиданный возврат DoS

Чтобы изучить эту DoS-атаку на смарт-контракты, давайте возьмем в качестве примера аукционный контракт. Аукционный контракт обновляется с каждой полученной наивысшей ставкой и возвращает сумму ставки предыдущего участника торгов, поскольку она ниже текущей ставки.

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;
    }
}

Контракт злоумышленника инициализируется контрактом аукциона в конструкторе, который получает доступ к контракту аукциона. В этом случае, вызывая функцию «атака()», злоумышленник блокирует сумму и, таким образом, не может вернуть сумму ставки злоумышленнику даже при получении более высокой ставки, чем эта. 

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

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

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

}

Это связано с тем, что контракт «злоумышленника» не включает в себя функцию «receive ()» или резервную функцию для возврата эфира, что приводит к неожиданному возврату. Это заставляет злоумышленника всегда предлагать самую высокую цену. 

Блокировка лимита газа DoS 

Блок имеет максимальный лимит расходуемого газа, который пропорционален объему вычислительной работы, которую необходимо выполнить. В случае превышения лимита газа это приводит к двум типам DoS-атак.

Gas Limit DoS — неограниченная работа контракта

Существует установленный лимит газа, и если транзакции достигают более высокого лимита газа, чем установленный лимит, это приводит к сбою транзакции. 

Еще хуже становится, когда злоумышленник манипулирует необходимым газом. Это когда злоумышленник добавляет несколько адресов за очень небольшой возврат. Каждый возврат стоит плата за газ; таким образом, стоимость газа превышает предел, который препятствует проведению транзакций возмещения. 

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;
}

Следовательно, необходимо учитывать необходимые шаги при реализации цикла над массивом. 

Блочная начинка

Злоумышленник инициирует эту атаку, чтобы предотвратить добавление транзакций к блокам, отправляя транзакции с интенсивными вычислениями с высокими ценами на газ. Аналогичным образом оформляется несколько транзакций, чтобы израсходовать весь лимит газа. 

Заплатив высокую комиссию за газ, злоумышленник гарантирует, что только предполагаемые транзакции будут добавлены в блоки, а остальные не включены. 

Действия владельца

У каждого контракта есть адрес владельца, который имеет право открывать или приостанавливать транзакции. Вся операция зависит от адреса владельца, поэтому при его утере пользователь вообще не сможет отправить токены, и работа контракта рухнет.

Влияние DoS-атаки

Наполнение блоков — одно из многих воздействий, препятствующих добавлению законных транзакций в блоки. Однако есть несколько других последствий DoS-атак. 

Раздутый реестр: Журнал блокчейна — это место, где транзакции записываются постоянно. Узлы блокчейна хранят копии транзакций для проверки двойных трат. Атака DoS может раздуть реестр спам-транзакциями.

Сетевой трафик: Нам известны функции блокчейна, основанные на одноранговом режиме. Каждый узел в блокчейне получает копию транзакции. DoS-лавинная рассылка может привести к большому объему транзакций, потребляющему пропускную способность сети. 

Сбои узла: Блокчейн функционирует на узлах, которым требуется поддержка программного обеспечения для обработки больших объемов данных. Во время флуда транзакций узлам может не хватить памяти, что приведет к остановке операций.

Программный сбой: Как мы уже говорили, мемпул или блоки имеют определенные ограничения на выделенную им память. Программа принимает, обрабатывает и хранит транзакции в пределах установленного лимита. Когда входящие транзакции превышают встроенные лимиты, происходит сбой программного обеспечения.  

Защитите смарт-контракты от DoS-атак 

Исходя из анализа DoS-атак, для смягчения атаки можно использовать следующие способы. 

Загадки: Серверы могут генерировать головоломки, такие как головоломки с памятью, головоломки с блокировкой времени, головоломки с привязкой к ЦП и т. Д. Чтобы пользователь получил доступ к службе, головоломки должны быть решены, что борется со спам-атаками.

Платный подход: На блокчейн может быть наложена дополнительная плата, такая как плата за майнинг для майнинговых пулов, комиссия за транзакции и т. д. Это делает взлом DoS дорогостоящим для злоумышленников, тем самым снижая такие атаки. 

Заключительная записка

Аудит смарт-контракта, выполненный в QuillAudits ищет потенциальные уязвимости, которые кроются в кодировании. Некоторые из них включают уязвимость повторного входа, коллизию хранилища, атаку случайности, отказ в обслуживании и так далее. 

Это явно означает умные контракты тщательно протестированы на отсутствие угроз атаки типа «отказ в обслуживании». Это гарантирует, что ваш проект защищен от возможных уязвимостей пространства Web3.

Следите за нашим каналом в Telegram, чтобы получать самую свежую информацию о наших услугах: https://t.me/quillhash

13 Просмотры

Отметка времени:

Больше от Квиллхэш