Дивергенция состояний позволяе... Заметка

Дивергенция состояний позволяет получить несанкционированный доступ

Исследователи обнаружили критическую ошибку в Provenance Blockchain, публичной сети с доказательством доли владения (proof-of-stake), которая позволяла неавторизованным пользователям получать административный контроль над учетными записями маркеров. Эта уязвимость затронула 82 маркера, представляющих реальные финансовые активы в основной сети. Ошибка, присутствовавшая в версиях до 1.28.0, была сообщена Provenance 1 апреля 2026 года. Она была частично устранена в версии 1.28.0 и полностью исправлена в версии 1.29.0.Маркеры являются основным примитивом Provenance для взаимозаменяемых токенов, каждый из которых контролирует номинал, список контроля доступа, поле предложения и эскроу-баланс. Уязвимость заключалась в проверке авторизации при изменении списка контроля доступа маркера. В частности, условие, предназначенное для предоставления доступа пользователям, владеющим 100% предложения маркера, было ошибочным. Для маркеров с фиксированным предложением, активированных с нулевым предложением, сохраненное поле предложения оставалось нулевым, что приводило к тому, что проверка доступа оценивалась как тривиально истинная для любого вызывающего абонента.Это позволило злоумышленнику предоставить себе права администратора, эмитента и вывода средств одной транзакцией, не владея никакими токенами. Впоследствии он мог эмитировать новые токены или выводить активы из эскроу-баланса маркера. Последствия были значительными: эскроуированные средства в некоторых маркерах составляли около 500 000 долларов США.Первоначальное смягчение добавило проверку, чтобы предотвратить прохождение авторизации, если сохраненное предложение было нулевым. Однако полное исправление включало изменение кода для прямого считывания текущего циркулирующего предложения из банковского модуля, устраняя рассинхронизацию состояния. Первопричиной была определена рассинхронизация состояния между структурой маркера и банковским модулем в сочетании с предикатом авторизации, уязвимым для состояний с нулевым предложением. В статье предлагаются улучшенная спецификация и тестирование на основе свойств в качестве будущих превентивных мер.