libp2p-rust — официальный язык Rust. Реализация сетевого стека libp2p. До версии 0.49.4 реализация Rust libp2p Gossipsub содержала удаленно доступную панику при обработке истечения срока отсрочки.
После того, как партнер отправляет созданное управляющее сообщение PRUNE с контролируемым злоумышленником значением отсрочки, близким к максимальному, это значение принимается и сохраняется как Instant рядом с представимой верхней границей. В более позднем такте реализация выполняет непроверенную арифметику Instant + Duration (backoff_time + Slack), которая может переполниться и вызвать панику с помощью: overflow при добавлении длительности к Instant. Эта проблема доступна любому узлу Gossipsub через обычное соединение TCP + Noise + mplex/yamux и не требует дополнительной аутентификации, кроме как стать узлом протокола.
Эта проблема исправлена в версии 0.49.4.
Показать оригинальное описание (EN)
libp2p-rust is the official rust language Implementation of the libp2p networking stack. Prior to version 0.49.4, the Rust libp2p Gossipsub implementation contains a remotely reachable panic in backoff expiry handling. After a peer sends a crafted PRUNE control message with an attacker-controlled, near-maximum backoff value, the value is accepted and stored as an Instant near the representable upper bound. On a later heartbeat, the implementation performs unchecked Instant + Duration arithmetic (backoff_time + slack), which can overflow and panic with: overflow when adding duration to instant. This issue is reachable from any Gossipsub peer over normal TCP + Noise + mplex/yamux connectivity and requires no further authentication beyond becoming a protocol peer. This issue has been patched in version 0.49.4.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Libp2p Libp2p-Gossipsub
cpe:2.3:a:libp2p:libp2p-gossipsub:*:*:*:*:*:rust:*:*
|
— |
0.49.4
|