TGViewer
Noobing Security Research Noobing Security Research @web3securityresearch · 278 subscribers
Post #73 273
Пришло время поговорить про Proxy

Атаки на прокси в этом году замыкают TOP 10 OWASP, при этом являясь новинкой сезона. Какие-то уязвимости попроще, например использование коллизии storage, какие-то достаточно изощренные, как CPIMP, про который я писал ранее

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

Смарт-контракты по своей природе неизменяемы, поэтому их код нельзя обновить после деплоя. Прокси позволяют обойти это ограничение, давая возможность обновлять логику, сохраняя при этом тот же адрес контракта и все накопленные данные. Они работают за счет разделения контракта на две части: хранилище/прокси (Storage/Proxy Contract) и логику/имплементацию (Implementation/Logic Contract)


Существуют 5 видов прокси-схем:

1) Clones/Minimal Proxy, они же ERC-1167. Самая минималистичная и простая версия прокси. Необновляемые контракты, где адрес имплементации вшит в байткод контракта, а еще вшита логика DELEGATECALL и возврат результата. И это в общем-то всё содержимое клона, 45 байт совершенства. Стандарт существует в виде библиотеки, суть в том, чтобы выпускать множество клонов контрактом Фабрикой (Factory). Пользователь -> клон -> имплементация
2) Transparent Proxy Pattern (TPP). Схема простая: пользователь отправляет запрос на прокси контракт, а тот делает переадресацию на текущую имплементацию. Здесь код последней на данный момент версии от OZ, существует в виде контракта. Рекомендуется делать так, чтобы владельцем прокси контракта был контракт ProxyAdmin, а не EOA. При каждом вызове прокси проверяет, является ли вызывающий админом, а это стоит 2100 газа. Администратор не имеет права вызывать бизнес-логику. Обновление имплементации контролируется прокси контрактом. Пользователь -> прокси -> имплементация
3) Universal Upgradeable Proxy Standard (UUPS). Ровно та же схема пользователь -> прокси -> имплементация, но функционал обновления имплементации находится в самой имплементации, отсутствие необходимости проверки администратора при каждом вызове экономит газ. Каждая новая имплементация обязана содержать функцию upgradeTo(). Стандарт существует в виде абстрактного контракта
4) Beacon Proxy. Пользователь обращается к своему beacon proxy, тот посылает запрос на Маяк (UpgradeableBeacon), который хранит адрес имплементации, то есть получается пользователь -> Beacon Proxy -> UpgradeableBeacon -> имплементация. Этот промежуточный Маяк позволяет обновлять адрес имплементации для множества пользователей одновременно
5) Diamond proxy. Стандарт EIP-2535. Единственный в списке без реализации от OpenZeppellin. Придуман как решение обхода ограничения размера контракта, по сути служит другим целям нежели остальные, является сложным и нишевым (как будто остальные просты). Суть в том, что прокси контракт перенаправляет вызовы в зависимости от приходящего селектора функции, то есть фактически один большой контракт разбивается на модули и увязывается с помощью прокси-оркестратора. Позволяет менять логику частично. В ноябре 2025 выходил гайд от QuickNode.

- Clones и Beacon используются для связи один ко многим
- Transparent и UUPS используются для связи один к одному
- Transparent и UUPS наследуются от ERC1967Proxy
- Beacon и ERC1967Proxy наследуется от Proxy
- Beacon при этом использует библиотеку ERC1967Utils, как и ERC1967Proxy
- Proxy просто кайфует

Стандарт EIP1967 отвечает за хранение адреса имплементации и другой прокси специфичной информации

Ставь лайк, если стало немного понятнее кто есть кто

https://t.me/web3securityresearch
  • ❤ 10
More from @web3securityresearch
  1. Sep 22, 2026Прочитал лекцию про атаки на память, оставлю слайды и здесь
  2. Sep 10, 2026Post #100
  3. Aug 27, 2026я бы рад писать короче, но тема очень широкая. Сегодня статья про HMAC-подписи записей аге…
  4. Aug 27, 2026Post #98
  5. Aug 18, 2026Post #97
  6. Aug 12, 2026Исследователи нашли первый подробно задокументированный, почти автономный, взлом государст…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →