<<  >> (p.2)
    Author Topic: DeFi - "Атаки" и Безопасность  (Read 14223 times)
    zasad@ (OP)
    Legendary
    *
    Offline

    Activity: 2576
    Merit: 5752


    #kycfree 🗽


    View Profile WWW
    April 21, 2020, 11:42:12 AM
    Merited by Symmetrick (2)
     #21

    https://defiweekly.substack.com/p/special-edition-imbtc-uniswap-and
    Special Edition: imBTC, Uniswap & dForce
    Kerman Kohli (С)
    21 апреля 2020

    Специальный выпуск: imBTC, Uniswap & dForce

    Frank Topbottom  расшифровывает кучу данных в блокчейне. Следите за ним, чтобы оставаться в курсе происходящих сложных технических ситуаций, подобных этим.
    https://twitter.com/FrankResearcher

    Глоссарий
    Вот приблизительное оглавление статьи, не стесняйтесь переходить к любому разделу, который вам интересен:

    AMM 101 - понимание того, как  AMM curves работают на очень высоком уровне

    Reentrancy 101 - понимание, что такое атака повторного входа и как она работает

    Uniswap x imBTC - начальная атака с использованием Uniswap

    Force x imBTC - вторая атака с участием dForce и потерей 20 миллионов долларов

    Hacker x dForce - dForce ведет переговоры с хакером по цепочке (да, я не шучу)

    Последствия - что мы можем узнать, кто за что отвечает

    Закрытие - размышление о том, как мы действовали как сообщество и как может выглядеть будущее

    AMM 101
    Automated Market Makers - это биржи, у которых нет "стаканов". Цена определяется соотношением активов на бирже. Обмен опирается на формулу ниже:

    х * у = к

    х = первый актив (эфир)

    у = второй актив (немного токена)

    k = константа, которая всегда должна оставаться неизменной

    Вот маленькие картинки, которые демонстрируют, как это выглядит практически:



    Черная линия обозначена х * у

    Градиент в любой точке кривой указывает цену между ETH Token. В середине у вас есть реальная цена, чем дальше вы уходите, тем больше отклонений.

    Чтобы двигаться вверх к верхней левой части кривой, вам нужно иметь много ETH в пуле и не так много токенов. На данный момент токены очень дороги (для покупки небольшого количества токенов требуется много ETH).

    Чтобы двигаться вниз к правому нижнему краю кривой, вам нужно иметь много токенов в пуле и немного ETH. Токены очень дешевы на данный момент (много требуемых токенов можно приобрести с небольшим количеством ETH).

    Я напишу гораздо более подробный пост в еженедельнике DeFi о AMM и о том, кто чем занимается, но сейчас этого должно быть достаточно, чтобы понять атаку, которая произошла.

    Reentrancy 101
    Вторым компонентом нашего понимания атак,  является то, что называется атакой повторного входа.
    Проще говоря, повторная атака - это когда неожиданный код вызывается между существующим кодом. Как это работает? Давайте посмотрим на самую известную атаку с повторным входом: взлом DAO 2016 года.


    Атакующий создает контракт, из которого он выполняет атаку. Этот контракт имеет две функции. Один для вывода ETH из DAO, второй, который вызывается при получении ETH (стандартная часть любого контракта Solidity )

    Контракт вызывает функцию вывода средств и первая строка функции вывода средств заключается в отправке ETH лицу которое запросило вывод средств

    Поскольку запрашивающий является контрактом и может вызвать функцию, когда он получает ETH, то он, в свою очередь, снова вызывает функцию вывода по контракту DAO!

    Он продолжает повторять это до тех пор, пока его баланс не будет обновлен, но только для 1 снятия, а не суммы ETH, которую он фактически снял!

    Сообщество усвоило этот урок за изрядную цену хард-форка, однако, что делает наш случай интересным, так это то, что новый стандарт токенов, ERC-777, фактически вводит преднамеренную уязвимость повторного входа, вызывая отправителя перевода перед отправкой токенов. !
    Не беспокойтесь, если эта информация сложная для понимания, ниже вы найдете больше фотографий для изучения.

    Uniswap x imBTC
    То, что делает Uniswap удивительным обменом, заключается в том, что любой может перечислить любой токен без какого-либо разрешения! Когда Uniswap выпустил v1 более года назад, Consensys Dilligence провела аудит Uniswap и обнаружила потенциальный вектор атаки с использованием стандарта токенов ERC-777 и Uniswap (https://medium.com/consensys-diligence/uniswap-audit-b90335ac007) Фактически, Open Zeppelin решил сделать еще один шаг и создать учебник о том, как использовать эксплойт с кодом  для помощи будущему злоумышленнику:
    https://blog.openzeppelin.com/exploiting-uniswap-from-reentrancy-to-actual-profit



    Теперь, когда пул imBTC Uniswap достиг большого размера, кто-то подумал: «Эй, это может сработать». Они дали ему шанс и оказалось, что это действительно так!

    https://bloxy.info/tx/0x206e874ac4645b82806dc06b3ec34c5faa4313d584c9e8688b10697a753eecdb

    Так что же случилось именно? Вот что:

    Атакующий покупает imBTC из пула через Uniswap. Баланс ETH увеличился, а imBTC уменьшился.

    Затем он продает половину купленного imBTC из пула, однако, поскольку он продает imBTC, баланс imBTC не уменьшился

    Это происходит из-за повторной атаки ERC-777, так как на самом деле он не продает imBTC, а эффективно истощает пул ETH Uniswap ETH!

    Атакующий зарабатывает не деньги с imBTC, а ETH из пула. Uniswap LPs для imBTC были настоящими неудачниками.

    В данный момент токены сменили владельца, однако Uniswap не знает, что было сделано несколько вызовов, предполагается, что был сделан только один. Из-за этого он опирается на ошибочные предположения о том, что это за числа, и позволяет атакующему манипулировать математикой кривой. Я убежал на звонок с Майклом (основателем Curve), чтобы лучше понять, как это работает в большем разрешении. Ниже приведены заметки, которые я сделал с примерами номеров, чтобы лучше понять цифры:


    ▄███████████████████████▄
    ███████████████████████
    ████████████▀▀██████████
    ████████████████████████
    ██████████▄▄██████████
    █████████████████████
    ███████████████████████
    █████████████████████
    ██████████▀▀██████████
    ████████████████████████
    ██████████▄▄████████████
    ███████████████████████
    ▀███████████████████████▀
     
     MoBit 
    ████
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ████
     NO   LOGS
     
     LOW  FEES
     
     PGP  GUARANTEE
    ████
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ██
    ████
    ▄██████▄▄▄
    █████████████▄▄
    ███████████████
    ███████████████
    ███████████████
    ███████████████
    ███░░█████████
    ███▌▐█████████
    █████████████
    ███████████▀
    ██████████▀
    ████████▀
    ▀██▀▀
Page 1
Viewing Page: 2