Розробка системи моніторингу безпеки крос-чейн мостів

Більшість експлойтів на крос-чейн мостах тривають від однієї транзакції до кількох хвилин. Атака на Wormhole ($326M) — одна підписана транзакція, 0 часу на реакцію. Ronin Bridge ($620M) — 5 з 9 валідаторів скомпрометовано, міст жив 6 днів до виявлення. Якщо система моніторингу не аналізує як on-chai

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

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

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

  • 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

Більшість експлойтів на крос-чейн мостах тривають від однієї транзакції до кількох хвилин. Атака на Wormhole ($326M) — одна підписана транзакція, 0 часу на реакцію. Ronin Bridge ($620M) — 5 з 9 валідаторів скомпрометовано, міст жив 6 днів до виявлення. Якщо система моніторингу не аналізує як on-chain активність, так і стан валідаторів — кошти губляться безповоротно. Наше завдання: побудувати систему, яка ловить атаку до або під час, даючи час на паузу протоколу.

Ми розробляємо не просто дашборд із графіками. Це продуктивна система з alert-логікою, circuit breaker-ами та чіткими playbook реагування. Наш досвід включає інтеграцію з OpenZeppelin Defender та Tenderly Web3 Actions для автоматизованої зупинки мосту при аномаліях. За 5+ років ми реалізували 15+ систем моніторингу для DeFi-протоколів, що дозволяє нам гарантувати надійність рішення.

Основні загрози для крос-чейн мостів

Мости — критична інфраструктура DeFi. Основні вектори атак:

  • Reentrancy у смарт-контрактах — класична атака, посилена cross-chain викликами.
  • Компрометація валідаторів / relayer — зловмисник отримує більшість підписів і підтверджує неправдиві транзакції.
  • Oracle manipulation — маніпуляція ціновим фідом для нечесного обміну.
  • Flash loan атаки — миттєва позика коштів для створення дисбалансу пулу.

Система моніторингу повинна відстежувати кожен із цих сценаріїв як на вихідному ланцюзі, так і на цільовому.

Як система детектує аномалії?

Система будується на трьох рівнях, кожен з різним часом реакції:

Рівень 1 — on-chain real-time (< 1 блок). Моніторинг pending транзакцій у mempool на підозрілі патерни: множинні cross-chain виклики, незвичні обсяги, взаємодія з новими контрактами. Технічно складно (потрібен доступ до private mempool через Flashbots або Eden), але дає найраніше попередження.

Рівень 2 — on-chain per-block (< 12 секунд на Ethereum). Аналіз кожного нового блоку: події мосту (BridgeInitiated, BridgeFinalized), зміни балансів у пулах ліквідності, аномальні накопичення голосів валідаторів.

Рівень 3 — off-chain aggregated (хвилини-години). Агрегація даних за період, trend analysis, cross-chain кореляції. Виявляє повільно розвиваючі атаки: дрейф лімітів, накопичення підписів неактивними валідаторами.

Як працює on-chain circuit breaker для мостів?

Найцінніший компонент — можливість автоматично або напівавтоматично паузити міст при виявленні атаки. На відміну від стандартного Pausable (OZ), ми використовуємо rate limiting на рівні контракту, який спрацьовує автоматично при аномальному обсязі переказу:

contract BridgeWithCircuitBreaker is Pausable, AccessControl { bytes32 public constant GUARDIAN_ROLE = keccak256("GUARDIAN_ROLE"); uint256 public maxTransferPerBlock; uint256 public maxTransferPerHour; uint256 private _transferredThisBlock; uint256 private _transferredThisHour; uint256 private _lastBlockNumber; uint256 private _lastHourTimestamp; modifier withinRateLimit(uint256 amount) { _updateRateLimitCounters(); require(_transferredThisBlock + amount <= maxTransferPerBlock, "Block rate limit exceeded"); require(_transferredThisHour + amount <= maxTransferPerHour, "Hour rate limit exceeded"); _transferredThisBlock += amount; _transferredThisHour += amount; _; } function transfer(address token, uint256 amount, address to) external whenNotPaused withinRateLimit(amount) { // ... логіка переказу } function emergencyPause() external onlyRole(GUARDIAN_ROLE) { _pause(); emit EmergencyPause(msg.sender, block.timestamp); } function _updateRateLimitCounters() private { if (block.number > _lastBlockNumber) { _transferredThisBlock = 0; } if (block.timestamp >= _lastHourTimestamp + 1 hours) { _transferredThisHour = 0; _lastHourTimestamp = block.timestamp; } } } 

Rate limits не блокують нормальну роботу, але зупиняють drain-атаку з великими обсягами. Встановити ліміти на рівні 2-3x типового обсягу мосту — баланс між UX та безпекою.

Чому інваріантний моніторинг ефективний проти експлойтів?

Для кожного крос-чейн мосту існують математичні інваріанти, які завжди повинні дотримуватися. Моніторинг інваріантів — елегантний спосіб зловити експлойт:

  • Bridge з mint/burn: sum(totalSupplyOnSource) + sum(totalSupplyOnDestination) == constant (без урахування комісій).
  • AMM міст: reserve0 * reserve1 >= k для кожної пари.

Приклад Python-функції для перевірки:

async def check_invariants(block_number: int): total_locked = await bridge.functions.totalLocked().call(block_identifier=block_number) total_minted = await bridge.functions.totalMinted().call(block_identifier=block_number) if total_locked != total_minted: await alert_critical(f"INVARIANT VIOLATED at block {block_number}: locked ({total_locked}) != minted ({total_minted})") 

Порушення інваріанту — вірна ознака багу або активної атаки.

Автоматична пауза через off-chain Keeper

OpenZeppelin Defender Actions — serverless функції, що реагують на on-chain події. Приклад: моніторинг TVL пулу мосту та автоматична пауза при різкому падінні:

const { ethers } = require("ethers"); module.exports = async function(credentials) { const provider = new ethers.providers.JsonRpcProvider(credentials.secrets.ALCHEMY_URL); const vault = new ethers.Contract(VAULT_ADDRESS, VAULT_ABI, provider); const currentTVL = await vault.totalAssets(); const previousTVL = await storage.get('previousTVL') || currentTVL; const dropPercent = (previousTVL - currentTVL) * 100n / previousTVL; if (dropPercent > 15n) { const signer = credentials.relayer.getSigner(); const guardian = new ethers.Contract(GUARDIAN_ADDRESS, GUARDIAN_ABI, signer); await guardian.emergencyPause(); await notifySlack(`CRITICAL: TVL dropped ${dropPercent}% — bridge paused`); } await storage.put('previousTVL', currentTVL.toString()); }; 

Alerting та incident response

Severity алертів налаштована так:

Severity Критерій Реакція Час реакції
P1 Critical Активна атака, втрата funds Негайна пауза + дзвінки команді < 2 хвилини
P2 High Порушення інваріанту, oracle маніпуляція Пауза + рев'ю протягом години < 15 хвилин
P3 Medium Аномальний обсяг, незвична поведінка Рев'ю наступного дня < 4 години
P4 Low Статистичне відхилення Щотижневе рев'ю Async

P1/P2 алерти відправляються в PagerDuty з on-call ротацією, P3 — у Telegram чат, P4 — у Slack daily digest.

Приклад Incident Response Playbook

Сценарій: TVL drop > 15% в одному блоці.

  1. On-call черговий отримує PagerDuty alert (< 2 хв).
  2. Перевірити Etherscan: знайти транзакцію, причину TVL drop.
  3. Якщо експлойт — викликати emergencyPause() через Defender Relayer.
  4. Повідомити команду в Signal (не в публічний Telegram).
  5. Через 15 хвилин: публічне повідомлення користувачам про паузу.
  6. Post-mortem аналіз: як атака пройшла, як fix, коли unpause.

Playbook тестуємо на drill exercises у тестовому середовищі.

Що входить в нашу роботу

  • Аудит архітектури вашого мосту та виявлення критичних інваріантів
  • Розробка смарт-контрактів circuit breaker з rate limiting (Solidity)
  • Розгортання event indexer та детектора аномалій (Python / TypeScript)
  • Налаштування alerting pipeline (PagerDuty, Telegram, Slack)
  • ML-модель Isolation Forest для невідомих атак
  • Документація та протестовані playbook реагування на інциденти
  • Навчання вашої команди роботі з системою
  • Підтримка після запуску

Терміни розробки

Компонент Технологія Час розробки
Event indexer web3.py / viem subscriptions 1-2 тижні
Rule-based detector Python rules engine 1-2 тижні
Invariant monitor Python + contract calls 1 тиждень
Circuit breaker contract Solidity + OZ Pausable 1 тиждень
Alerting pipeline PagerDuty + Telegram 3-5 днів
ML anomaly detection scikit-learn 2-3 тижні
Defender Autotasks JavaScript + Defender SDK 1 тиждень
Dashboard Grafana + InfluxDB 1-2 тижні

MVP система (rule-based + alerting + базовий circuit breaker) — 4-6 тижнів. Повна система з ML, автоматичною паузою, dashboard та playbook-ами — 10-14 тижнів.

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