Как защитить от DELEGATECALL контрактную модель контракта?

Скажем, у меня есть «главный» контракт, который может создавать другие контракты «слуга». Мастер-контракт направляет пользователей к различным контрактам с обслуживающим персоналом, и каждый контракт с сотрудником должен быть доступен только одному пользователю (и в результате имеет модификатор, который выдает, если msg.sender не является основным договором).

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

Итак, мой вопрос в два раза - может ли DELEGATECALL разрешить этот тип атаки? И если да, можно ли защищаться от такого типа нападений?

Спасибо!

5 голосов | спросил Nathan Rush 22 Jpm1000000pmSun, 22 Jan 2017 12:27:53 +030017 2017, 12:27:53

1 ответ


2

DELEGATECALL обычно может быть уязвимостью к «отправляющему» контракту, а не «получающему» контракту. DELEGATECALL в основном говорит, что я контракт, и я разрешаю вам делать все, что вы хочу my storage : поэтому мне не очень удобно использовать DELEGATECALL для измените ваше хранилище.

Когда контракт C выполняет DELEGATECALL контракт D, C находится на милость D. С помощью DELEGATECALL, код D управляет хранилищем C .

В контрактах с концентратором-концентратором хаб (ведущий), выполняющий DELEGATECALL к переговорным (служным) контрактам, безусловно, уязвим к переговорным контрактам манипулируя состоянием хаба. Поверхность атаки может быть большой, а DELEGATECALL не был предназначен для того, чтобы разрешить произвольный ненадежный код (спицы) манипулировать «общим», state (hub): это может помочь более подробно изучить это с помощью некоторых конкретных примеров. Контракт или «библиотека» обычно имеет только один активный контракт он делегирует одновременно.

Заключенный контракт S, который использует DELEGATECALL в другой контракт на разговор T, находится во власти T, а не атаковать T (как пример с помощью C и D).

ответил eth 23 Jpm1000000pmMon, 23 Jan 2017 14:16:44 +030017 2017, 14:16:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132