CVE-2026-77408
KrytyczneCVSS 9.1Streszczenie
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.
Ocena ryzyka
Cicha korupcja metadanych może zepsuć korelację żądań i odpowiedzi, routing, śledzenie oraz dalsze przetwarzanie komunikatów. Może to prowadzić do trudnych do wykrycia błędów w systemie kolejkowym.
Rekomendacja
Zaktualizuj bibliotekę amqp091-go do wersji 1.13.0 lub nowszej. Dodatkowo waliduj długość właściwości komunikatów po stronie aplikacji przed ich wysłaniem.
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-77404Wysokie
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.
- 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-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, the writeShortstr function in write.go casts the byte length of AMQP shortstr property values to uint8 without first rejecting values longer than 255 bytes. An application that accepts an oversized CorrelationId, ReplyTo, MessageId, Expiration, UserId, AppId, ContentType, ContentEncoding, or Type value can therefore serialize a wrapped length and only a truncated prefix, while reporting no error. The resulting silent metadata corruption can break request and reply correlation, routing, tracing, and downstream message processing. This issue is fixed in version 1.13.0.

