Oneni sikanimga nak uryapsanmi?
КАКИЕ ЗНАНИЯ НУЖНЫ ЧТОБЫ ВЗЛОМАТЬ WEB3?Честно говоря далеко не всегда нужно разбираться в программировании смарт-контрактов и углубляться в web3 чтобы его взломать. Как мы видим из банальных ошибок выше - достаточно знать web2. У меня лично были кейсы в различных крипто играх, когда банальный айдор позволял мне вынести весь банк игры. и для этого даже не надо было изучать часами смарт-контракты игры, которые кстати были в скопе програмы багбаунти этой самой игры (а веб2 в скопе не был?).
ПОИСК ОШИБОК WEB2 НА САЙТАХ NFTКогда я думаю о взломе НФТ, мне на ум приходит взлом смарт-контрактов. Но это не обязательно так. Zseano пока не знает, как взламывать смарт-контракты, но он решил протестировать несколько сайтов NFT и подойти к ним со своими обширными знаниями о web2. Об этом он рассказал в своем докладе "Поиск ошибок на сайтах NFT ради удовольствия и прибыли" на IWCON 2022 г.
ВХОД В СИСТЕМУ ЧЕРЕЗ METAMASKMetamask - это очень популярный крипто-кошелек в виде расширения для браузера. Когда вы находитесь на web3-сайте, который требует от вас аутентификации с помощью кошелька, это работает следующим образом:
1. Вы открываете сайт, допустим, NFT marketplace.
2. Этот сайт инициирует аутентификацию, генерируя сообщение. Вы должны подписать его своим закрытым ключом. Появляется окно Metamask.
3. После нажатия кнопки OK кошелек подписывает сообщение.
4. Success - сообщение проверено, и вы вошли в систему
После этого JS-код отправляет запрос. Там есть подпись и адрес кошелька. Ответ содержит токен JWT. Вам не придется использовать свой кошелек для подписи каждого своего запроса. Это было бы отвратительно и непригодно к использованию. Вместо этого мы просто получаем JWT. В чем здесь кроется проблема?
Проблема в том, что сообщение, которое вы должны подписать, статично и каждый раз одно и то же . Оно не содержит ни одноразового кода, ни источника веб-сайта, запрашивающего подпись.
Например, target[.]com использует сообщение «Пожалуйста, подпишите это сообщение, чтобы войти». Если вам удастся заставить пользователя подписать это сообщение, вы сможете воспроизвести подпись при входе на target[.]com.
Вы скажете что заманив жертву на свой фишинг можно и drainer подкинуть. Но при использовании дрэйнеров мы запрашиваем слишком много привелегий у метамаска, поэтому сам метамаск предупреждает пользователя огромными красными подписями о том что пользователь имеет шанс лишиться всех активов.
Я бы сравнил последствия этого с ситуацией, когда пользователь использует один и тот же пароль, хранящийся в открытом виде, на всех сайтах, надеясь, что владельцы одного сайта не смогут войти на другой.
В некоторых случаях для выполнения различных действий требуется другая подпись. Например, для редактирования своего профиля необходимо подписать другое сообщение. Это снижает риск атаки. Однако на некоторых сайтах для всех действий используется один и тот же маркер. Например, можно изменить цену объявления NFT или изменить адрес электронной почты.
ОБЛАЧНОЕ ХРАНИЛИЩЕ IPFSIPFS — это распределенное облачное хранилище.
Допустим, мы с вами используем IPFS вместо AWS S3.
Вы размещаете свои файлы на ipfs[.]you[.]com, а я — на ipfs[.]me[.]com. На самом деле, все файлы у нас общие
Когда я загружаю HTML-файл в IPFS, я могу получить к нему доступ не только через ipfs[.]me[.]com/HASH, но и через ipfs[.]you[.]com/HASH
Оба хеша одинаковы.
Я думаю, вы понимаете, к чему это идет. Это позволяет мне выполнить произвольный JS-код в контексте вашего поддомена.
ИСПОЛЬЗОВАНИЕ ПУБЛИЧНОГО АДРЕСА В КАЧЕСТВЕ ИДЕНТИФИКАТОРАНекоторые сайты используют в качестве идентификаторов публичные адреса кошельков. Старое доброе "если он случайный, то злоумышленник не узнает значение", поскольку не все сайты реализуют контроль доступа к нему.
Очевидно, что как бы ни было нереально угадать адрес, они не зря называются публичными. И по определению блокчейна, вы знаете адреса других кошельков.
Думаю многие знают что такое смарт контракт, блокчейн и так далее, но скорее всего не все знают где они хранятся и как разработчики выводят свое творчество "в свет". Вот сейчас про это.
Пока я сам учусь и углубляюсь в веб3 (крайне тяжело изучать что-то новое, поэтому идет туго) - буду публиковать сюда какие-то подобные вещи которые мне когда-то были не совсем понятны, а так же различные интересные ресерчи. Теперь к делу:
Смарт-контракты "живут" прямо в блокчейне. Можно было бы закончить на этом, но понятнее не стало. Прежде чем мы углубимся в детали их публикации, стоит уточнить немного про Ethereum Virtual Machine или EVM.
EVM - это глобальная децентрализованная виртуальная машина, которая интерпретирует и выполняет байткод смарт-контрактов. Все участники сети Ethereum имеют свою копию EVM, что обеспечивает надежное и единое выполнение кода контракта во всей сети.
Теперь разберемся, как ваш смарт-контракт может попасть в блокчейн. После написания кода смарт-контракта, например, на языке Solidity, он компилируется в байткод для EVM. Но прежде чем опубликовать контракт в основной сети, рекомендуется начать с тестовой сети, такой как Ropsten или Rinkeby. Тестовая сеть - это почти идентичное отражение основной сети, но с одним важным отличием: ее токены не имеют реальной стоимости. Это позволяет разработчикам экспериментировать и тестировать без риска потерять реальные активы.
Для деплоя и тестирования смарт-контрактов существуют инструменты, такие как Truffle и Remix. Truffle - это популярная среда разработки для Ethereum, обеспечивающая набор инструментов для написания и развертывания смарт-контрактов. Remix, с другой стороны, - это веб-приложение, которое помогает в создании, тестировании и развертывании контрактов прямо в вашем браузере (так же есть десктопная версия).
Завершая процесс, необходимо оплатить газ для транзакции, и контракт будет запущен. После запуска контракта существует процесс верификации кода на платформах вроде Etherscan, чтобы заработать доверие со стороны сообщества.
Примерно так выглядит, казалось бы очевидный, процесс публикации смарт контракта.
Особенности работы с багбаунти платформой Code4Rena для аудиторов и ресерчеров ?️♂️*
1. *Децентрализованные аудиты:
Code4Rena предоставляет возможность для децентрализованных аудитов (собственно как и классические платформы багбаунти). Это означает, что проекты получают множественные проверки безопасности от различных экспертов, что увеличивает шансы на выявление сложных уязвимостей.
Транспарентность:
Отчеты об уязвимостях и их статус (подтвержденные, отклоненные, исправленные) доступны всем участникам платформы (тут же про блокчейн и все такое). Это способствует обмену знаниями и усиливает сотрудничество в сообществе.
Соревновательный подход:
В сфере багбаунти конкуренция всегда была высокой, но Code4Rena подходит к этому аспекту по-особенному. В отличие от классических платформ, где ресерчеры ищут уязвимости и получают за них вознаграждение, Code4Rena представляет собой площадку для соревнований по безопасности. Что имеется в виду:
*Динамические награды: Во многих соревнованиях на Code4Rena награды могут меняться в зависимости от уровня сложности найденной уязвимости и от числа ресерчеров, принявших участие в соревновании. Это стимулирует участников искать уязвимости глубже и быстрее.
*Рейтинговая система: Ресерчеры соревнуются между собой не только за награды, но и за место в рейтинге лучших участников. Это дает дополнительную мотивацию улучшать свои навыки и быть активнее на платформе.
*Командные соревнования: Code4Rena иногда проводит командные соревнования, где группы ресерчеров объединяются, чтобы совместно искать уязвимости. Это добавляет элемент командной работы и стратегии в процесс поиска багов.
Что касается системы вознаграждения на Code4Rena по сравнению с классическими платформами:
*Плавающий размер награды: В отличие от фиксированных вознаграждений на классических платформах, на Code4Rena награды могут меняться в зависимости от различных факторов, включая сложность уязвимости, активность участников и общее количество участников.
*Бонусы за активность: На Code4Rena ресерчеры могут получать дополнительные бонусы за активное участие в соревнованиях, обмен опытом с другими участниками и помощь в улучшении платформы.
*Долгосрочные инцентивы: В отличие от одноразовых наград на традиционных платформах, Code4Rena часто предлагает долгосрочные инцентивы для лучших ресерчеров, включая возможности для сотрудничества с крупными компаниями и участие в эксклюзивных проектах (по типу приваток).
В целом, Code4Rena предлагает интересный и необычный подход к багбаунти
Взаимодействие с разработчиками:
Платформа предлагает инструменты для прямой коммуникации между ресерчерами и командами проектов. Это ускоряет процесс исправления уязвимостей и улучшает качество обратной связи.
Экономическая стимуляция:
Награды на Code4Rena часто являются конкурентоспособными, в отличие от «give me my pyadesyat dollars, taxi driver». Вот пруф:
Итак прошерстив некоторые материвалы я вывел роадмап по которому стоит двигаться. Это совершенно не значит что я буду по нему двигаться и все осилю, но я очень постараюсь от него не отступать ?. Ну и постить буду скорее всего исходя из того что я реально изучаю, а не по роадмапу.
Основы блокчейна - Что такое блокчейн и как он работает?
- Каковы принципы децентрализации?
- Криптовалюты и их механика.
Введение в смарт-контракты - Что такое смарт-контракт и каковы его преимущества?
- Основные платформы для смарт-контрактов (Ethereum, Binance Smart Chain и др.).
Языки программирования для смарт-контрактов - Изучение Solidity (основной язык для Ethereum).
- Ознакомление с другими языками, такими как Vyper.
Разработка первого смарт-контракта - Изучение инструментов, таких как Remix.
- Разработка и тестирование простого смарт-контракта.
Введение в безопасность смарт-контрактов - Каковы основные угрозы для смарт-контрактов?
- Типичные ошибки в коде и их последствия.
Инструменты для аудита - Ознакомление с инструментами, такими как Mythril, Slither и Oyente.
- Автоматизированное тестирование и анализ кода.
Ручное тестирование и аудит - Как проводить ручной аудит кода.
- Поиск и устранение уязвимостей в реальных контрактах.
Кейсы из реальной жизни - Изучение реальных примеров аудитов, где были найдены уязвимости.
- Разбор причин и способов их устранения.
Оформление отчетов об аудите - Как правильно и четко документировать результаты аудита.
- Подготовка рекомендаций для заказчика.
Продвинутые темы в аудите смарт-контрактов - Изучение формальной верификации.
- DeFi и его особенности в аудите.
Ну и конечно на code4rena буду поглядывать параллельно с этим всем (это такая багбаунти платформа для веб3. Иногда там бывают программы и с веб3, и с веб2). О принципах работы code4rena.com расскажу дальше.
Маленькое введение. Основы смарт-контрактов: Что это такое и как это работает?
Если вы когда-либо слышали о технологии блокчейн (очень сомневаюсь что тут есть те, кто не слышал ?), но не совсем понимаете, что такое смарт-контракт, то я кратко поясню.
Давай разберёмся с этим на примерах, которые понятны школьнику:
Смарт-контракт - это
Представьте, что у вас есть игрушечный автомат, который может выпустить шарик, когда вы вставляете монетку. Этот автомат просто делает то, что он создан делать, и ничего другого. Также работает и смарт-контракт: когда определенные условия выполнены, он делает то, что от него ожидают, и ничего более.
Как работает Ethereum и другие блокчейны?
Представь блокчейн как большую книгу, где каждый может записать свою историю или правило (в нашем случае — смарт-контракт), и эта книга хранится у многих людей одновременно. Если кто-то пытается изменить запись, другие сразу увидят, что что-то не так, и история не изменится без согласия большинства. Это делает систему очень безопасной.
Для чего это нужно?
Представь, что ты и твой друг хотите обменяться маркерами: ты даешь ему синий, а он тебе — красный. Но вы оба хотите быть уверены, что обмен произойдет честно. Смарт-контракт может автоматически обеспечить это: как только ты положишь синий маркер, контракт убедится, что твой друг дал красный маркер, и тогда обмен произойдет. Таким образом, никто не может обмануть другого.
Теперь представьте, что такие обмены происходят миллионами раз в день, и вместо маркеров это могут быть деньги, акции или даже дома. Смарт-контракты могут упростить и автоматизировать эти процессы, делая их быстрее и надежнее!
Наверняка все те кто сейчас подписан - это знали и понимали, но (надеюсь) придут новые люди которые могут этого не знать им будет тяжеловато усваивать последующую информацию.
Привет!
Когда-то я начинал свой путь в web2 и у меня не хватало мотивации этим заниматься. Поэтому я стал писать об этом в канале для того что бы определенное количество человек следили за этим и в конце концов мне приходилось хоть как-то двигаться чтобы расширять свои знания в этой сфере.
Полтора года назад я решил начать работать с аудитом смарт контрактов и столкнулся о свою же любимую фразу - "через год ты будешь жалеть что не начал сегодня", потому что с того времени я не сдвинулся практически ни на шаг.
Поэтому я решил попробовать пойти по тому же пути что и шел в web2.
Если тебе интересна эта тема, если тебе интересно посмотреть что у меня из этого выйдет, если ты и сам добился каких-то результатов в этом направлении, то добро пожаловать на канал. А если тебе еще и есть что сказать об этом, то есть еще и чатик.
Канал: @api_0_web3
Чат: @api_0_w3
Oneni sikanimga nak uryapsanmi?