CVE-2026-81872
ŚrednieCVSS 6.3Streszczenie
OpenTelemetry-Go to implementacja OpenTelemetry w Go. Przed wersją 0.21.0 pakiet go.opentelemetry.io/otel/sdk/log BatchingProcessor może wejść w ciasną pętlę CPU, gdy emisja logów sterowana przez atakującego wypełnia asynchroniczny bufor eksportu, podczas gdy eksporter jest poddany backpressure. Nowy BatchingProcessor opakowuje eksporter w newBufferExporter(exporter, 1), a pętla odpytywania wywołuje queue.TryDequeue i bufferExporter.EnqueueExport przed natychmiastowym sygnalizowaniem pollTrigger, gdy kolejka pozostaje na poziomie lub powyżej batchSize. Ponieważ nieudane nieblokujące EnqueueExport pozostawia długość kolejki niezmienioną, procesor wielokrotnie ponawia próby bez oczekiwania na swój ticker, wyczerpując CPU i degradując lub odmawiając usługi w procesie osadzającym.
Ocena ryzyka
Wyczerpanie CPU może prowadzić do degradacji lub odmowy usługi w procesie osadzającym, co może zakłócić działanie aplikacji i systemów.
Rekomendacja
Zaktualizuj OpenTelemetry-Go do wersji 0.21.0 lub nowszej, aby naprawić problem z pętlą CPU w BatchingProcessor.
Inne podatności w OpenTelemetry-Go
Zobacz wszystkie- CVE-2026-81871Średnie
OpenTelemetry-Go to implementacja OpenTelemetry w Go. Przed wersją 0.21.0 pakiet exporters/otlp/otlplog/otlploggrpc ładuje zmienne środowiskowe OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_CERTIFICATE i powiązane certyfikaty klienta poprzez loadEnvTLS do cfg.tlsCfg, ale newGRPCDialOptions nie stosuje cfg.tlsCfg podczas tworzenia poświadczeń transportu gRPC. Ścieżka TLS tylko ze środowiska zamiast tego używa credentials.NewTLS z systemowymi korzeniami i bez skonfigurowanego certyfikatu klienta, omijając zamierzone przypinanie prywatnego CA i mutual TLS, chyba że aplikacja dostarczy również WithTLSCredentials. Atakujący sieciowy zdolny przechwycić lub podszyć połączenie z kolektorem za pomocą certyfikatu zaufanego systemowo może odczytać lub zmienić telemetrię logów.
- CVE-2026-81869Średnie
OpenTelemetry-Go to implementacja OpenTelemetry w Go. Od wersji 1.10.0 do 1.33.0 ścieżka obcinania atrybutów w sdk/trace/span.go może nie egzekwować AttributeValueLengthLimit dla atrybutów typu string i string-slice zawierających prawidłowy znak zastępczy Unicode U+FFFD. safeTruncateValidUTF8 traktuje prawidłowy znak zastępczy jako nieprawidłowy UTF-8 i zwraca oryginalne dane wejściowe, podczas gdy strings.ToValidUTF8 pozostawia ten prawidłowy znak niezmieniony, więc druga próba safeTruncate może również zwrócić zbyt dużą wartość. Atakujący kontrolujący zawartość atrybutów span może zachować wartości dłuższe niż skonfigurowany limit, zwiększając zużycie pamięci na span i osłabiając ochronę przed atakami typu denial-of-service w procesie instrumentowanym.
- CVE-2026-81870Niskie
OpenTelemetry-Go w wersjach od 1.5.0 do 1.44.0 w sdk/trace.NewTracerProvider emituje wewnętrzne zdarzenie diagnostyczne Info, którego implementacje MarshalLog rekurencyjnie zawierają konfigurację procesora span, eksportera i klienta. Aplikacje wywołujące otel.SetLogger mogą rejestrować punkty końcowe kolektorów OTLP gRPC i HTTP, flagę Insecure OTLP HTTP oraz pełne adresy URL kolektorów Zipkin.
- CVE-2026-45404Średnie
OpenTelemetry-Go w wersjach od 0.11.0 do 1.44.0 ma podatność na panikę w moście OpenTracing z powodu niesynchronizowanej mapy extraBaggageItems. Jednoczesne wywołania SetBaggageItem i correlation.MapFromContext na tym samym bridgeSpan mogą prowadzić do błędu krytycznego i zatrzymania procesu, co powoduje odmowę usługi. Poprawka jest w wersji 1.45.0.
- CVE-2026-45287Średnie
Implementacja OpenTelemetry-Go przed wersją 0.0.17 wycieka jeden deskryptor pliku przy każdym udanym wywołaniu `ParseFile`. Wielokrotne parsowanie w długotrwałym procesie może wyczerpać limit deskryptorów plików i spowodować odmowę usługi.
- CVE-2026-41178Średnie
OpenTelemetry-Go w wersjach 1.41.0 i 1.43.0 usunęło odrzucanie surowej długości, co powoduje, że funkcja `Parse` przetwarza dowolnie duże/nieprawidłowe nagłówki baggage i loguje błędy, umożliwiając atak DoS przez zbyt duże dane wejściowe. Wersje 1.42.0 i 1.44.0 naprawiają ten problem.
- CVE-2026-39883Wysokie
W OpenTelemetry-Go od wersji 1.15.0 do 1.42.0, poprawka dla CVE-2026-24051 zmieniła polecenie ioreg na ścieżkę bezwzględną, ale pozostawiła polecenie kenv z gołą nazwą, co umożliwia atak typu PATH hijacking na platformach BSD i Solaris.
- CVE-2026-39882Średnie
Biblioteka OpenTelemetry-Go przed wersją 1.43.0 odczytuje pełną treść odpowiedzi HTTP do bufora w pamięci bez ograniczenia rozmiaru. Może to prowadzić do wyczerpania pamięci, gdy skonfigurowany punkt końcowy kolektora jest kontrolowany przez atakującego lub gdy atakujący może przechwycić połączenie.
- CVE-2026-29181Wysokie
OpenTelemetry-Go w wersjach od 1.36.0 do 1.40.0 przetwarza nagłówki 'baggage' w sposób umożliwiający atakującemu zwiększenie użycia CPU i alokacji pamięci poprzez wysłanie wielu linii nagłówka, nawet jeśli każda wartość mieści się w limicie 8192 bajtów.
Oryginalny opis (angielski, źródło NVD)
OpenTelemetry-Go is the Go implementation of OpenTelemetry. Prior to version 0.21.0, the go.opentelemetry.io/otel/sdk/log BatchingProcessor can enter a tight CPU loop when attacker-driven log emission fills its asynchronous export buffer while the exporter is backpressured. NewBatchingProcessor wraps the exporter with newBufferExporter(exporter, 1), and the poll loop calls queue.TryDequeue and bufferExporter.EnqueueExport before immediately signaling pollTrigger whenever the queue remains at or above batchSize. Because a failed nonblocking EnqueueExport leaves the queue length unchanged, the processor repeatedly retries without waiting for its ticker, exhausting CPU and degrading or denying service in the embedding process. This issue is fixed in version 0.21.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

