Skip to content
Learning Platform
Intermediate
35 minutes
OWASP SWC Vulnerability DeFi Attacks Security Audit

Prerequisites:

  • 04-ethereum/07-solidity-patterns

Обзор уязвимостей смарт-контрактов

Зачем это блокчейн-разработчику?

Смарт-контракты управляют миллиардами долларов и не могут быть исправлены после деплоя. Одна уязвимость — одна транзакция — и все средства потеряны навсегда. В отличие от традиционного ПО, здесь нет hotfix, нет rollback, нет “мы исправим в следующем релизе”.

С 2016 по 2024 год потери от уязвимостей смарт-контрактов превысили **6миллиардов.TheDAOhack(2016)привелкхардфоркуEthereum.Wormholebridge(2022)потерял6 миллиардов**. The DAO hack (2016) привел к хардфорку Ethereum. Wormhole bridge (2022) потерял 326M за одну транзакцию. Каждая атака — это урок, закрепленный в стандартах безопасности.

В этом модуле мы систематически изучим уязвимости: от классификации OWASP до практических эксплойтов в Foundry. Мы начинаем с обзора — чтобы видеть полную картину перед глубоким погружением.

Мост от пройденных тем к безопасности

Вы уже изучили концепции, которые являются фундаментом безопасности:

Пройденная темаУрокСвязь с безопасностью
CEI pattern (Checks-Effects-Interactions)ETH-07Нарушение CEI -> reentrancy (SEC-02)
amountOutMin в swapDEFI-02/03Отсутствие slippage protection -> sandwich attack (SEC-07)
Flash loansDEFI-06Flash loan как инструмент атаки: манипуляция оракулов (SEC-05)
ERC-20 approveETH-08Бесконечный approve -> drain средств
Ownable / Access ControlETH-08Отсутствие модификаторов доступа -> кража средств (SEC-04)
Gas и EVMETH-05Газовые лимиты -> DoS атаки (SEC-08)

Ключевой инсайт: Безопасность — это не отдельная дисциплина, а следствие глубокого понимания каждого компонента. CEI, который вы изучили в ETH-07, предотвращает самую дорогостоящую уязвимость в истории Ethereum.

OWASP Smart Contract Top 10 (2025)

Что такое OWASP?

OWASP (Open Worldwide Application Security Project) — международная некоммерческая организация, создающая стандарты безопасности. Их Top 10 — каноническая классификация наиболее критичных уязвимостей. Для веб-приложений OWASP Top 10 существует с 2003 года. Для смарт-контрактов — с 2023 года.

SWC Registry

SWC (Smart Contract Weakness Classification) — реестр уязвимостей смарт-контрактов, аналог CWE для традиционного ПО. Каждая уязвимость имеет идентификатор (SWC-107 для reentrancy, SWC-100 для функций с неограниченным доступом).

Классификация Top 10

OWASP Smart Contract Top 10 (2025)
Этот модуль
SEC-05..08
Упоминается
#1Этот модуль
Access Control
Отсутствие или обход ограничений доступа к функциям контракта
#2SEC-05..08
Price Oracle Manipulation
Манипуляция ценовыми оракулами для извлечения прибыли
#3SEC-05..08
Logic Errors
Ошибки в бизнес-логике контракта, не покрытые другими категориями
#4SEC-05..08
Lack of Input Validation
Отсутствие проверки входных данных (параметров функций)
#5Этот модуль
Reentrancy
Рекурсивный вызов функции до завершения обновления состояния
#6SEC-05..08
Unchecked External Calls
Игнорирование возвращаемого значения low-level call
#7SEC-05..08
Flash Loan Attacks
Использование мгновенных займов для манипуляции состоянием протокола
#8Этот модуль
Integer Overflow / Underflow
Переполнение арифметических операций (unchecked блоки в 0.8+)
#9SEC-05..08
Denial of Service
Блокировка работы контракта (gas limit, selfdestruct)
#10SEC-05..08
Front-Running / MEV
Опережающие транзакции и sandwich-атаки через mempool
OWASP Smart Contract Top 10Классификация 10 наиболее критичных уязвимостей смарт-контрактов. Access Control (#1) и Reentrancy (#5) -- самые дорогостоящие по историческим потерям.

Покрытие в этом курсе

В этом модуле (Security & Audit) мы детально разберем:

  • #1 Access Control (SEC-04): Ownable, Ownable2Step, AccessControl (RBAC)
  • #5 Reentrancy (SEC-02): 4 варианта, CEI, ReentrancyGuard, ReentrancyGuardTransient
  • #8 Integer Overflow/Underflow (SEC-03): unchecked, downcasting, SafeCast

Остальные категории (#2 Oracle Manipulation, #3 Logic Errors, #6 Unchecked External Calls, #7 Flash Loan Attacks, #9 DoS, #10 Front-Running) будут рассмотрены в SEC-05 через SEC-08.

Хронология крупнейших DeFi-атак

Зачем изучать историю атак?

Каждая атака привела к:

  1. Новым стандартам — OpenZeppelin ReentrancyGuard появился после The DAO
  2. Новым инструментам — Slither, Mythril, Foundry fuzzing
  3. Новым паттернам — CEI, pull-over-push, TWAP оракулы
  4. Регуляторным изменениям — SEC обратила внимание на DeFi после крупных взломов
Хронология крупнейших DeFi-атак (2016--2023)
Reentrancy
Access Control
Oracle
Flash Loan
Logic Error
Overflow
$0M$250M$500M$750M$60M2016The DAO$900M (рыночная)2018BEC Token (..$8M2020bZx Flash L..$611M2021Poly Network$326M2022Wormhole Br..$114M2022Mango Marke..$197M2023Euler Finan..
Ключевой выводПотери от уязвимостей смарт-контрактов превышают $2B. The DAO (2016) привел к хардфорку Ethereum. Каждая атака привела к созданию новых инструментов и стандартов безопасности.

Анализ паттернов

Распределение по типам уязвимостей за 2016—2024:

Тип уязвимости% от общих потерьКрупнейший инцидент
Access Control~35%Poly Network ($611M)
Logic Errors~25%Wormhole (326M),Euler(326M), Euler (197M)
Reentrancy~15%The DAO (60M),Curve(60M), Curve (62M, 2023)
Oracle Manipulation~15%Mango Markets ($114M)
Integer Overflow~5%BEC Token ($900M рыночная)
Flash Loan~5%bZx ($8M), множество мелких

Наблюдение: Access Control — уязвимость #1 не случайно. Ошибка в одной строке (отсутствие onlyOwner) может стоить сотен миллионов.

Три уровня понимания безопасности

Уровень 1: Интуитивный (аналогия)

Смарт-контракт — это банковский сейф с программируемым замком:

  • Код замка (логика контракта) виден всем (открытый исходный код)
  • Замок нельзя поменять после установки (immutable deployment)
  • Взломщику не нужен физический доступ — достаточно найти ошибку в коде замка
  • Все деньги в сейфе доступны мгновенно через одну транзакцию

Уровень 2: Алгоритмический (код)

Каждая уязвимость — это конкретный паттерн кода, который можно:

  1. Идентифицировать статическим анализом (Slither, Semgrep)
  2. Эксплуатировать в тестах (Foundry vm.prank, vm.deal)
  3. Исправить применением стандартного решения (OZ libraries)
  4. Верифицировать формальной проверкой (Certora, Halmos)
// Паттерн уязвимости (pseudo):
function vulnerable() {
    // CHECK: проверка условия
    require(condition);

    // INTERACTION: внешний вызов (ОШИБКА -- слишком рано!)
    externalCall();

    // EFFECT: обновление состояния (слишком поздно!)
    updateState();
}

// Исправленный паттерн (CEI):
function safe() {
    // CHECK: проверка условия
    require(condition);

    // EFFECT: обновление состояния
    updateState();

    // INTERACTION: внешний вызов (теперь безопасно)
    externalCall();
}

Уровень 3: Формальный (математический)

Безопасность смарт-контракта можно формализовать как набор инвариантов — свойств, которые должны выполняться при любой последовательности транзакций:

Инвариант 1 (сохранение средств):
  forall state S, tx T:
    sum(balances) after T == sum(balances) before T + deposits - withdrawals

Инвариант 2 (авторизация):
  forall tx T calling restricted_function():
    T.sender in authorized_set

Инвариант 3 (целостность состояния):
  forall state S during any callback:
    S is consistent (no stale values)

Нарушение инварианта 1 — это reentrancy (средства извлекаются без уменьшения баланса). Нарушение инварианта 2 — это access control. Нарушение инварианта 3 — это read-only reentrancy.

Инструменты безопасности

ИнструментТипЧто находит
SlitherСтатический анализReentrancy, unused variables, shadow variables
MythrilСимвольное выполнениеInteger overflow, unchecked call returns
Foundry FuzzingФаззингНарушения инвариантов при случайных входах
Certora ProverФормальная верификацияМатематическое доказательство инвариантов
EchidnaProperty-based testingСвойства, которые должны всегда выполняться
HalmosSymbolic testingСимвольное тестирование в Foundry

Для этого курса: Мы используем Foundry для эксплуатации уязвимостей (vm.prank, vm.deal, vm.expectRevert) и демонстрации исправлений.

Структура модуля Security & Audit

УрокТемаOWASP #Лабораторная
SEC-01Обзор уязвимостей (этот урок)Все
SEC-02Reentrancy (4 варианта)#5VulnerableVault exploit
SEC-03Integer Overflow/Underflow#8LegacyOverflow tests
SEC-04Access Control#1UnsafeToken exploit
SEC-05Oracle Manipulation & Flash Loans#2, #7Price manipulation
SEC-06Logic Errors & Input Validation#3, #4Fuzzing invariants
SEC-07Front-Running & MEV#10, #6Sandwich simulation
SEC-08DoS & Audit Process#9Full audit checklist

Итоги

Что мы узнали:

  1. OWASP Smart Contract Top 10 — каноническая классификация уязвимостей. Access Control (#1) и Reentrancy (#5) — самые дорогостоящие.
  2. SWC Registry — идентификаторы уязвимостей (SWC-107, SWC-100 и др.)
  3. Хронология атак — от The DAO (2016) до Euler (2023), каждая привела к новым стандартам
  4. Три уровня — интуитивный (аналогии), алгоритмический (код), формальный (инварианты)
  5. Связь с пройденным — CEI, flash loans, access control из предыдущих модулей

Что дальше: В SEC-02 мы детально разберем reentrancy — самую “иконическую” уязвимость Ethereum — и напишем эксплойт в Foundry.

Finished the lesson?

Mark it as complete to track your progress