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

Какие уязвимости мы ищем в смарт-контрактах? Мы проводим многоуровневый пентест криптопроектов, который выходит далеко за рамки стандартного web application pentest плюс Slither. Это работа со смарт-контрактами, инфраструктурой, frontend, bridges, backend API и социальной инженерией. Ronin Bridge

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

Часто задаваемые вопросы

Последние работы

  • 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-летним опытом помогут защитить ваши средства.