Время Читать: 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 Просмотры
- Bitcoin
- блокчейн
- соответствие блокчейна
- блочная конференция
- coinbase
- Coingenius
- Консенсус
- криптоконференция
- криптодобыча
- криптовалюта
- децентрализованная
- Defi
- Цифровые активы
- Эфириума
- обучение с помощью машины
- невзаимозаменяемый токен
- Платон
- Платон Ай
- Платон Интеллектуальные данные
- Платоблокчейн
- ПлатонДанные
- платогейминг
- Polygon
- Доказательство доли
- Квиллхэш
- Смарт Контракт Аудит
- Безопасность смарт-контрактов
- Смарт-контракты
- трендов
- W3
- зефирнет