Мы недавно опубликовали исследование «Конфиденциальность и вопросы безопасности в Веб 3.0» на сайте arXiv, и хотим вкратце описать наши выводы и рассказать, что они значат для пользователей Brave.

Децентрализованные финансы (DeFi) напоминают финансовый Дикий Запад: новые сайты появляются и исчезают каждый день, люди зарабатывают и теряют огромные деньги, а гарантии безопасности и вообще какой бы то ни было осмысленный контроль за происходящим отсутствуют. Какую роль безопасность и конфиденциальность играют во всём этом? Мы решили разобраться.

Трекеры повсюду

Мы начали с того, что собрали список из 78 сайтов, занимающихся децентрализованными финансами (DeFi), включая топ-50 по общей стоимости заблокированных активов (TVL), и написали краулер, который анализировал безопасность и конфиденциальность этих сайтов (полный список в конце поста). 

Мы обнаружили, что, несмотря на их легковесные фронтэнды, некоторые DeFi-сайты пользуются сторонними скриптами и иногда даже передают им ваш Ethereum-адрес (в основном для API и провайдеров аналитики). Особенно опасной проблемой является передача вашего Ethereum-адреса Гуглу, так как он уже знает информацию, по которой может идентифицировать вас лично, а потому может соотнести её с вашим Ethereum-адресом, что может дать ему возможность узнать вашу историю транзакций в блокчейне. Гуглу, как рекламному монстру, выгодно монетизировать эту информацию.

Ещё мы обнаружили, что многие сайты включают сторонние скрипты, что всегда является угрозой безопасности, но эта угроза особенно сильна для DeFi, так как речь идёт о финансах, а сторонние скрипты могут обмануть пользователя (например, используя фишинг), инициировав мошенническую транзакцию, а манипулируя DOM DeFi-сайта повысить вероятность того, что пользователь примет эту мошенническую транзакцию. Из исследованных нами 78 DeFi-сайтов 48 (66%) содержали как минимум один сторонний скрипт (всего мы насчитали 34 провайдера внешних скриптов). Как и ожидалось, следы Гугла были повсюду: 41 DeFi-сайт (56%) содержал как минимум один скрипт, предоставленный Гуглом.

Детально ознакомиться с полученными данными можно в таблице под этим постом.

Что это значит для пользователей Brave?

Пользователи Brave защищены от присутствия Гугла на DeFi-сайтах, так как Brave блокирует Google Analytics по умолчанию. Это значит, что Гугл не узнает, какие DeFi-сайты вы посещаете, равно как и ваш Ethereum-адрес — по крайней мере, посредством скриптов. Это же касается и других трекеров (например, от Hotjar или Facebook), которые мы обнаружили на некоторых DeFi-сайтах. 

Контрмеры

Наша защита от следящих скриптов — это отличное начало для конфиденциальной работы с DeFi-сайтами, но всё же это не панацея. К примеру, ваш Ethereum-адрес всё равно может утечь к третьим сторонам. Можно ли вообще пользоваться DeFi, сохраняя при этом полный контроль над своим Ethereum-адресом? 

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

Ваш реальный Ethereum-адрес может быть 0x123…def, но наш патч заставляет Uniswap видеть 0x321…789, а Compound, например, 0xabc…987. Это сильно мешает (хоть и не делает полностью невозможным!) DeFi-сайтам и третьим сторонам узнать ваш настоящий Ethereum-адрес или связать ваши действия в браузере с вашими действиями на DeFi-сайте.

Чтобы схема взлетела, её нужно доработать напильником. Например, если мы передадим подложные адреса DeFi-сайту, то он будет показывать неверные балансы, а транзакции будут невалидны. Наш патч обходит эту проблему, прозрачно заменяя балансы кошельков и Ethereum-адреса, что позволяет DeFi-сайтам нормально работать. Проиллюстрируем это картинкой: пользователь заходит на example.finance, и расширение MetaMask передаёт сайту производный Ethereum-адрес, но при этом показывает корректный баланс. Наш патч переписывает транзакции так, что они содержат настоящий Ethereum-адрес до того, как быть записанными в блокчейн. 

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

Выводы

Ethereum-адреса — это деликатная и конфиденциальная информация, вроде номеров кредитных карт и банковских счетов. DeFi-сайты должны относиться к ней соответствующим образом и никогда не передавать Ethereum-адреса третьим сторонам без веской на то причины. De в DeFi означает «децентрализованные», и важно, чтобы DeFi-сайты не забывали об этом и воздержались от использования централизованного API и услуг провайдеров аналитики.

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

Приложение

Таблица ниже показывает подмножество из 53 DeFi-сайтов, которые включают в себя как минимум один внешний скрипт (второй столбец) или передают Ethereum-адрес как минимум одной третьей стороне (третий столбец). Данные были собраны 27 августа 2021 года. Обратите внимание, что эти цифры являются нижней границей возможной передачи информации, так как мы могли не заметить какие-нибудь утечки.

Сайт

Количество скриптов

Количество утечек

zerion.io

9

3

1inch.io

8

1

dydx.exchange

6

0

o3swap.com

5

0

opensea.io

4

0

instadapp.io

4

0

bancor.network

4

2

airswap.io

4

0

rarible.com

3

1

balancer.fi

3

0

swapswap.org

2

0

sushi.com

2

0

saddle.exchange

2

0

opyn.co

2

0

notional.finance

2

0

jelly.market

2

1

idle.finance

2

0

foundation.app

2

0

dodoex.io

2

2

bifi.finance

2

3

alphafinance.io

2

0

aave.com

2

0

zapper.fi

1

0

yield.is

1

0

yearn.finance

1

4

wing.finance

1

0

wasabix.finance

1

0

warp.finance

1

0

vesper.finance

1

0

uniswap.org

1

0

truefi.io

1

0

synthetix.io

1

0

sablier.finance

1

1

ribbon.finance

1

0

reflexer.finance

1

1

rari.capital

1

0

rampdefi.com

1

0

pickle.finance

1

0

pancakeswap.finance

1

0

oasis.app

1

0

moonswap.fi

1

0

maple.finance

1

0

inverse.finance

1

0

indexcoop.com

1

0

impermax.finance

1

1

for.tube

1

0

dmm.exchange

1

0

dfyn.network

1

0

debank.com

1

0

codefi.network

1

0

boringdao.com

1

0

loopring.io

0

2

defisaver.com

0

3

Комментарии (0)