Podatność w bibliotece Java com.ongres.scram (wersje przed 3.3) umożliwia atakującemu przeprowadzającemu atak TLS man-in-the-middle ciche obniżenie poziomu uwierzytelniania z SCRAM-SHA-256-PLUS (z channel binding) do SCRAM-SHA-256 (bez channel binding). Jest to groźne, ponieważ eliminuje ochronę przed przechwyceniem sesji uwierzytelnienia bez wiedzy klienta ani serwera.
▸ Pokaż oryginał (EN)
SCRAM (Salted Challenge Response Authentication Mechanism) is part of the family of Simple Authentication and Security Layer (SASL, RFC 4422) authentication mechanisms. Prior to 3.3, a flaw in com.ongres.scram:scram-client and com.ongres.scram:scram-common allows an attacker capable of a TLS man-in-the-middle attack to silently downgrade a connection from SCRAM-SHA-256-PLUS with channel binding to standard SCRAM-SHA-256 without channel binding when TlsServerEndpoint processes an X.509 certificate using a modern signature algorithm such as Ed25519; getChannelBindingData() can return an empty byte array after NoSuchAlgorithmException, and the ScramClient builder treats that as absent channel-binding data. This issue is fixed in version 3.3.
Gdy metoda TlsServerEndpoint przetwarza certyfikat X.509 podpisany nowoczesnym algorytmem, takim jak Ed25519, może zostać zgłoszony wyjątek NoSuchAlgorithmException. W wyniku jego obsługi metoda getChannelBindingData() zwraca pustą tablicę bajtów zamiast sygnalizować błąd. Builder klasy ScramClient interpretuje pustą tablicę jako brak danych channel binding i bez ostrzeżenia przełącza się na mechanizm SCRAM-SHA-256 pozbawiony wiązania kanału. Atakujący z pozycją man-in-the-middle może tym samym wymusić użycie słabszego wariantu uwierzytelniania (CWE-636: Not Failing Securely, CWE-757: Selection of Less-Secure Algorithm During Negotiation).
Atakujący może przełamać ochronę zapewnianą przez channel binding i przeprowadzić skuteczny atak man-in-the-middle na sesję uwierzytelniania, potencjalnie modyfikując dane przesyłane do serwera lub przejmując kontrolę nad procesem uwierzytelnienia bez wykrycia przez ofiarę.
Należy zaktualizować bibliotekę do wersji 3.3, w której problem został naprawiony. Szczegóły dostępne w referencjach producenta: https://github.com/ongres/scram/releases/tag/3.3
Biblioteki com.ongres.scram:scram-client oraz com.ongres.scram:scram-common w wersjach wcześniejszych niż 3.3
Podatność dotyczy wyłącznie scenariuszy, w których certyfikat TLS serwera używa nowoczesnych algorytmów podpisu nieobsługiwanych przez standardowy dostawca JCA (np. Ed25519). Środowiska korzystające z certyfikatów RSA lub ECDSA mogą nie być bezpośrednio narażone na ten konkretny wektor.
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X