Проведення пентесту криптопроекту

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Проведення пентесту криптопроекту
Складний
~1-2 тижні
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1306
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1218
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    920
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1147
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    610
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    885

Проведення пентеста криптопроекту

Пентест криптопроекту — це не стандартний web application pentest плюс Slither. Це багатирівневої роботи: смарт-контракти, інфраструктура, frontend, bridges, backend API та соціальна інженерія. Ronin Bridge втратив $625M не через вразливість у контракті — через компрометацію 5 з 9 validator ключів через spear phishing. Ефективний пентест покриває всі вектори атаки.

Scope та методологія

Перше ніж починати, чітко визначити scope. Типові компоненти криптопроекту:

Компонент Вектори атак
Смарт-контракти Reentrancy, flash loan, overflow, access control
Frontend dApp XSS, wallet drainer injection, clipboard hijacking
Backend API Auth bypass, IDOR, rate limiting, key exposure
Інфраструктура Node RPC exposure, private key management, admin panels
Bridge / relayer Replay attacks, signature malleability, validator compromise
Discord/Telegram Bot manipulation, invite phishing, admin account takeover

Аналіз смарт-контрактів

Статичний аналіз

Початок будь-якого пентесту контрактів — автоматизовані інструменти:

# Slither — static analyzer від Trail of Bits
slither . --print human-summary
slither . --detect reentrancy-eth,reentrancy-no-eth,arbitrary-send-eth

# Mythril — symbolic execution
myth analyze contracts/Vault.sol --solv 0.8.20

# Aderyn — Rust-based аналізатор, швидший за Slither на великих кодовых базах
aderyn .

# 4naly3er — спеціалізується на gas та security паттернах

Автоматичні інструменти знаходять низько висяче плід: неверний порядок операцій, неиспользовані return values, reentrancy в очевидних місцях. Критичні вразливості вони знаходять рідко.

Ручний аналіз контрактів

Фокусні області для мануального review:

Access control: хто може викликати привільовані функції? Правильно ли реалізовані onlyOwner / AccessControl? Немає ли backdoor через конструктор або initializer?

// Класична помилка: initializer можна викликати повторно
contract VulnerableProxy {
    bool private initialized;

    function initialize(address _admin) external {
        // ВРАЗЛИВІСТЬ: немає перевірки !initialized
        admin = _admin;
    }
}

// Правильно:
function initialize(address _admin) external {
    require(!initialized, "Already initialized");
    initialized = true;
    admin = _admin;
}

Price oracle manipulation: використовуються ли spot ціни замість TWAP? Можлива ли flash loan атака на oracle?

Signature validation: коректна перевірка EIP-712 підписей? Replay attack protection через nonce або chainId?

Економічні атаки

Flash loan атаки на AMM протоколи вимагають розуміння механіки пулів:

// Симуляція flash loan атаки через Foundry
// forge test --match-test testFlashLoanAttack -vvv

function testFlashLoanAttack() public {
    // 1. Беремо flash loan 1000 ETH
    uint256 flashAmount = 1000 ether;
    vm.deal(address(attacker), flashAmount);

    uint256 priceBefore = target.getPrice();

    // 2. Маніпулюємо пулом — різко купуємо токен
    attacker.manipulatePool(flashAmount);

    uint256 priceAfter = target.getPrice();
    console.log("Price manipulation:", priceBefore, "->", priceAfter);

    // 3. Експлуатуємо протокол з маніпульованою ціною
    uint256 profit = attacker.exploit();

    // 4. Повертаємо flash loan
    attacker.repayFlash(flashAmount);

    assertGt(profit, 0, "Attack should be profitable");
}

Frontend безпека

Wallet drainer injection

Найпоширеніша атака на dApp користувачів — компрометація frontend для внедрення вредоносних approve транзакцій:

Supply chain атака: зловмисник компрометує npm пакет (web3-utils, ethers fork) або CDN, з якого подгружається frontend код. Внедрений скрипт замінює адресу получателя в транзакціях або підсовує setApprovalForAll для NFT контракту.

Перевірка у пентесті:

  • Наявність Subresource Integrity (SRI) хешів для зовнішніх скриптів
  • Content Security Policy заголовки
  • Lockfile (package-lock.json, yarn.lock) з integrity хешами
  • Використовувані CDN і їх цепь довіри

Clipboard hijacking: скрипт замінює адресу у буфері обміну при копіюванні. Просте DOM injection через XSS.

Інфраструктурний аудит

RPC endpoint безпека

Багато протоколів утримують власні Ethereum ноди. Перевіряємо:

# Відкритий ли RPC публічно?
curl -X POST http://node-ip:8545 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_accounts","id":1}'

# Якщо повертає аккаунти — критична вразливість

# Перевірка methods whitelist
curl -X POST http://node-ip:8545 \
  -d '{"method":"admin_nodeInfo","id":1}'  # має бути заблоковано

Приватні ключі та секрети

Аудит управління ключами:

  • Де зберігаються deploy ключи? (HSM, AWS KMS, локальний файл?)
  • Хто має доступ до multisig? Используется ли hardware wallet?
  • Чи є .env файли з ключами у репозиторії (git історія)?
  • Чи були ключі заротовані після звільнення сотрудників?
# Пошук секретів у git історії
git log -p --all | grep -E "(private_key|PRIVATE_KEY|mnemonic|MNEMONIC)" | head -20

# TruffleHog — спеціалізований інструмент
trufflehog git file://. --only-verified

# GitLeaks
gitleaks detect --source . -v

Bridge та cross-chain специфіка

Bridge контракти — найвисокорисковий компонент. Специфічні перевірки:

Replay attack: одна й та сама signed message може бути використана на кількох чейнах. Підпись має включати chainId та унікальний nonce.

Validator key management: скільки validator ключів потрібно компрометувати для атаки? Ronin Bridge мав 9 валідаторів, 5 контрольованих однією організацією (Axie Infinity / Sky Mavis). Ефективний threshold був 2/2, не 5/9.

Finality assumptions: bridge має дочекатися finality блоку перед мінтингом на destination chain. Для Ethereum — 12+ блоків (PoS finality). Для BSC — більше через інший консенсус.

Звіт про пентест

Структура фінального звіту:

Critical: пряма втрата коштів, можлива миттєва експлуатація
High: значний ризик за певних умов
Medium: логічні помилки, потенційні DoS вектори
Low/Informational: порушення best practice, поліпшення

Для кожної findings:

  • Опис вразливості
  • Proof of Concept (код або кроки воспроізведення)
  • Потенційний impact
  • Рекомендації по виправленню
  • Статус після ремедіації

Пентест — це snapshot. Протокол міняється, новий код вимагає нового аудиту. Найкращі протоколи (Uniswap, Aave) проводять аудит кожного значного оновлення та підтримують bug bounty програми через Immunefi для постійного покриття.