Перейти к содержанию

Атака на управление

Атака на управление получает достаточно голосов или исполнительных полномочий, чтобы провести вредные изменения по разрешённой процедуре.

Обновлено

Только в образовательных целях; не является инвестиционным советом или инвестиционной рекомендацией. Инвестиции могут привести к убыткам.

Краткий ответ

При атаке на управление злоумышленник получает достаточно голосов, прав на внесение или отмену предложений либо исполнительных полномочий и заставляет протокол совершить вредное действие по разрешённой процедуре управления. Вызовы могут пройти все проверки смарт-контрактов. Ошибка состоит в том, что контроль можно получить слишком дёшево, быстро или без надлежащей ответственности по сравнению с подконтрольной стоимостью.

Право голоса может происходить из собственных токенов, делегированных голосов, заёмных токенов, подкупа участников, скомпрометированных ключей или привилегированных ролей в Governor и временной блокировке. Исторические контрольные точки не дают одному балансу голосовать повторно после перевода и могут пресечь заём после снимка. Они не защищают от голосов, полученных до снимка, концентрации делегирования, слабого кворума или захвата исполнителя.

Не каждое непопулярное предложение является атакой: управление предназначено для изменения правил. Важно понять, получил ли участник несоразмерный или временный контроль, скрыл или исказил исполняемый эффект либо нарушил публично заявленную границу полномочий. Следует проверять фактические вызовы, самый дешёвый путь к решающей власти, время на реакцию и максимальную стоимость или контроль, доступные после исполнения.

Как это работает

  1. Проследите полномочия от голосующего актива через делегирование и контрольные точки до Governor, временной блокировки, администратора прокси, казначейства, аварийных ролей и целевых контрактов. Интерфейс управления не является графом разрешений.
  2. Зафиксируйте сеть, адреса, версии реализаций, режим часов, снимок, порог предложения, расчёт кворума, правило подсчёта, задержку и период голосования, задержку очереди, срок действия, права отмены и роли исполнения.
  3. Восстановите право голоса в точный момент снимка с помощью исторических запросов вроде getPastVotes. Объедините адреса под контролем или координацией одного лица и отделите баланс токенов от делегированного веса.
  4. Декодируйте каждое действие: targets, values, calldatas и descriptionHash. Разберите прокси и селекторы, проверьте пакетные вызовы и сопоставьте исполняемую нагрузку с понятным описанием.
  5. Воспроизведите создание, голосование, постановку в очередь и исполнение на форке. Сравните до и после балансы, собственность, роли, разрешения, реализации, настройки оракулов, параметры залога и новые доступные функции.
  6. Оцените самый дешёвый путь контроля через спотовые покупки, кредитные рынки, мгновенную ликвидность, внебиржевые займы, делегирование, поощрения за голосование, хеджирование деривативами, компрометацию ключей и захват привилегированной роли. Учтите комиссии, проскальзывание, залог, убыток при выходе и срок связывания капитала.
  7. Проверьте реагирование. Установите, кто может отменить или приостановить действие, какие доказательства нужны, хватит ли задержки, где пользователи получают официальные уведомления и как возобновить управление без неограниченного аварийного ключа.

Типичный токенизированный Governor проходит состояния предложения, задержки, снимка, голосования, принятия или отклонения, очереди, временной блокировки и исполнения. Точные правила зависят от реализации. Контрольные точки типа ERC-5805 позволяют запросить делегированный вес в прошлом; часы могут использовать номера блоков или метки времени. Нужно применять развёрнутые часы и конфигурацию, а не считать показанную длительность или баланс токенов достоверными по умолчанию.

Временная блокировка создаёт минимальный срок уведомления, но не оценивает намерение и не делает нагрузку безопасной. Её роли инициатора, исполнителя, отменяющего и администратора сами критичны. Если внешний администратор обходит задержку, блокировка не является последней инстанцией. Если никто не может отменить вредное действие в очереди, одно обнаружение не остановит исполнение.

Расчётные примеры

  • Захват при низкой активности. Всего у протокола 100 million токенов, а в обращении 40 million. Предложению нужны 2 million участвующих голосов, перевес голосов за и блокировка 6-hour. Участник покупает 1.2 million голосов и получает 1 million делегированных. Против подано 0.8 million, поэтому его 2.2 million голосов за проводят вызов, способный вывести 15 million USDC из казначейства. Участник контролирует 2.2 / 100 = 2.2% общего предложения и 2.2 / 40 = 5.5% обращения, но 2.2 / 3.0 = 73.3% поданных голосов. Решающее значение имеют активность, делегирование, кворум, полномочия нагрузки и задержка, а не лозунг 51%.
  • Граница снимка. Если вес читается из текущего баланса и исполнение мгновенно, одна транзакция может занять токены, проголосовать, исполнить и вернуть их. Чтение неизменяемого исторического веса до голосования закрывает этот атомарный путь. Капитал, занятый или делегированный до снимка, остаётся пригодным, поэтому задержка предложения и наблюдаемое окно накопления также служат защитой.
  • Beanstalk 17 апреля 2022 года. Beanstalk Farms сообщила, что злоумышленник применил мгновенный заём для эксплуатации механизма управления и похитил примерно $77 million пользовательских активов, не относящихся к Beanstalk. Случай показывает, что мгновенная ликвидность финансирует атаку, а решающая слабость позволяет временной экономической силе достичь ценных исполнительных разрешений.

Риски и меры контроля

  • Концентрация фактической власти. Измеряйте делегатов и координируемые лица, а не только адреса. Публикуйте долю крупнейших делегатов, распределение участия и зависимость от фондов, хранителей, маркетмейкеров и представителей.
  • Слабые правила предложений и кворума. Сопоставляйте пороги с активным весом, доступным для займа предложением и риском казначейства. Разделяйте требования к обычным параметрам и значимым обновлениям или переводам.
  • Небезопасные снимки. Используйте неизменяемые исторические точки и общие часы токена и Governor. Оставляйте до снимка достаточно времени, чтобы необычное накопление или делегирование стало заметно.
  • Позднее или неожиданное голосование. Рассмотрите минимальное продление, если кворум достигнут у самого срока, и следите за крупными изменениями делегирования весь цикл.
  • Непрозрачная нагрузка. Публикуйте декодированные вызовы и независимые симуляции. Разделяйте несвязанные рискованные действия, чтобы безобидный пункт не скрывал смену администратора или перевод.
  • Недостаточная задержка исполнения. Соотносите блокировку с последствиями и публикуйте операции в очереди. Срок должен позволять проверку, оповещение, отмену или паузу и правдоподобный выход пользователей.
  • Чрезмерные аварийные роли. Ограничивайте хранителей по функции, стоимости, сроку и стандарту проверки. Раскрывайте состав, пороги, ротацию, требования к доказательствам, отстранение и возобновление.
  • Непроверенные пути обновления. Отслеживайте администраторов прокси, маяки, инициализаторы, метаморфные развёртывания и контракты, обновляемые после получения полномочий.
  • Риск межсетевого исполнения. Проверяйте исходные Governor и сообщение, защищайтесь от повторов, ограничивайте целевые функции, добавляйте локальную задержку и определяйте поведение при сбое или остановке моста.
  • Недостаточный мониторинг. Оповещайте о создании предложений, концентрации голосов, изменении кворума, очереди и отмене, декодированных изменениях состояния, обновлениях, выдаче ролей, разрешениях и оттоке казначейства.
  • Неисправное реагирование. Отрабатывайте вредные предложения, потерю подписантов, компрометацию интерфейса, отказ моста и ложные паузы. Фиксируйте, кто принимает решение, сообщает, подписывает, проверяет и безопасно восстанавливает работу.
  • Неограниченная стоимость под риском. Ограничивайте разовые и накопительные переводы, область обновлений, выпуск, изменение залога и разрешения. Принятое голосование не должно автоматически давать безграничную власть.

Результатом должен стать воспроизводимый реестр контроля: каждое привилегированное действие, его контролёр, нужные голоса или ключи, самое раннее время исполнения, путь отмены, источник мониторинга и максимальная достижимая стоимость. Пересчитывайте его после обновлений, распределения токенов, изменения делегирования, миграции мостов или крупных изменений ликвидности и участия.

Распространённые заблуждения

  • «Злоумышленнику нужно 51% общего предложения». Большинство систем зависит от делегированных или участвующих голосов, кворума и правила принятия. Решающий контроль может стоить намного меньше половины предложения.
  • «Снимки устраняют атаки на управление». Они предотвращают отдельное повторное использование голосов или заём в последний момент, но не более ранние займы, покупки, концентрацию делегирования, подкуп и компрометацию привилегированных ключей.
  • «Принятое голосование в сети доказывает легитимность». Оно доказывает лишь выполнение условий кода, а не соответствие описания нагрузке, безопасность, справедливость или соблюдение публичных обязательств.
  • «Чем дольше блокировка, тем безопаснее». Она полезна, только если в неё помещаются мониторинг, анализ, отмена или пауза, связь и выход. Чрезмерная задержка может мешать срочному обслуживанию.
  • «Совет безопасности решает риск управления». Он ускоряет реакцию, но создаёт ещё один путь контроля. Его полномочия, ответственность, отстранение и сбои должны входить в ту же модель угроз.

Связанные темы

Источники

Навигация

Поиск по вики...