CVE-2026-107350
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 28 - wyżej niż 28% wszystkich znanych CVE
Streszczenie
Nieprawidłowa autoryzacja w PgBouncer w wersjach od 1.17.0 do 1.26.0 pozwala zdalnemu atakującemu znającemu hasło użytkownika z auth_file zalogować się jako dowolny inny użytkownik uwierzytelniany przez SCRAM, w tym jako administrator PgBouncer lub superużytkownik backendu. Drugi StartupMessage wysłany podczas uwierzytelniania SCRAM do nieistniejącej bazy nie jest odrzucany i zmienia użytkownika, przy czym wymiana SCRAM jest weryfikowana względem kluczy pierwszego użytkownika.
Ocena ryzyka
Atakujący może uzyskać uprawnienia administratora PgBouncer lub superużytkownika bazy danych, co prowadzi do pełnego przejęcia kontroli nad infrastrukturą bazodanową. Wymaga znajomości hasła dowolnego użytkownika z auth_file.
Rekomendacja
Zaktualizuj PgBouncer do wersji nowszej niż 1.26.0, która zawiera poprawkę. Do czasu aktualizacji ogranicz dostęp sieciowy do PgBouncer i monitoruj nietypowe próby logowania.
Inne podatności w PgBouncer
Zobacz wszystkie- CVE-2015-6817Wysokie
PgBouncer w wersji 1.6.x przed 1.6.1, skonfigurowany z auth_user, umożliwia zdalnym atakującym uzyskanie dostępu do logowania jako auth_user za pomocą nieznanej nazwy użytkownika.
- CVE-2015-4054Wysokie
PgBouncer w wersjach przed 1.5.5 umożliwia zdalnym atakującym spowodowanie awarii usługi (denial of service) poprzez wysłanie pakietu z hasłem przed pakietem startowym, co prowadzi do dereferencji wskaźnika NULL.
- CVE-2026-107349Wysokie
Nieskończona pętla w PgBouncer w wersjach od 1.20.0 do 1.26.0 pozwala nieuwierzytelnionemu zdalnemu atakującemu wywołać odmowę usługi. StartupMessage, którego parametr options zawiera pustą nazwę parametru (np. "-c="), powoduje zapętlenie wyszukiwania na liście ignore_startup_parameters. Ponieważ PgBouncer obsługuje wszystkich klientów w jednym procesie, nasyca to rdzeń CPU i czyni PgBouncer nieosiągalnym dla wszystkich klientów do czasu restartu procesu.
- CVE-2026-107348Średnie
W PgBouncer w wersjach od 1.21.0 do 1.26.0 występuje przepełnienie liczb całkowitych w logice rozszerzania bufora wiadomości (mbuf_make_room), gdy max_packet_size jest ustawione powyżej 2147483648. Nagłówek pakietu deklarujący długość powyżej 2^31 powoduje przepełnienie obliczeń rozmiaru bufora i pętlę, która nie może się zakończyć, co nasyca rdzeń CPU i blokuje wszystkie połączenia w puli. Od wersji 1.23.0 przepełnienie jest osiągalne przed uwierzytelnieniem za pomocą pięciobajtowego nagłówka pakietu.
- CVE-2026-6669Średnie
PgBouncer do wersji 1.25.2 nie ogranicza górnej granicy liczby iteracji wyprowadzania klucza podczas uwierzytelniania SCRAM do serwera backendowego. Złośliwy lub przejęty backend PostgreSQL może wymusić niekontrolowane zużycie CPU w PgBouncer, a procesu wyprowadzania klucza nie można przerwać w buildach frontendowych.
- CVE-2026-6668Wysokie
Przepełnienie liczby całkowitej w logice wzrostu bufora pakietów w PgBouncer do wersji 1.25.2 pozwala nieuwierzytelnionemu zdalnemu atakującemu na spowodowanie odmowy usługi. Odpowiednio duże dane wejściowe powodują przepełnienie obliczenia rozmiaru bufora, pozostawiając pętlę wzrostu niezdolną do zakończenia. Ponieważ PgBouncer obsługuje wszystkich klientów z jednego procesu, to nasyca rdzeń CPU i blokuje wszystkie połączone połączenia, dopóki proces nie zostanie zabity. Zarówno nieuwierzytelnione, jak i uwierzytelnione ścieżki kodu mogą osiągnąć przepełnienie.
- CVE-2026-19888Wysokie
Brak walidacji obowiązkowego atrybutu w parserze SCRAM client-final-message w PgBouncer do wersji 1.25.2 pozwala nieuwierzytelnionemu zdalnemu atakującemu na spowodowanie awarii procesu. Źle sformułowana wiadomość może sprawić, że parser zgłosi sukces, pozostawiając wymaganą wartość nieustawioną, która następnie jest wyłuskiwana jako wskaźnik NULL. Awaria następuje przed weryfikacją jakichkolwiek poświadczeń, więc nie jest wymagane żadne ważne konto. Ponieważ PgBouncer obsługuje wszystkich klientów z jednego procesu, to kończy wszystkie połączone połączenia.
- CVE-2026-6667Średnie
PgBouncer przed wersją 1.25.2 nie przeprowadzał odpowiedniej kontroli autoryzacji dla polecenia administracyjnego KILL_CLIENT. Każdy użytkownik z dostępem do konsoli administracyjnej mógł je wykonać, zamiast tylko użytkownicy z listy admin_users.
- CVE-2026-6666Średnie
W PgBouncer przed wersją 1.25.2 istnieje możliwość wywołania awarii poprzez odwołanie do pustego wskaźnika. Dzieje się tak, gdy serwer wyśle odpowiedź błędu bez pola SQLSTATE.
- CVE-2026-6665Wysokie
Kod SCRAM w PgBouncer przed wersją 1.25.2 nieprawidłowo sprawdza wartość zwracaną przez strlcat() podczas budowania wiadomości client-final-message. Złośliwy backend wysyłający server-final-message z długim nonce może spowodować przepełnienie stosu.
Oryginalny opis (angielski, źródło NVD)
Improper authentication in PgBouncer 1.17.0 through 1.26.0 allows a remote attacker who knows the password of a user listed in auth_file to log in as any other user that authenticates using SCRAM, including PgBouncer admin users and backend superusers. A second StartupMessage sent during SCRAM authentication against a non-existent database is not rejected and switches the user being logged in as, while the SCRAM exchange is still verified against the keys of the first user.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

