О, новый способ "арбитража". До этого сталкивался только с переводом на другую биржу на адрес якобы твоего аккаунта (который ты сам списывал на бирже-получателе и который по факту регистрировался мошенником на себя).
Попробовал. Основная проблема - галлюцинирует. Причём вроде как пишет что-то похожее на правду, но...
То тут константы неправильные вставит, но правильные, но наполовину (буквально - первые 8 символов - правильные, остальные - нет).
То методы придумает у объектов, которых нет. Причём при этом ещё и упорствует - мол, есть такие. А когда заставляешь всё равно поменять - придумывает другие, взятые у других объектов.
И не то чтобы программа большая - так, сотня строк, из которых 20 - пустые.
В общем - проверять, проверять, буквально каждое слово проверять.
Во-первых, как заметил правильно mayorovp - нет никакого owner (владельца) у смарт-контракта Safe Wallet. Меняли имплементацию "холодного" кошелька ровно так же, как и все остальные операции через него - формированием необходимой транзакции и сбором необходимого числа подписей. Во-вторых, "якобы сложная концепция" таймаутов и мультиподписей в прокси протащена уже давным-давно. TIMELOCK-контракты вполне себе успешно используются. Даже в более расширенном варианте - DAO. В-третьих, существование таймаута на выполнение действительно помогло бы. Потому как заглянув банально в блокчейн можно было бы увидеть, что что-то не то по факту подписали. В-четвёртых, я не могу понять, как ваше "ключи абсолютно никогда и ни при каких условиях не должны находится даже в одном здании" согласуется с вашим же "он хранится у директора в самом большом и надёжном сейфе". Вы уж определитесь...
Проблема тут не только (и даже не столько) в том, что логика смарт-контракта может изменяться. Хотя, это, конечно, кошмар. Проблема в том, что для кошелька, контролирующего огромные суммы денег - все изменения происходят мгновенно. Чуть ошибся - и ты банкрот.
Считаю, что на все действия, даже подкреплённые подписями, должен быть установлен таймлок - период, в течение которого действие не выполняется и может быть отменено. Даже банальный перевод на горячий кошелёк.
Нет никакого принципиального отличия External owned accounts (кошелёк с приватным ключом) от смарт-контракта. И тот и другой постоянно присутствуют в сети. И к тому и к другому есть доступ у того (тех), кто владеет приватным ключом (ключами). Второй даже более надежён, поскольку для несанкционированного доступа к нему надо приложить больше усилий. К слову, даже у EOA - кошельков есть UI. Например, программы кошелька. И его тоже можно подделать.
Не понял, а чём проблема мультиподписей? И в чём преимущество одной подписи по сравнению с несколькими? Наоборот, пусть подпись директора будет одной из необходимых - так надежность повышается даже.
Плохо то, что как и в случае с Radiant - смена функционала Safe-контракта происходит мгновенно. По хорошему для такой важной функции должен быть timelock. Сутки, например. В течение которых команда уж точно должна сообразить, что что-то идёт не так.
Почему нет? Холодный кошелёк представлен смартконтрактом, для доступа к которому используется UI веб-сайта, через фишинг этого UI и произошла подмена подписываемой транзакции.
Мальчик, я бы порекомендовал тебе не делать таких скоропалительных и громких заявлений, особенно, если ты не сильно разбираешься в работе CEX.
То, что тебе биржа выдала для пополнения некий адрес - не делает его твоим. Все поступающие на этот адрес средства почти сразу переводятся самой биржей на её "горячий кошелёк". Во многих блокчейн-эксплорерах он даже так и помечается. Да, есть DEX-биржи (ну как биржи... по большей части - обменник) типа Uniswap, обмен на которых идёт непосредственно с кошелька пользователя, но ByBit к ним не относится.
Если вы посмотрите, то все средства, поступающие на адреса, выданные клиентам, практически сразу "сдуваются" на горячий кошелёк биржи. Там может быть задержка разве что для мелких сумм (которые переводить сразу может быть затратно, если сеть достаточно "дорогая"). А так - все средства клиентов переводятся сначала на "горячий" кошелёк (с него же, кстати, они и выводятся, когда клиенты делают withdraw), а при необходимости - и на "холодный".
Если кратко: - есть контракт Safe в сети Эфира (собственно, "Холодный кошелёк" ByBit - этот и есть этот самый контракт), при создании которого указывается, какие кошельки должны приложить к транзакции свои подписи, чтобы транзакция для этого Safe-контракта стала валидной. - есть ресурс (сайт Safe, но может быть и корпоративный), при помощи которого готовится транзакция и на который может зайти каждый подписан и прикрепить к этой транзакции свою подпись. - после сбора необходимого количества подписей транзакция передаётся Safe-контракту, который проверяет её и если все необходимые подписи есть - выполняет.
Однако сам Safe-контракт является так называемым прокси-контарктом. Т.е. конкретный его функционал (implementation) может меняться. Прокси-контракт просто передаёт все запросы имплементации. Насколько я вижу, хакер именно что подменил имплементацию Safe-контракта, сформировав необходимую транзакцию и получив все необходимые подписи. Новая имплементация (по адресу https://etherscan.io/address/0xbdd077f651ebe7f7b3ce16fe5f2b025be2969516) содержит всего пару методов - sweepETH и sweepERC20, которые не требуют мультиподписи После замены имплементации хакер вызвал у safe-контракта эти методы для вывода токенов cmETH, stETH, mETH, ETH и (вот же не поленился!) аж 90 USDT :) Что именно ломали? Скорее всего - сайт для формирования подписи. Чтобы на экране подписанты видели одну информацию, а подписывали - другую.
Похожим способом (через подмену контаркта) ломали Radiant Capital, но там убытки составили "всего" 50 миллионов.
О, новый способ "арбитража". До этого сталкивался только с переводом на другую биржу на адрес якобы твоего аккаунта (который ты сам списывал на бирже-получателе и который по факту регистрировался мошенником на себя).
Попробовал. Основная проблема - галлюцинирует. Причём вроде как пишет что-то похожее на правду, но...
То тут константы неправильные вставит, но правильные, но наполовину (буквально - первые 8 символов - правильные, остальные - нет).
То методы придумает у объектов, которых нет. Причём при этом ещё и упорствует - мол, есть такие. А когда заставляешь всё равно поменять - придумывает другие, взятые у других объектов.
И не то чтобы программа большая - так, сотня строк, из которых 20 - пустые.
В общем - проверять, проверять, буквально каждое слово проверять.
А ещё веселен будет - когда все советы будет нейросеть генерировать.
Во-первых, как заметил правильно mayorovp - нет никакого owner (владельца) у смарт-контракта Safe Wallet. Меняли имплементацию "холодного" кошелька ровно так же, как и все остальные операции через него - формированием необходимой транзакции и сбором необходимого числа подписей.
Во-вторых, "якобы сложная концепция" таймаутов и мультиподписей в прокси протащена уже давным-давно. TIMELOCK-контракты вполне себе успешно используются. Даже в более расширенном варианте - DAO.
В-третьих, существование таймаута на выполнение действительно помогло бы. Потому как заглянув банально в блокчейн можно было бы увидеть, что что-то не то по факту подписали.
В-четвёртых, я не могу понять, как ваше "ключи абсолютно никогда и ни при каких условиях не должны находится даже в одном здании" согласуется с вашим же "он хранится у директора в самом большом и надёжном сейфе". Вы уж определитесь...
Проблема тут не только (и даже не столько) в том, что логика смарт-контракта может изменяться. Хотя, это, конечно, кошмар.
Проблема в том, что для кошелька, контролирующего огромные суммы денег - все изменения происходят мгновенно. Чуть ошибся - и ты банкрот.
Считаю, что на все действия, даже подкреплённые подписями, должен быть установлен таймлок - период, в течение которого действие не выполняется и может быть отменено. Даже банальный перевод на горячий кошелёк.
Нет никакого принципиального отличия External owned accounts (кошелёк с приватным ключом) от смарт-контракта. И тот и другой постоянно присутствуют в сети. И к тому и к другому есть доступ у того (тех), кто владеет приватным ключом (ключами). Второй даже более надежён, поскольку для несанкционированного доступа к нему надо приложить больше усилий.
К слову, даже у EOA - кошельков есть UI. Например, программы кошелька. И его тоже можно подделать.
Не понял, а чём проблема мультиподписей? И в чём преимущество одной подписи по сравнению с несколькими?
Наоборот, пусть подпись директора будет одной из необходимых - так надежность повышается даже.
Плохо то, что как и в случае с Radiant - смена функционала Safe-контракта происходит мгновенно. По хорошему для такой важной функции должен быть timelock. Сутки, например. В течение которых команда уж точно должна сообразить, что что-то идёт не так.
Вряд ли. Взлом DAO составлял 5% от всего тогдашнего ETH. Вчерашний - всего 0,37%.
Отмечу, что в современных L2-сетях плата за газ в принципе может быть почти равна нулю. Но вот объемы ликвидности могут существенно отличаться.
Пока средства не дойдут до TornadoCash, после которого отслеживать их вееееесьма затруднительно.
Почитайте про proxy-контракты. Там логика работы может меняться при необходимости.
Да скорее всего kest70 зашёл на какой-то сайт, где от него попросили приватную фразу. Или подписать какую-то транзакцию, в смысл которой он не вникал.
Почему нет? Холодный кошелёк представлен смартконтрактом, для доступа к которому используется UI веб-сайта, через фишинг этого UI и произошла подмена подписываемой транзакции.
Скорее всего - в горячем кошельке биржи.
Мальчик, я бы порекомендовал тебе не делать таких скоропалительных и громких заявлений, особенно, если ты не сильно разбираешься в работе CEX.
То, что тебе биржа выдала для пополнения некий адрес - не делает его твоим. Все поступающие на этот адрес средства почти сразу переводятся самой биржей на её "горячий кошелёк". Во многих блокчейн-эксплорерах он даже так и помечается.
Да, есть DEX-биржи (ну как биржи... по большей части - обменник) типа Uniswap, обмен на которых идёт непосредственно с кошелька пользователя, но ByBit к ним не относится.
Если вы посмотрите, то все средства, поступающие на адреса, выданные клиентам, практически сразу "сдуваются" на горячий кошелёк биржи. Там может быть задержка разве что для мелких сумм (которые переводить сразу может быть затратно, если сеть достаточно "дорогая").
А так - все средства клиентов переводятся сначала на "горячий" кошелёк (с него же, кстати, они и выводятся, когда клиенты делают withdraw), а при необходимости - и на "холодный".
Уточню.
Если кратко:
- есть контракт Safe в сети Эфира (собственно, "Холодный кошелёк" ByBit - этот и есть этот самый контракт), при создании которого указывается, какие кошельки должны приложить к транзакции свои подписи, чтобы транзакция для этого Safe-контракта стала валидной.
- есть ресурс (сайт Safe, но может быть и корпоративный), при помощи которого готовится транзакция и на который может зайти каждый подписан и прикрепить к этой транзакции свою подпись.
- после сбора необходимого количества подписей транзакция передаётся Safe-контракту, который проверяет её и если все необходимые подписи есть - выполняет.
Однако сам Safe-контракт является так называемым прокси-контарктом. Т.е. конкретный его функционал (implementation) может меняться. Прокси-контракт просто передаёт все запросы имплементации.
Насколько я вижу, хакер именно что подменил имплементацию Safe-контракта, сформировав необходимую транзакцию и получив все необходимые подписи. Новая имплементация (по адресу https://etherscan.io/address/0xbdd077f651ebe7f7b3ce16fe5f2b025be2969516) содержит всего пару методов - sweepETH и sweepERC20, которые не требуют мультиподписи
После замены имплементации хакер вызвал у safe-контракта эти методы для вывода токенов cmETH, stETH, mETH, ETH и (вот же не поленился!) аж 90 USDT :)
Что именно ломали? Скорее всего - сайт для формирования подписи. Чтобы на экране подписанты видели одну информацию, а подписывали - другую.
Похожим способом (через подмену контаркта) ломали Radiant Capital, но там убытки составили "всего" 50 миллионов.
Именно. Все эти советы что надо и не надо делать - бессмысленны.
Власть давно уже оторвалась от реальности и витает где-то в другой вселенной. Классика. "Правительство на другой планете живёт"
Телеграм
Это что за чудо такое, о котором интернет не знает?