Katalog CVE

CVE-2026-86040

WysokieCVSS 7.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.67%

Percentyl 50 - wyżej niż 50% wszystkich znanych CVE

Streszczenie

libp2p to implementacja stosu sieciowego libp2p w JavaScript. Przed wersją 11.0.26 @libp2p/floodsub akceptuje nieuwierzytelnione ramki RPC na /floodsub/1.0.0 przez PeerStreams.attachInboundStream bez limitów elementów protobuf, a następnie synchronicznie przetwarza tablicę subskrypcji bez limitu na ramkę. Pojedyncza ramka o ograniczonym rozmiarze może zdekodować się do milionów pustych wpisów subskrypcji blokujących pętlę zdarzeń, a setki tysięcy unikalnych tematów SUBSCRIBE alokują obiekty PeerSet w this.topics, które nie są usuwane po usunięciu lub zatrzymaniu peera. Puste wpisy powodują wyczerpanie CPU, ale nie zwiększają this.topics; trwały wzrost pamięci wymaga unikalnych tematów. Ścieżka subskrypcji omija walidację podpisu wiadomości i kolejkę przetwarzania tylko wiadomości, pozwalając zdalnemu peerowi na trwałą odmowę usługi CPU, wyczerpanie pamięci, zakończenie z powodu braku pamięci i niedostępność węzła. Problem został naprawiony w wersji 11.0.26.

Ocena ryzyka

Zdalny atakujący może spowodować trwałą odmowę usługi, wyczerpanie pamięci i niedostępność węzła libp2p, co może zakłócić działanie aplikacji rozproszonych.

Rekomendacja

Zaktualizuj @libp2p/floodsub do wersji 11.0.26 lub nowszej, która zawiera poprawki ograniczające przetwarzanie ramek i zarządzanie pamięcią.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

libp2p is a JavaScript implementation of the libp2p networking stack. Prior to 11.0.26, @libp2p/floodsub accepts unauthenticated RPC frames on /floodsub/1.0.0 through PeerStreams.attachInboundStream in packages/floodsub/src/peer-streams.ts without protobuf element limits, then processRpc and processRpcSubOpt in packages/floodsub/src/floodsub.ts synchronously process the subscriptions array without a per-frame cap. A single bounded-size frame can decode into millions of empty subscription entries that block the event loop, while hundreds of thousands of unique-topic SUBSCRIBE entries allocate PeerSet objects in this.topics that are not removed after peer removal or stop. Empty entries cause CPU exhaustion but do not grow this.topics; persistent memory growth requires unique topics. The subscription path bypasses message signature validation and the message-only processing queue, allowing a remote peer to cause sustained CPU denial of service, memory exhaustion, out-of-memory termination, and node unavailability. The issue is fixed in version 11.0.26.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS