Пентест криптопроєкту: аудит смарт-контрактів та інфраструктури

Які вразливості ми шукаємо в смарт-контрактах? Ми проводимо багаторівневий пентест криптопроєктів, який виходить далеко за рамки стандартного web application pentest плюс Slither. Це робота зі смарт-контрактами, інфраструктурою, frontend, bridges, backend API та соціальною інженерією. Ronin Bridg

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

Часті запитання

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

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

Які вразливості ми шукаємо в смарт-контрактах?

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

Пентест криптопроєкту вимагає глибокого розуміння як Solidity, так і архітектури L2 rollups, механізмів консенсусу та економіки DeFi. Без комплексного підходу легко пропустити критичні уразливості, такі як маніпуляція оракулами або реорганізація транзакцій (reorg). Автоматичні інструменти знаходять близько 30% проблем, решту — лише ручний аналіз. Тому ми комбінуємо Slither, Mythril та Aderyn з багатогодинним рев'ю коду. Кожна уразливість класифікується за CVSS, для критичних ми надаємо PoC за лічені години після виявлення. У портфоліо — понад 200 перевірених проєктів, включаючи топ-10 DeFi протоколів за TVL. Ми тестуємо не лише контракти, а й інфраструктуру: RPC ноди, bridge релеї, validator keys management, а також frontend dApp на предмет компрометації supply chain. Кожен компонент може стати точкою входу для атаки.

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

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

# Slither — статичний аналізатор від Trail of Bits slither . --print human-summary slither . --detect reentrancy-eth,reentrancy-no-eth,arbitrary-send-eth slither . --triage-mode # Mythril — symbolic execution myth analyze contracts/Vault.sol --solv 0.8.20 # Aderyn — Rust-based аналізатор, швидший за Slither для великих кодових баз aderyn . 

Автоматичні інструменти знаходять низько висячі плоди: неправильний порядок операцій, невикористані return values, reentrancy в очевидних місцях. Але критичні уразливості вони знаходять рідко. Ручне рев'ю виявляє в 3 рази більше проблем, а для критичних — в 5 разів більше.

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

Фокусні області для мануального рев'ю:

Access control: перевіряємо, хто може викликати privileged функції, коректність onlyOwner / AccessControl, відсутність backdoor через конструктор або 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 може призвести до повної втрати коштів.

// Уразливо: spot price з AMM пулу function getPrice() external view returns (uint256) { (uint112 reserve0, uint112 reserve1,) = pair.getReserves(); return uint256(reserve1) * 1e18 / uint256(reserve0); } // Правильно: TWAP через Uniswap V3 оракул function getTWAPPrice(uint32 twapInterval) external view returns (uint256) { uint32[] memory secondsAgo = new uint32[](2); secondsAgo[0] = twapInterval; secondsAgo[1] = 0; (int56[] memory tickCumulatives,) = pool.observe(secondsAgo); int56 tickDelta = tickCumulatives[1] - tickCumulatives[0]; int24 tick = int24(tickDelta / int56(uint56(twapInterval))); return OracleLibrary.getQuoteAtTick(tick, 1e18, token0, token1); } 

Signature validation: правильна перевірка EIP-712 підписів, захист від replay атак через nonce та chainId.

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

Flash loan атаки на AMM протоколи потребують глибокого розуміння механіки пулів. Ми симулюємо їх у Foundry:

// Симуляція flash loan атаки через Foundry // forge test --match-test testFlashLoanAttack -vvv function testFlashLoanAttack() public { uint256 flashAmount = 1000 ether; vm.deal(address(attacker), flashAmount); uint256 priceBefore = target.getPrice(); attacker.manipulatePool(flashAmount); uint256 priceAfter = target.getPrice(); console.log("Price manipulation:", priceBefore, "->", priceAfter); uint256 profit = attacker.exploit(); attacker.repayFlash(flashAmount); assertGt(profit, 0, "Attack should be profitable"); } 

Чому пентест криптопроєкту складніший за звичайний веб-аудит?

Ми тестуємо не лише API та frontend, а й інфраструктуру блокчейн-нод, bridge контракти, механізми консенсусу валідаторів.

Frontend безпека

Wallet drainer injection: найчастіша атака на dApp — компрометація frontend через supply chain. Перевіряємо наявність Subresource Integrity (SRI) хешів, CSP заголовки, integrity в lockfile. Також шукаємо clipboard hijacking через XSS.

Фішинг через typosquatting: реєстрація схожих доменів. Включаємо в аудит перевірку моніторингу таких доменів та DNS алертингу.

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

RPC endpoint безпека: перевіряємо, чи відкритий RPC публічно, чи є аутентифікація, методи whitelist.

Приклад перевірки RPC
curl -X POST http://node-ip:8545 \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_accounts","id":1}' 

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

Приватні ключі та секрети: аудит управління deploy-ключами (HSM, AWS KMS), перевірка .env файлів у git history, ротація ключів при звільненнях.

Admin panel exposure: пошук незахищених admin інтерфейсів (Grafana, Jenkins, Kibana), перевірка MFA та IP whitelist.

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

Bridge контракти — найбільш ризиковий компонент. Специфічні перевірки:

  • Replay attack: підпис має включати chainId та унікальний nonce.
// Уразливо: немає chainId у підписі bytes32 hash = keccak256(abi.encode(recipient, amount, nonce)); // Правильно: EIP-712 з chainId bytes32 hash = keccak256(abi.encode( BRIDGE_TYPEHASH, recipient, amount, nonce, block.chainid )); 
  • Validator key management: перевіряємо, скільки ключів потрібно скомпрометувати. У Ronin Bridge ефективний threshold був 2/2, незважаючи на 9 валідаторів. Ми моделюємо такі сценарії.
  • Finality assumptions: bridge має чекати фінальності блоку (для Ethereum — 12+ блоків, для BSC — більше).

Етапи аудиту

Етап Що робимо Приклад тривалості
Аналітика Вивчення архітектури, виділення критичних компонентів 1-3 дні
Автоматичний аналіз Прогін Slither, Mythril, Aderyn, аналіз звітів 1-2 дні
Ручне рев'ю Детальна перевірка коду, бізнес-логіки, економіки 3-15 днів
Тестування Foundry-симуляції, fuzzing, економічні атаки 2-5 днів
Складання звіту Опис уразливостей, PoC, рекомендації 1-2 дні

Що входить у звіт

Структура фінального репорту:

Рівень Опис
Critical Пряма втрата коштів, негайна експлуатація
High Значний ризик за певних умов
Medium Логічні помилки, потенційний DoS
Low/Informational Best practices, покращення

Для кожної finding: опис, Proof of Concept (код), потенційний impact, рекомендації, статус після ремедіації. Додатково ми надаємо чек-лист перевірок та консультацію щодо виправлення.

Орієнтовні терміни

Повний пентест займає від 2 до 6 тижнів залежно від складності проєкту. Вартість розраховується індивідуально — напишіть нам для оцінки вашого проєкту. Ми гарантуємо конфіденційність та підписуємо NDA.

Замовте аудит вашого криптопроєкту, щоб виявити уразливості, які пропускають автоматичні сканери. Отримайте консультацію з безпеки — наші інженери з 10-річним досвідом допоможуть захистити ваші кошти.