#dusk $DUSK @Dusk $BTC 11 хост-запросы использовали один и тот же обёртчик. У восьми из них был одинаковый риск десериализации.

Это заставило меня присмотреться внимательнее.

Контракт управлял байтами. Именно нода их читала. Некорректный относительный указатель мог подтолкнуть хост к чтению за пределами допустимого диапазона. В этот момент проблема уже не оставалась внутри контракта.

Меня насторожило то, как было сделано исправление.

Dusk не патчил восемь запросов по отдельности. Он исправил общую границу и валидирует архивированные данные перед тем, как десериализовать их.

Этот порядок важен.

Сначала проверка. Потом десериализация.

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

Тест простой. Подайте в эти запросы некорректные архивированные данные. Нода должна отклонить их до того, как обёртчик попытается интерпретировать байты.