CVE-2026-77404
WysokieCVSS 8.7Streszczenie
RabbitMQ amqp091-go to klient AMQP 0.9.1 w Go. W wersjach przed 1.13.0 funkcja URI.String w uri.go łączy wartości CertFile, KeyFile, CACertFile i ServerName bezpośrednio w ciąg zapytania AMQPS, zamiast kodować je jako parametry zapytania URL za pomocą url.Values. Jeśli aplikacja przyjmuje ścieżkę zasobu TLS zawierającą separatory ampersand lub equals, a następnie ponownie parsuje zserializowany URI za pomocą ParseURI, osadzone separatory mogą tworzyć lub nadpisywać opcje połączenia, w tym ścieżki do plików certyfikatów, kluczy lub CA TLS. Może to uszkodzić konfigurację połączenia lub wybrać niezamierzone lokalne zasoby kryptograficzne.
Ocena ryzyka
Może dojść do uszkodzenia konfiguracji połączenia lub użycia niezamierzonych lokalnych zasobów kryptograficznych, co osłabia bezpieczeństwo komunikacji z brokerem.
Rekomendacja
Zaktualizuj bibliotekę amqp091-go do wersji 1.13.0 lub nowszej.
Inne podatności w RabbitMQ amqp091-go
Zobacz wszystkie- CVE-2026-77412Wysokie
RabbitMQ amqp091-go to klient AMQP 0.9.1 w Go. W wersjach przed 1.13.0 funkcja readField w read.go odczytuje długość pola tablicy bajtów AMQP ze znacznikiem typu x do signed int32 i przekazuje wartość bezpośrednio do make przy alokacji bufora pola. Złośliwy lub przejęty broker może zakodować wartość taką jak 0xFFFFFFFF, która staje się -1 i powoduje panikę runtime len out of range. Panika wymyka się z goroutine czytnika sieci i kończy proces klienta, w tym podczas parsowania właściwości serwera connection.start lub tabeli nagłówków wiadomości.
- CVE-2026-77410Wysokie
RabbitMQ amqp091-go to klient AMQP 0.9.1 w Go. W wersjach przed 1.13.0 funkcja Channel.recvContent w channel.go wstępnie alokuje slice treści wiadomości na podstawie wartości uint64 ch.header.Size dostarczonej przez nagłówek treści AMQP, bez ograniczenia alokacji do wynegocjowanej wartości Connection.Config.FrameSize. Złośliwy lub przejęty broker może wysłać ekstremalnie duży zadeklarowany rozmiar treści, powodując próbę odpowiednio dużej alokacji, zanim dane treści zostaną odebrane. Alokacja może wyczerpać pamięć i zakończyć proces klienta.
- CVE-2026-77409Wysokie
RabbitMQ amqp091-go to klient AMQP 0.9.1 w Go. W wersjach przed 1.13.0 funkcje Channel.dispatch w channel.go, confirms.confirm w confirms.go oraz Connection.dispatch0 w connection.go synchronicznie wysyłają potwierdzenia publikacji, zdarzenia kontroli przepływu, anulowania konsumentów, zwrócone wiadomości (w tym zdarzenia NotifyConfirm) oraz powiadomienia o blokadzie połączenia do kanałów dostarczonych przez aplikację. Jeśli kanał nasłuchujący jest niebuforowany, pełny lub nieopróżniany na bieżąco, jedyna goroutine czytnika blokuje się i przestaje przetwarzać ramki, potwierdzenia, dostawy i heartbeaty. Wywołane przez brokera serie zdarzeń mogą powodować zatory połączenia, pominięte heartbeaty, zakleszczenia i rozłączenia.
- CVE-2026-77407Wysokie
RabbitMQ amqp091-go to klient AMQP 0.9.1 w Go. W wersjach przed 1.13.0 wartości PlainAuth zdefiniowane w auth.go przechowują hasła jako eksportowane pola plaintext w Connection.Config.SASL po udanym handshake uwierzytelniania PLAIN. Metoda Connection.openComplete w connection.go nie czyści tych wartości. Kod mający dostęp do obiektu Connection, w tym loggery refleksyjne, agenci monitorowania wydajności aplikacji, narzędzia debugowania i procedury obsługi paniki, może przejść przez konfigurację i ujawnić poświadczenia w logach lub zrzutach stanu. Poświadczenie pozostaje dostępne przez cały czas życia połączenia zamiast zostać wyczyszczone po uwierzytelnieniu.
- CVE-2026-77406Wysokie
RabbitMQ amqp091-go to klient AMQP 0.9.1 w Go. W wersjach przed 1.13.0 funkcja Channel.Qos w channel.go przyjmuje ujemne liczby całkowite prefetchCount i prefetchSize i rzutuje je bezpośrednio na pola uint16 i uint32 w metodzie basic.qos, ponieważ brakuje walidacji validateQos. Wartości takie jak -1 zawijają się do 65535 lub 4294967295 zamiast zostać odrzucone. Aplikacja, która pozwala na niezaufaną konfigurację tych wartości Qos, może nieumyślnie zażądać ekstremalnie dużych limitów prefetch, pozwalając brokerowi dostarczyć wystarczająco dużo zakolejkowanych wiadomości, aby wyczerpać pamięć klienta i zakłócić przetwarzanie.
- CVE-2026-77403Wysokie
RabbitMQ amqp091-go to klient AMQP 0.9.1 w Go. W wersjach przed 1.13.0 funkcja Connection.openTune w connection.go akceptuje reklamowaną przez serwer wartość FrameMax poniżej minimalnej wartości protokołu AMQP frameMinSize wynoszącej 4096 bajtów, ponieważ pętla negocjacji połączenia nie egzekwuje minimum protokołu. Złośliwy lub przejęty broker AMQP może zatem zareklamować ekstremalnie mały FrameMax, powodując fragmentację późniejszych publikacji klienta na nadmierną liczbę ramek i operacji zapisu. Może to zużywać CPU i blokować klienta lub jego host.
- CVE-2026-77411Krytyczne
W kliencie RabbitMQ amqp091-go przed wersją 1.13.0 funkcja readLongstr w read.go zwraca pusty łańcuch i nil zamiast ErrSyntax, gdy zadeklarowana długość longstr przekracza 0x7FFFFFFF. Funkcja pozostawia bajty pola nieodczytane, a readTable kontynuuje parsowanie od błędnego offsetu. Złośliwy lub przejęty broker może dostarczyć zbyt duży longstr i zdesynchronizować parsowanie AMQP.
- CVE-2026-77408Krytyczne
W kliencie RabbitMQ amqp091-go przed wersją 1.13.0 funkcja writeShortstr w write.go rzutuje długość wartości właściwości shortstr na uint8 bez odrzucenia wartości dłuższych niż 255 bajtów. Aplikacja przyjmująca zbyt długie wartości CorrelationId, ReplyTo, MessageId, Expiration, UserId, AppId, ContentType, ContentEncoding lub Type może zapisać zawiniętą długość i obcięty prefiks bez zgłoszenia błędu.
- CVE-2026-77405Krytyczne
W kliencie RabbitMQ amqp091-go przed wersją 1.13.0 funkcja tlsConfigFromURI w uri.go tworzy konfiguracje tls.Config bez ustawienia MinVersion na tls.VersionTLS12. Kompilacje używające środowiska Go, którego domyślne ustawienia dopuszczają TLS 1.0 lub TLS 1.1, mogą wynegocjować przestarzałą wersję protokołu podczas łączenia przez URI amqps.
Oryginalny opis (angielski, źródło NVD)
RabbitMQ amqp091-go is a Go AMQP 0.9.1 client. Prior to 1.13.0, URI.String in uri.go concatenates CertFile, KeyFile, CACertFile, and ServerName values directly into an AMQPS query string instead of encoding them as URL query parameters with url.Values. If an application accepts a TLS asset path containing ampersand or equals delimiters and later reparses the serialized URI with ParseURI, the embedded delimiters can create or overwrite connection options, including paths to TLS certificate, key, or CA files. This can corrupt connection configuration or select unintended local cryptographic assets. This issue is fixed in version 1.13.0.

