Несмотря на то, что об этой проблеме безопасности известно уже два года, генеральный директор ZenGo Уриэль Охайон (Ouriel Ohayon) бьет тревогу, утверждая, что уязвимость представляет опасность для пользователей. Уязвимость BaDApprove - это не ошибка кода. Проблема заключается в том, как кошельки взаимодействуют с пользователями и устанавливают разрешения транзакций по умолчанию.
В рамках исследования крупнейших кошельков, включая Metamask, Opera и imToken, Охайон обнаружил, что, когда пользователи одобряют определенную транзакцию, они часто по умолчанию одобряют все будущие транзакции. Это открывает путь для взаимодействия мошеннических децентрализованных приложений с со средствами пользователей без их ведома или согласия, даже путем кражи всех активов.
Ошибка хорошо документирована, однако расследование Охайона вновь поднимает один из базовых вопросов криптовалютной индустрии: должны ли криптовалютные компании делать все возможное для защиты пользователей или же владельцы криптовалют должны нести полную ответственность за свои цифровые активы?
Команда ZenGo организовала демонстрацию dApp, чтобы предупредить пользователей об этой уязвимости. На видео показан пользователь, который отправляет несколько FRT (валюта тестовой сети) в «мошенническое приложение для обмена» и позволяет ему вывести указанные токены и автоматизировать транзакции. Затем BaDApprove dApp выводит все средства с баланса пользователя.
Ситуация усугубляется тем, что многие кошельки не сообщают своим пользователям об этих разрешениях. Исследователь Tendermint и Cosmos Санни Аггарвал (Sunny Aggarwal) провел симуляцию и подтвердил наличие проблемы.
«Если децентрализованные приложения на Эфириуме хотят взаимодействовать с вашими токенами ERC20, они сначала должны получить одобрение на доступ к некоторому объему средств», - сказал Аггарвал. «В данном случае dApp просит одобрить доступ к чрезвычайно большому количеству токенов, не показывая, сколько именно их будет использоваться».
Аггарвал использовал популярный кошелек Metamask, который, по его словам, отображал сумму транзакции только после того, как он нажал «Показать подробности».
«И даже тогда вы увидите, что сумма отображается как 1.1579 ………… e+59» или в экспоненциальном представлении. Из-за этого многие пользователи могут «неправильно понять сумму и посчитать, что это примерно 1.15 токена».
Кошелек Metamask
«Это ошибка со стороны кошельков», - сказал он. «Кошельки должны отображать эту информацию для пользователей как можно более заметно и предупреждать их, если осуществляются какие-то действия».
Известная проблема
Проблема, на которую обратили внимание Охайон и ZenGo, уже давно известна в индустрии DeFi. Судя по всему, она до сих пор не была исправлена, так как участники индустрии не считают это уязвимостью или ошибкой, а лишь некорректно работающей функцией.
В сентябре 2018 года Джордан Рэндольф (Jordan Randolph), представитель децентрализованной биржи Ethex, изложил свой взгляд на проблему. «Однократные разрешения на перемещение почти бесконечного количества токенов... могут быть удобными», написал он. «Тем не менее, наличие почти бесконечного количества утвержденных токенов означает, что все ваши токены доступны для передачи по смарт-контракту». По его словам, предустановка кошелька сводится к выбору между удобством и безопасностью.
«Приложения, которые предлагают только один вариант - одобрение огромного количества токенов - несут в себе фатальную уязвимость в области безопасности», - написал он.
За последние несколько недель ZenGo обсудила эту проблему с разработчиками известных кошельков. Однако, зачастую исследователи сталкивались с непринятием.
«Эта проблема представляет собой известный риск и требует взаимодействия с пользователем. Мы добавили четкое уведомление для пользователей, когда они начинают взаимодействовать со сторонним dApp. Но мы все равно благодарим вас за ваш отчет», - ответил в Twitter представитель imToken Талу Бири (Tal Be'ery), одному из основателей ZenGo.
Генеральный директор imToken Бен Хе (Ben He) сказал: «Это не уязвимость безопасности, а плохая традиция всей экосистемы Эфириума, согласно которой большинство приложений dApps/DeFi запрашивают разрешение на неограниченное взаимодействие с токенами пользователей».
По его словам, для решения этой проблемы в браузере imToken dApp есть два всплывающих окна. Одно появляется, когда пользователь первый раз посещает URL-адрес dApp, а второе всплывает, запрашивая согласие пользователя перед заключением сделки.
«Очень важно, чтобы пользователь подписывал транзакции внимательно, и мы считаем, что это правильное и дружеское напоминание сообществу», - сказал он. «Мы совершенствуем свой пользовательский интерфейс, чтобы минимизировать проблемы».
Metamask представил аналогичный ответ на вопрос о неограниченных разрешениях.
«На самом деле это безопасная функция, которую пользователи регулярно используют ответственно. Это не какая-то ошибка или проблема», - сказал сотрудник службы поддержки MetaMask. «Это – не серьезная проблема стандарта ERC-20, но она имеет основополагающее значение для разрешений смарт-контрактов, позволяющих им взаимодействовать с токенами».
Фирма активно работает над добавлением мер безопасности, например, всплывающими сообщениями, которые запрашивают подтверждение для отправки средств и позволяют пользователям корректировать утвержденную сумму в дополнительных настройках. Кроме того, по словам представителя кошелька, Metamask «планирует предоставить пользователям еще больший контроль», например, функции, упрощающие отмену этого разрешения.
Охайон также сослался на Brave и Coinbase, отметив, что эти компании отображают «значимые предупреждения», хотя это не устраняет риск того, что пользователи dApp могут пострадать от действий злоумышленников.
«Некоторые компромиссы в области безопасности, которые могли бы быть приемлемыми в эпоху, когда пользователей было мало и они имели высокий уровень технический знаний, сейчас невозможны. Это связано с тем, что DeFi становится все популярнее, приобретает много пользователей без технических навыков и обрабатывает операции с криптовалютными токенами на миллиарды долларов», - написал в блоге исследователь ZenGo Алекс Манушкин.
Он считает, что если криптовалютная индустрия завоюет глобальную популярность, то должны быть приняты надлежащие меры предосторожности, чтобы избежать проблем.