• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Как устоять когда тянут ковёр

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$10 на gas для Jolah Molivski ---> 0x69946dD429030F8E74b3B8eB092542d09BdeD3ed
Зачин
В английском лексиконе вытащить коврик (из-под кого-то) означает внезапно лишить важной поддержки (от кого-то). В контексте криптографии и децентрализованных финансов (DeFi) вытягивание означает удаление ликвидности из пула ликвидности децентрализованной биржи (DEX). Это приводит к неминуемому падению продаж поскольку другие поставщики ликвидности, держатели и трейдеры паникуют из-за потери ликвидности. После истощения ликвидности держатели токенов обычно остаются с неликвидными активами, которыми невозможно торговать где-либо еще. Стоит отметить, что многие проекты предприняли меры для снижения рисков, связанных с вытягиванием ковров, путем предоставления определенного уровня ликвидности таким образом, который нельзя удалить (например, сжигание токенов LP, контракт на блокировку ликвидности и т. д.). Тем не менее, это не полностью устраняет риски мошенничества, и участники рынка должны проводить комплексную проверку до начала торговли.

Как злоумышленники могут обмануть вас с помощью обозревателей блоков


Службы индексации блокчейна полагаются на события в контрактах, чтобы помочь архивировать данные и предоставить вам запись о транзакции в удобном пользовательском интерфейсе, обычно называемом «обозревателем блоков», например Etherscan . Контракт со злым умыслом может вести себя как «нормальный», но марать эти события, чтобы обмануть обозреватели блоков и выдать вводящую в заблуждение информацию о том, откуда появился токен, ничего не подозревающим пользователям.

Например, злоумышленник может развернуть простой контракт ERC20 и «аирдропнуть» его группе пользователей, создать хорошо выглядящий пул ликвидности на автоматизированном маркет-мейкере и ждать, пока пользователи либо купят, либо продадут на основе неуместной шумихи из-за мыслейо том, что токен является разработкой известного разработчика/организации.

Наелись


Токен ERC20 (который является общим стандартом интерфейсов токенов) представляет собой набор свойств, функций, переменныхи событий для контракта. Пока в нашем контракте есть правильные функции, у нас может быть собственная логика в этих функциях — даже тех, которые предоставляют неверные данные / сродни обфускации кода, (прим пер) /.
Например, мы можем сделать так, чтобы обозреватели блоков показывали конечному пользователю другой адрес (в некоторых представлениях), если развертыватель контракта отправляет им токен. Предположим следующее;
  • Развертыватель контракта является злонамеренным и хочет создать шумиху вокруг своего токена.
  • У токена есть некоторая ликвидность в AMM (например, Uniswap), которую пользователи могут покупать / продавать, при этом основная позиция поставщика ликвидности принадлежит группе, стоящей за токеном (читай: возможное вытягивание коврика )
  • Поддельный отправитель известен многим пользователям, а не какой-то случайный адрес

Также имейте в виду, что это не является исключительным для ERC20, "загрязненные" данные могут быть вставлены в любые стандартные события токенов, такие как NFT ( ERC721 , ERC1155 ), чтобы сбить пользователей и потенциальных инвесторов с толку, думая, что у проекта есть определенные заинтересованные стороны / влиятельные лица, когда на самом деле это не так.
Когда обозреватель блоков видит событие, инициированное транзакцией, он регистрирует его в своей автономной базе данных и выстраивает логику с другими фрагментами данных, чтобы построить хороший реляционный граф транзакций для отображения конечному пользователю в своем пользовательском интерфейсе.

Доказательство концепции


Мы развернем контракт для проверки концепции , используя старую версию Solidity (из-за того, что большая часть кода была разветвлена из репозитория, сделанного 4 года назад ), но также чтобы продемонстрировать, что это не проблема версий Solidity или что-либо в Ethereum, но проблема доверия к контрактам с приложениями вне сети, доверяющими событиям, испускаемым из потенциально ненадежных контрактов. Вообще говоря, наследование доверия к «правильному» событию — это нормально , это способ для контрактов предоставить полезные данные программам вне сети для индексации.

1662858537603.png


В вышеуказанном договоре (расположенном по адресу 0x3afe99bd92b1aed3237196b26743681766d4940e), мы изменили логику, чтобы изменить адрес отправителя в событии Transfer, чтобы он был помечен как «OpenSea: Wallet» адрес в популярных обозревателях блоков только в том случае, если мы (тот, кто создал контракт) отправляет токены.
Это означает, что когда обозреватель блоков индексирует это событие, он видит из события Transfer, что адрес 0x5b32…1073 отправил токены вместо фактического инициатора 0x11b6…04C9, что может привести к тому, что этот метод будет использоваться злоумышленниками, чтобы обмануть пользователей. ;
  • известная личность заинтересована в токене
  • Популярная фигура сбрасывает большую часть токенов
  • Токен является законным, потому что в обозревателях блоков он показывает известные сущности, «взаимодействующие» с контрактом токена.
Вызываем transfer() с адреса развертывателя контракта и посмотрите, что индексирует обозреватель блоков. Помните, мы просто перемещаем токены с моего адреса (0x11b6...04C9) на нужный мне (0x4bbe...1520). «OpenSea: кошелек» ERC20 Activity показывает, что, похоже, он отправил токен с именем OpenSeaRevenueShare в пункт назначения.

1662859124244.png


Транзакция указывает (в разделе «Токены переданы»), что «OpenSea: кошелек» отправил токены на адрес назначения.

1662859176758.png


Адрес назначения показывает, что «OpenSea: Wallet» перевел им 10 токенов.

1662859240388.png



"РАЗУЙ" ГЛАЗА


Хотя большинство вредоносных контрактов, которые делают это для использования пользователей, не «проверяются», поскольку мы видим только байт блоки, пользователям может быть сложно проверить, наполнены ли события неверными данными на основе какого-либо условия, как в нашем доказательстве. Если контракт не проверен, например, вы не можете видеть код Solidity/Vyper и вам доступен только байт-код, то вам в любом случае следует принять меры предосторожности, прежде чем взаимодействовать с контрактом.

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

Один быстрый способ, хотя и ненадежный из-за контрактов с несколькими отправителями для аирдропов, состоит в том, чтобы проверить, соответствуют ли параметры события инициатору транзакции. Например, если поле транзакции «От» не соответствует событию, действуйте с осторожностью НЕ ПОКУПАЙТЕ ЭТОТ ТОКЕН!!!!! /прим. пер/

1662859647832.png


Методы наполнения событий неверными данными продолжают развиваться. Например, если мы запустим следующий запрос в Google BigQuery, то сможем узнать о том, что происходит с контрактами, генерирующими события, чтобы обмануть индексаторов, заставив их думать, что Виталик Бутерин (0xab5801a7d398351b8be11c439e05c5b3259aec9b) использует их токен.

1662859780304.png


Примеры обмана


ЭлонПлэйд (0x907f3040e13bd57f3b00f89bb8ee19424a95b065)


Transfer() событие содержит адрес Виталика Бутерина в конструкторе

1662859966263.png



Генерация события Transfer() с адресом Виталика Бутерина при открытии торгов с токеном

1662860059586.png


  1. Создатель контракта предоставил ликвидность на DEX (стоимостью 4ETH)
  2. Три дня спустя ликвидность 6ETH была удалена, что укрепило проект для получения прибыли в 2ETH.


Кеншаину (0x3a7eaa257181719965f8ebe64bb7c13ffbbca36b)

Transfer() с использованием адреса Виталика Бутерина в конструкторе

1662860214401.png


IronDoge (0xf6072df56114e1a1c76fe04fb310d468c9ba8c38)


Transfer() с использованием адреса Виталика Бутерина в конструкторе

1662860296037.png


  1. Создатель контракта предоставил ликвидность на DEX (стоимостью 4ETH)

Через день удалил ликвидность , что укрепило проект и принесло прибыль в размере 1,8 ETH.


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

ПОЧИН

Хотя обозреватели блоков чрезвычайно полезны для визуализации данных блокчейна, их логика может быть использована для отображения вводящих в заблуждение/неправильных данных. Кажется уместным напомнить вам о старой поговорке о блокчейне «Не доверяй, проверяй», особенно когда мы все доверяем обозревателям блоков, чтобы они давали абсолютно точные данные, и не думали о том, как они интерпретируют данные.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх