TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.47K subscribers
Post #453 183
Безопасность и взлом контрактов v1.0

За последние три недели мы в хорошем темпе прогнали задачи Ethernaut и Damn Vulnerable Defi с одной целью: научиться видеть места, в которых могут таиться уязвимости контрактов.

Да, это несомненно клево суметь решить каждую задачу самому. Однако, теперь я могу с уверенность сказать, что проходить конкретно эти и любые другие задачи нужно дважды. Первый раз -  после изучения основ языка Solidity, и второй раз - после полугода обучения.

Теме безопасности уделяется неимоверно мало времени на курсах и в сети. А между тем, взломы контрактов происходят чуть ли не каждый день. Зная, о потенциальных угрозах с практической точки зрения, мы можем перестроить свою разработку на более безопасный путь.

Научиться видеть и понимать угрозы взлома должны стать базисом обучения разработчиков смарт контрактов.

Предлагаю вспомнить некоторые моменты в контрактах из задач, которые таили в себе уязвимости.

1. Версии Solidity. Достаточно много задач и примеров "плохого" кода были реализованы на старых версиях языка (ниже 0.8). Разработчики Solidity стараются фиксить баги и повышать безопасность с каждым новым релизом. Поэтому крайне рекомендовано использовать последние версии языка.

2. Права доступа. Продумывайте, кто и к каким функциям будет иметь доступ: админ, модератор, обычный пользователь или кто-то еще. Старайтесь максимально обезопасить функции передачи прав собственности и возможность принимать решения по выводу средств.

3. Области видимости функций. Не забывайте, что вызывать из могут и пользователи, и контракты, и callback функции и еще куча всего.

4. Обрабатывайте return, где это только можно. Многие функции, типа transfer и call, возвращают return (true, false, 0), который должен быть обработан перед продолжением выполнения логики функции.

5. Опасный delegatecall. Используйте его, только если наверняка знаете, как он работает и кто его сможет вызвать. Достаточно большое количество взломов было из-за него.

6. Callback функции. Встаньте на место хакера и подумайте, может ли он использовать callback функцию, чтобы забрать деньги с вашего контракта или заполучить права админа.

7. Знание всех функций стандартов. Если работаете с каким-либо стандартом (ERC20, ERC721 и другие), то следует понимать и знать, какие функции там существуют. Если контракт наследует от, например ERC20, то следовательно он имеет доступ ко всем функциям стандарта, даже если они не указны напрямую.

8. Базовые принципы работы. Вообще, связываясь например с прокси контрактами, не следует просто брать готовые шаблоны, даже на openzeppelin. Прежде всего следует изучить как можно больше материалов по работе и безопасности прокси. Бездумное копирование кода приведет к практически 100% гарантии взлома.

Уверен, позже мы еще добавим несколько пунктов в этот список. Но это то, что мы должны были понять после разбора задач.

#безопасность
  • 👍 5
More from @solidityset
  1. Oct 8, 2026Промо видео для SaaS и других ваших проектов Хочу поделить с вами одним из своих открытий…
  2. Oct 8, 2026video post
  3. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  4. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  5. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  6. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →