Чому ми Вебінари Навчання Гранти Спільнота FAQ Увійти Створити акаунт
X YouTube Medium
— Гайд з безпеки DeFi

Вразливості DEX: атаки та захист

Re-entrancy, front-running, price manipulation, liquidity drain. Розбір кожної атаки з прикладами уразливого коду та захищеного коду на Solidity.

Інтерактивні сценарії вразливостей та захисту

Яка стадія DEX захищена від якої атаки?

Вразливість
Stage 1
Stage 2
Stage 3
Reentrancy Attack
CRITICAL
Front-Running Attack
HIGH
Price Manipulation
HIGH
Integer Overflow
SAFE
Liquidity Drain Attack
MEDIUM
БЕЗПЕКА ЗАГАЛОМ
40%
60%
100%
Critical Vulnerability
High Risk
Safe / Fixed
Reentrancy Attack
CRITICAL

Атакуючий може викликати функцію контракту повторно до завершення попереднього виклику, виводячи всі кошти з пулу.

// Vulnerable
function withdraw() {
  msg.sender.call{value: amount}("");
  balance = 0; // Too late!
}
Fix: ReentrancyGuard
Використовуємо OpenZeppelin ReentrancyGuard modifier
Front-Running Attack
HIGH

Боти відстежують mempool та виконують ваш swap раніше, змінюючи ціну на вашу шкоду. Ви отримуєте гірший курс обміну.

// Your TX: swap 100 CFX
// Bot sees it in mempool
// Bot TX (higher gas): swap 1000 CFX
// Your TX executes at worse price
Fix: Slippage Protection
Параметр minAmountOut гарантує мінімальну суму виходу
Price Manipulation
HIGH

Маніпуляція ціною через великі swap в маленьких пулах або атака на перших постачальників ліквідності.

// Pool: 10 CFX + 100 USDT
// Attacker adds 0.001 CFX + 0.001 USDT
// Price manipulated!
// Attacker gets huge LP share
Fix: MINIMUM_LIQUIDITY
Спалюємо перші 1000 wei LP токенів назавжди
Integer Overflow
SAFE

У старих версіях Solidity переповнення чисел могло призвести до втрати коштів. Solidity 0.8+ автоматично перевіряє overflow/underflow.

// Solidity 0.8+
uint256 a = type(uint256).max;
a = a + 1; // Reverts automatically
Safe by default
Використання Solidity 0.8.20 захищає від overflow
Liquidity Drain
HIGH

LP може вивести всю ліквідність одразу після великого swap, залишивши трейдерів без можливості обміну назад.

// You swap 100 CFX → 990 USDT
// LP immediately removes liquidity
// You can't swap back!
Fix: Time Locks
Додати timelock для виводу ліквідності після додавання
SimpleDEX Security
PROTECTED

Наш SimpleDEX контракт захищений від основних вразливостей завдяки перевіреним практикам та OpenZeppelin бібліотекам.

ReentrancyGuard
Slippage Protection
MINIMUM_LIQUIDITY
Solidity 0.8+ (overflow safe)
OpenZeppelin standards
Production Ready
Можна деплоїти на mainnet після аудиту
Усі матеріали Захищений код Stage 3