GitHub
makina-periphery/src/oracles/MachineShareOracle.sol at main · MakinaHQ/makina-periphery
Makina periphery smart contracts. Contribute to MakinaHQ/makina-periphery development by creating an account on GitHub.

Telegram
Noobing Security Research
Уязвимость: Price Oracle Manipulation Это критическая уязвимость может быть обнаружена/использована в контрактах, которые зависят от внешних источников данных о цене актива. Схема действия достаточно проста: пользователь собирается купить ETH через ваш контракт за USDC/USDT, контракт принимает сумму, на которую следует совершить обмен, а для расчета покупки используется функция, возвращающая текущую стоимость актива при его покупке например на Uniswap Перед тем, как транзакция выполняется, происходит покупка большого количества одного токена из пары (часто с использованием flash loan буквально на миллиарды долларов), что искажает пропорцию активов в пуле —> искажает цену —> покупка проходит по невыгодной цене —> внесенная ранее ликвидность выносится из пула Либо наоборот, атакующий покупает актив по очень выгодной цене, в зависимости от стратегии атаки Пример Схему на изображении надо читать следующим образом: красные стрелки это путь средств "вглубь" атакуемого контракта, зеленые - это вынос. Все действия происходят в рамках одной транзакции. Схема упрощенная, но суть от этого не меняется Атакуемый контракт называется NFT Protocol, он позволяет купить NFT за 10 долларов 1. Атакующий (Flash Loan Receiver), получает займ 2. Первоначальная цена NFT при составляет 10 USDC или 1 ETH 4. Атакующий свапает на TSwap USDC на WETH (то есть выкупает ETH, эфира остается мало в пуле), меняя таким образом первоначальную пропорцию с 100 к 10 на 1000 к 1 5. 1 ETH теперь стоит 1000 USDC 6. Так как атакующий контракт берет информацию о цене эфира с TSWAP, то продажа NFT с контракта атакующему происходит за 0.01 ETH вместо 1 ETH 7. Атакующий продает NFT в другом месте за полную стоимость 8. Атакующий свапает ETH на USDC обратно, возвращая TSWAP пул в нормальное состояние 9. Атакующий возвращает Flash Loan + комиссии за использование средств 10. Профит атакующего равен цена NFT - комиссии за флешлоан Как защититься - Собирать данные по цене из нескольких источников - Установить пороговые значения для цен - Поставить таймлок на обновление цены, чтобы не допустить мгновенных колебаний - Запрашивать подписи от поставщиков цен Схему взял отсюда

Telegram
Noobing Security Research
Ethereum is a dark forest Знакомы ли вы с концепцией темного леса? В последнее время в моем инфополе она чаще всего звучала в контексте сериала «задача трех тел» Если коротко, в темном лесу водятся монстры. Единственный способ выжить - либо быть самым сильным, либо не подавать признаков жизни. Подробнее на Википедии Казалось бы, при чем тут аудит смарт контрактов? Дело в том, что в сети эфира водятся монстры flashbots, которые слушают наши транзакции. И в случае, когда потенциальный профит превосходит затраты на исполнение, они атакуют Таким образом атакующий вектор находится вне плоскости программного слоя, в слое самой сети. Это становится возможным, потому что: - Все транзакции перед включением в блок попадают в mempool, так устроена сеть Ethereum. Мемпул место прозрачное, доступное для чтения - Приоритет газа существует, увеличив газ можно поставить свою транзакцию вперед других К чему приводит такой порядок дел В основном к тому, что атакующий пытается закинуть транзакцию перед или сразу после интересующей его транзакции, либо провести сэндвич-атаку, когда атакуемая транзакция «оборачивается» с двух сторон в манипулятивные транзы. По такому же принципу происходит flashloan атака, писал про нее тут, только там атакующий пишет контракт, а не ловит интересующую его транзакцию в мемпуле В случае, если в вашем контракте неправильно прописаны трансферы, например вы не проверяете кто инициализирует трансфер, флэшбот может воспользоваться этой дырой для вывода средств с контракта как только увидит такую транзакцию в мемпуле Очень крутая статья 2020 года про то как ребята пытались вытащить 12к$, которые застряли на видном, но еще не обнаруженном флешботами месте. Спойлер: ⡘⡌⡃⠍⣠⠘⠲ ⡢⠑⠨⢌⢅⠇⠱⣐ ⠦⠅⢅⢢⢨⠨⡢⠆⡂⢃⢄ ⠬⠇⠅ ⠆⠍⡁⠢⠖⠅ ⡉⠃⠴⢠⠴⡤ ⡆⢠⠱⠡⢈⠦⠢⠌⠎ ⠊ ⡡⠑⠴⠎ Ужас, но не ужас-ужас-ужас В основном флэшботы крутятся вокруг DEX, они арбитражат разность курсов и тем самым вообще-то выполняют очень важную функцию целостности цен по всему маркету. Могут правда зацепиться за крупные транзы и внести манипулятивную составляющую, которая неизбежно возникнет при крупной сделке. Могут подсунуть не самый выгодный курс, вынудив купить по бОльшей цене. Так же они могут первыми показывать на позиции, требующие ликвидации, получая за это бонус. Есть экзотические атаки, трудно выполняемые в текущих условиях сети эфира, но которые вполне серьезно обсуждались до The Merge (переход с PoW на PoS) типа Fee-based forking attacks или Time-bandit attacks. На них я останавливаться не буду, по крайней мере сейчас К посту прикладываю одну из первых системных статей по теме, она 2019 года. Какие-то части чуть устарели, но в ней классно описан математически аппарат того, как боты действуют, что лежит в основе их конкуренции и сотрудничества. Любителям теории игр будет интересно Это первый пост вводный пост по теме flashbots, дальше будет подробнее про виды атак, про способы защиты ваших протоколов и еще больше источников и статей https://t.me/web3securityresearch