Интересная новость, печальная (у меня открыт счет в satoshi.fund), но интересная. Давайте разберемся в деталях.
Стоит начать с того, что поиск уязвимостей дело сложное. Алгоритм программы (в нашем случае - смарт-контракта) - очень часто ступенчатый и логически обоснован. Для того, чтобы понять, в чем суть проблемы - я приведу пример уязвимости веб-сервера при классическом DOS. Если вспомнить, что было лет 10 назад - во времена сервера Apache и php, то можно на этом примере разобрать, как происходит поиск и использование уязвимости.
Цель DOS атак всегда одна - вывести из строя часть системы, которая может отвечать за что-то важное. Как это сделать - повысить нагрузку на узкое место в системе. Давайте посмотрим, что происходило при DOS на сервера Apache, и его ступенчатый алгоритм работы.
Ступени: Обращение пользователя на сервер Apache - сервер смотрит файл, видит, что он php - отображает файл php, пропуская его через интерпретатор - php обрабатывает файл и выдает результат, который подготовил код этого файла.
Чрезмерная нагрузка на подобный сервер вызывал DOS, в следствие чего не работала последняя цепочка (такое случалось не всегда, мог упасть сам apache, а не php, в таком случае злоумышленники прекращали атаку и ждали, когда сервер оживет, чтобы предпринять новую попытку его "утопить"). Когда удавалось этого достичь, происходил сбой в логике работы - результат был не тот, который ожидался владельцами сервера.
Как итог - Apache просто "показывал" код php файла (без обработки интерпретатором). Вместе с этим злоумышленник мог получить php файл с настройками, в котором хранились пароли от MySQL сервера (базы данных). Далее злоумышленник подключался к серверу и забирал таблицу с хэшами паролей всех пользователей сайта (например, такое случилось с форумом EarnMoney более 12 лет назад).
В подобном случае скомпрометированы все пароли пользователей, уважающая себя площадка открыто признает факт взлома и просит своих пользователей поменять пароли. Так было и с Twitch, и с другими площадками.
Что произошло сейчас - аналогичная ситуация, но уже связана с смарт-контрактами (и крипто-валютой Ефириум). Давайте разберемся, как была использована уязвимость (а точнее, "возможность", глазами Хакеров). Учитывая, что уже выпущен патч, можно изучить его, и понять - где же была "дыра".
В патче не так много правок, поэтому "опосля" все кажется довольно просто. Узкое место было в том, что операция по инициализации кошелька и его мульти-подписей не проводили проверку на эту самую инициализацию. Как итог - злоумышленники могли выполнить ее еще раз и распоряжаться деньгами как владельцы умного контракта. Все лаконично и просто.
Кто за этим стоит? Мне кажется - никто не узнает. Слишком "тупая" ошибка, если подумать. В этом есть определенные риски, и риски эти ложатся на "открытый" код и отсутствие аудита. Позвольте отвечу, почему я так считаю:
- Программисты пишут код, логически обоснованный.
- Большинство программистов мыслят линейно, в рамках задачи.
- Хакеры - те же программисты, но которые осознают опасность (а точнее важность!) программы.
- Хакеров меньше чем программистов (намного). По поводу этого можно написать целую книгу, но суть в том, что не каждый программист - хакер, но каждый хакер - программист.
- Рост отрасли (в нашем случае смарт-контрактов) вызывает рост программистов в ней. А значит и хакеров, которые будут относиться к коду с осторожностью и осознанием опасностей, которые код может содержать.
- Открытый код позволяет заглянуть под капот программы. Чаще - убедиться в честности, а не в надежности(!). Надежность должны оценивать специалисты, они же аудиторы. Кто такие аудиторы безопасности? Зачастую это профессиональные программисты - те же хакеры, которые сделали поиск уязвимостей своим бизнесом. Только на другом уровне.
Там где нет хакеров - нет ауидиторов безопасности кода (так как в этом нет необходимости). Соответственно все подобные прецеденты развивают рынок. Люди начинают понимать - доверять коду и быть убежденным в его надежности - не одно и тоже. Открытый код хорош тем, что его может бегло просмотреть каждый и убедиться - код выполняет определенную цель. Но разобрать каждую ступень кода, понять, что они не шатаются, не подвержены уязвимостям - совершенно другое дело.
Думаю, скоро появятся специалисты, которые будут проводить платный аудит смарт-контрактов на возможные уязвимости. Рынку нужны такие услуги и они в жутком дефиците, так как реальных специалистов в этом деле в разы меньше чем средних программистов.
Буду рад комментариям, особенно, если укажете - где я ошибся в технической части. В этом и есть смысл "аудита" ;)
В настоящий момент ущерб от уязвимости $79 199 662. У Сатоши-фонда: $7 641 533. Это очень большие суммы.
Многие побежали сливать эфириум, хотя дело не в нем. Тут близка аналогия. Если человек написал контракт, по которому он теряет деньги, то виноват язык программирования? программа? Или все же тут ошибка автора?
Безусловно это ошибка автора. Открытый код в данном случае служит успокоением для тех, кто его использует. "Ну так тут уже многие его прочли, используют". Наверно и аудит на возможные уязвимости проводить нет смысла.
Есть. Там, где держатся большие деньги - всегда есть смысл проводить самый тщательный аудит, нанять специалистов с тех же антивирусных организаций для анализа. Да, за деньги, за большие - но аудит своего рода гарантия: проверенно специалистами.
Мы же все когда скачиваем программу из сети либо проверяем его сами антивирусом, либо сверяем хэш и видим - такие-то антивирусы проверили файл и сообщают - вирусов нет. Почему такого не происходит с смарт-контрактами? Потому что отрасль только развивается и все это впереди.
Дополняю информацией:
Судя по твиту все что ушло на адрес https://ethplorer.io/address/0x1dba1131000664b884a1ba238464159892252d3a в безопасности и токены будут возвращены после расследования инцидента и исправления держателями уязвимых смарт-контрактов. Это как раз про $79 199 662 (в том числе Сатоши-фонд).
А вот некоторым не так повезло, речь про твит от Manuel Aráoz. По этой информации хакеры смогли использовать уязвимость и перевести себе на счет https://etherscan.io/address/0xb3764761e297d6f121e79c32a65829cd1ddb4d32 около 83 000 ETH, что эквивалентно $17 000 000.
Дополнение на реддите от группы хакеров White Hat: владельцам контрактов - будьте терпеливы, мы создадим контракты аналогичные вашим с патчами на уязвимость в исходном коде, с теми же самыми параметрами. Просто дождитесь своей очереди.
Прям научпоп про хакеров! Мне понравилось)
Спасибо за полезный пост! Без ошибок нет и развития. Согласен с вами, что подобные инциденты двигают технологию вперед.
PS: сам держу часть средств в этом Фонде, хорошие новости, что Whitehat успели вовремя :)
Я даже скажу, что просто программистов более менее разбирающихся даже в блокчейне днем с огнем уже не найти, не говоря уже о профессионалах
@on1x Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за общую выплату получил
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
losos, cats, t3ran13, boddhisattva, sergiy, polyideic, fetta, midnight, shuler, vadbars, dany2323, bitclabnetwork, chika25, bitlle, semasping, gryph0n, voltash, karusel1, osincevata, kukusru, on1x, newodin, kondratij, ani.vartanova, anomalywolf, lokkie, ifingramota, vvebeonic, dignityinside, wedge
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!
Подписался.
Теперь вы нас читаете в Телеграм, а я вас в Голос)
Кмк, этот виртуальный мир, что ныне создают программеры, гики, и хакеры когда-нибудь в будущем обретет материальные границы в нашем мире. Электричество ведь тоже несколько веков было баловством, а потом оно преобразило планету.
Отличная точка для входа в Сатошифонд.
Мне всегда это не нравилось в php, что можно при некоторых условиях получить доступ к паролям, которые в файлах прописываются. Никакой безопасности.
Это решается переносом файла в каталог выше(!). Всего-то. И с веб-морды до него не добраться, хотя include пройдет без проблем с основных скриптов, доступных с веб-морды.
@on1x Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за Количество полученных комментариев
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
классная статейка)
в тему)
Тут в смартконтрактах в целом прогеров нет)
И вот еще. Тема болезненная и актуальная. Проблема в том, что открытый код усыпляет бдительность в данном случае.
Ну если честно, даже теже ФрендсОфСимфони бандлы которые якобы от спецов и рекомендованы разработчиками основного фремворка - корявенькие местами, и частенько не использую рекомендации из офф доки Симфони.
Я думаю это от урвоня "зазнайности" и ответсвенности людей зависит) ну мб еще предрасположенность???
Многие предпочитают принцип "хуяк-хуяк и в продакшн"=)
Ничего. Как только люди начнут терять деньги, они начнут нанимать компетентных специалистов. По данной проблеме аналогично высказались на реддите.
Никто не хочет учиться на ошибке TheDAO...