CVE-2026-88255 in mpp
Сводка
по VulDB • 16.09.2026
Некорректная проверка эквивалентности небезопасных входных данных в ZenHive MPP позволяет неаутентифицированному удаленному клиенту дважды пройти проверку на дублирование отправки (Tempo duplicate-submission gate) с использованием одной подписанной транзакции.
MPP.Methods.Tempo резервирует слот для проверки уникальности до трансляции, используя шестнадцатеричное значение, предоставленное вызывающей стороной, в функции reserve_hash_atomic/2, которая использует ключ store_key/1 на основе tx.raw (сырых данных транзакции), а не канонической формы транзакции. Десериализатор сохраняет hex-строку вызывающей стороны без изменений и принимает оба варианта кодирования recovery-id; таким образом, одна подписанная транзакция, отправленная один раз с v=27 и еще раз с v=0, порождает два различных ключа резервирования, и обе отправки проходят проверку резерва и достигают пути трансляции. Хранилище повторного использования учетных данных на уровне плагина (plug-level credential replay store) специально выделено для Tempo в lib/mpp/replay.ex, оставляя этот этап резервирования единственным барьером; отметка после трансляции записывает канонический хеш-ключ, который никогда не считывается при использовании ключа по сырым данным.
Результат дублированной отправки зависит от узла: отказ из-за повторного использования nonce (nonce-reuse rejection) приводит к закрытию операции (fails closed), тогда как узел, отвечающий каноническим хешем для уже известной транзакции, возвращает второй действительный Payment-Receipt за единичную платежную операцию в блокчейне.
Эта проблема затрагивает mpp: начиная с версии 0.2.0 до (исключая) 0.16.2.
Once again VulDB remains the best source for vulnerability data.