CVE-2026-11946
WysokieCVSS 7.5Streszczenie
Nieuwierzytelniony zdalny atakujący może wyczerpać pamięć serwera poprzez usługę GetEndpoints Discovery Service w bibliotece open62541. Pole endpointUrl w żądaniu GetEndpointsRequest nie jest walidowane pod kątem długości, co pozwala na zadeklarowanie dowolnie dużego ciągu znaków (do ~4,09 GB) dostarczanego w fragmentach bez wysyłania ostatniego fragmentu. Serwer buforuje wszystkie fragmenty w pamięci RAM bez ograniczeń aż do czasu wygaśnięcia SecureChannel.
Ocena ryzyka
Atak może doprowadzić do wyczerpania pamięci serwera OPC UA, powodując odmowę usługi (DoS) i uniemożliwiając działanie systemów przemysłowych lub krytycznej infrastruktury. Ponieważ atak jest wykonywany przed ustanowieniem sesji i omija wszystkie konfiguracje szyfrowania, jest szczególnie niebezpieczny dla środowisk produkcyjnych.
Rekomendacja
Należy natychmiast zaktualizować bibliotekę open62541 do wersji 1.4.17, 1.5.5 lub nowszej, w której wprowadzono walidację długości pola endpointUrl. Jeśli aktualizacja nie jest możliwa, należy ograniczyć dostęp do serwera OPC UA tylko do zaufanych sieci za pomocą zapory sieciowej.
Inne podatności w open62541
Zobacz wszystkie- CVE-2026-15690Niskie
W bibliotece open62541 do wersji 1.5.5 wykryto podatność polegającą na wywołaniu funkcji responseReadNamespacesArray w pliku src/client/ua_client_connect.c. Manipulacja argumentem Server_NamespaceArray prowadzi do dereferencji wskaźnika null, co może skutkować awarią aplikacji. Atak może być przeprowadzony zdalnie, ale wymaga wysokiego poziomu złożoności i jest trudny do wykorzystania.
- CVE-2026-67870Krytyczne
W open62541 v1.5.5 implementacja AddReferences po stronie serwera zawiera niekompletną walidację dla nie-lokalnych celów ExpandedNodeId. Zdalny atakujący może wysłać spreparowane AddReferencesRequest z pustym targetServerUri i niezerowym targetNodeId.serverIndex, co powoduje, że wskaźnik węzła docelowego pozostaje NULL, podczas gdy wykonanie jest kontynuowane.
- CVE-2026-67869Wysokie
Podatność przepełnienia bufora w open62541 v1.5.5 pozwala zdalnemu atakującemu spowodować denial of service poprzez usługę Service_Call, która waliduje argumenty wejściowe względem metadanych InputArguments rozwiązywanych w czasie wykonania.
- CVE-2026-67863Wysokie
W open62541 w wersji 1.5.5 występuje użycie po zwolnieniu (use-after-free) po stronie serwera w ścieżce wywołań zwrotnych lokalnego MonitoredItem. Problem występuje, gdy UA_Subscription_localPublish nadal używa bieżącego UA_Notification po wywołaniu zwrotnym, które usuwa bieżący lokalny MonitoredItem. Pozwala to zdalnemu atakującemu spowodować odmowę usługi.
- CVE-2026-67864Wysokie
Problem w open62541 w wersji 1.5.5 i wcześniejszych pozwala zdalnemu atakującemu spowodować odmowę usługi poprzez logikę tworzenia instancji typu NodeManagement.
- CVE-2026-67862Wysokie
open62541 1.5.5 zawiera przepełnienie bufora w logice odczytu atrybutów wysokiego poziomu w src/client/ua_client_highlevel.c. Pozwala to zdalnemu atakującemu spowodować odmowę usługi.
- CVE-2026-67861Wysokie
W open62541 w wersji 1.5.5 i wcześniejszych istnieje problem umożliwiający zdalnemu atakującemu spowodowanie odmowy usługi przez komponent UA_Client_getRemoteDataTypes.
- CVE-2026-67860Wysokie
open62541 w wersji 1.5.5 zawiera przepełnienie bufora oparte na stercie w domyślnej ścieżce HistoryRead, gdy używana jest domyślna baza danych historii z backendem pamięciowym.
- CVE-2026-67859Wysokie
Podatność przepełnienia bufora w open62541 v1.5.5 pozwala zdalnemu atakującemu na wywołanie odmowy usługi poprzez obsługę Discovery/LDS.
- CVE-2026-67858Wysokie
Podatność przepełnienia bufora w open62541 1.5.5 występuje, gdy Local Discovery Server (LDS) jest zbudowany z multicast discovery przez backend MDNSD. Nieuwierzytelniony zdalny atakujący może wysłać żądanie RegisterServer lub RegisterServer2 z wieloma unikalnymi discoveryUrls, powodując odmowę usługi.
Oryginalny opis (angielski, źródło NVD)
An unauthenticated remote attacker can exhaust server memory via the GetEndpoints Discovery Service in open62541. The endpointUrl field of GetEndpointsRequest is not validated for length. An attacker can declare an arbitrarily large string (up to ~4.09 GB via the UInt32 length field) delivered across intermediate chunks without ever sending the final chunk. The server buffers all chunks in RAM indefinitely until the SecureChannel times out. The attack is pre-session and bypasses all encryption configurations. The issue affects open62541: from 1.4.0 through 1.4.16, from 1.5.0 through 1.5.4, master.

