Klever-Go — это реализация протокола блокчейна Klever на Go. В версиях с 1.7.14 по 1.7.17 обработчик входа прямого сообщения порождает новую горутину для каждого входящего прямого сообщения до того, как уровень защиты от рассылки на уровне процессора примет какое-либо решение о допуске, без семафора, дросселя или ограничения на количество одновременных порождений в полете. Поскольку проверка защиты от флуда выполняется внутри порожденной горутины, а не перед ней, один подключенный узел может открыть поток прямой отправки и отправить поток правильно сформированных сообщений, чтобы принудительно создать неограниченную горутину, где каждая горутина выделяет свой собственный стек и удерживает ссылку на сообщение до завершения обработки, добавляя нагрузку на планировщик и сборку мусора быстрее, чем среда выполнения может ее истощить.
Это позволяет одному узлу снизить доступность узла и его способность обрабатывать законный трафик, что приводит к отказу в обслуживании, вызываемому удаленно. Проблема исправлена в версии 1.7.18.
Показать оригинальное описание (EN)
Klever-Go is the Go implementation of the Klever blockchain protocol. In versions 1.7.14 through 1.7.17, the direct-message ingress handler spawns a new goroutine for every incoming direct message before the processor-level antiflood layer makes any admission decision, with no semaphore, throttler, or bound on the number of concurrent in-flight spawns. Because the antiflood check runs inside the spawned goroutine rather than before it, a single connected peer can open a direct-send stream and send a stream of well-formed messages to force unbounded goroutine creation, where each goroutine allocates its own stack and holds a message reference until processing completes, adding scheduler and garbage-collection pressure faster than the runtime can drain it. This lets one peer degrade the node's availability and its ability to process legitimate traffic, resulting in a remotely triggerable denial of service. The issue is fixed in 1.7.18.
Характеристики атаки
Последствия
Строка CVSS v3.1