CometBFT - это распределенный, отказоустойчивый к византийским ошибкам, детерминированный механизм репликации конечных автоматов. В протоко…
CometBFT - это распределенный, отказоустойчивый к византийским ошибкам, детерминированный механизм репликации конечных автоматов. В протоколе `blocksync` пиры отправляют свою `base` и `latest` высоты при подключении к новому узлу (`A`), который синхронизируется с вершиной сети. `base` действует как нижний уровень и сообщает `A`, что у пира есть только блоки, начинающиеся с высоты `base`. `latest` высота сообщает `A` о последнем блоке в сети. Обычно узлы сообщают только об увеличении высоты. Если `B` не может предоставить последний блок, `B` удаляется, и `latest` высота (целевая высота) пересчитывается на основе `latest` высоты других узлов. Однако существующий код не проверяет случай, когда `B` сначала сообщает `latest` высоту `X`, а сразу после этого высоту `Y`, где `X > Y`. `A` будет пытаться догнать до 2000 бесконечно. Это условие требует введения вредоносного кода в полный узел, сначала сообщающего о некоторой несуществующей `latest` высоте, затем сообщающего о более низкой `latest` высоте и узлах, которые синхронизируются с использованием протокола `blocksync`. Эта проблема была исправлена в версиях 1.0.1 и 0.38.17, и всем пользователям рекомендуется обновиться. Операторы могут попытаться забанить вредоносные пиры из сети в качестве обходного пути.
Программный продукт не предвидит надлежащим образом или не обрабатывает исключительные условия, редко возникающие в ходе нормальной эксплуатации.
https://cwe.mitre.org/data/definitions/703.html →Открыть в коллекции CWE →