Podatność w implementacji SAML SSO w Rocket.Chat pozwala nieuwierzytelnionemu atakującemu na zalogowanie się jako dowolny użytkownik. Błąd wynika z niepoprawnej weryfikacji podpisów XML, co umożliwia pominięcie mechanizmu uwierzytelniania.
▸ Pokaż oryginał (EN)
Rocket.Chat's SAML SSO before versions 8.7.0, 8.6.1, 8.5.2, 8.4.5, 8.3.7, 8.2.7, 8.1.7, 8.0.8, and 7.10.14 verified XML signatures but did not bind the validated signature to samlp:Response / saml:Assertion. An attacker could submit a wrapped document carrying forged identity attributes alongside any valid signature made by the trusted IdP certificate, and log in as an arbitrary user.
Aplikacja weryfikuje podpis XML w odpowiedzi SAML, jednak nie wiąże zwalidowanego podpisu z konkretnym elementem samlp:Response ani saml:Assertion. Atakujący może przygotować spreparowany dokument XML typu 'XML Signature Wrapping' (XSW), osadzając fałszywe atrybuty tożsamości (np. nazwę użytkownika) obok dowolnego prawidłowego podpisu wystawionego przez zaufany certyfikat dostawcy tożsamości (IdP). Serwer akceptuje taki dokument jako poprawnie podpisany, mimo że podpisana część nie odpowiada faktycznie przetwarzanym atrybutom.
Atakujący bez żadnych uprawnień może zalogować się jako dowolny użytkownik systemu, w tym administrator, uzyskując pełen dostęp do konta, danych i funkcji dostępnych dla przejętej tożsamości.
Należy zaktualizować Rocket.Chat do wersji 8.7.0, 8.6.1, 8.5.2, 8.4.5, 8.3.7, 8.2.7, 8.1.7, 8.0.8 lub 7.10.14 (w zależności od używanej gałęzi). Do czasu wdrożenia patcha zaleca się wyłączenie integracji SAML SSO, jeśli nie jest ona niezbędna.
Rocket.Chat w wersjach wcześniejszych niż 8.7.0, 8.6.1, 8.5.2, 8.4.5, 8.3.7, 8.2.7, 8.1.7, 8.0.8 oraz 7.10.14 — dotyczy instancji korzystających z SAML SSO.
Podatność zgłoszona za pośrednictwem platformy HackerOne (raport #3827674). Poprawka dostępna w repozytorium GitHub jako pull request #41233.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HRocket.chat
APPRocket.Chat< 7.10.148.0.0 – 8.0.8 (bez)8.1.0 – 8.1.7 (bez)8.2.0 – 8.2.7 (bez)8.3.0 – 8.3.7 (bez)8.4.0 – 8.4.5 (bez)8.5.0 – 8.5.2 (bez)8.6.0 – 8.6.1 (bez)
Powiązane podatności
Rocket.Chat — podatność access control w plikach Livechat (nieautoryzowany dostęp)
Rocket.Chat — NoSQL injection umożliwiający przejęcie konta (SQLi)
Rocket.Chat — pominięcie await powoduje auth bypass w ddp-streamer
Rocket.Chat: brak unieważnienia sesji po aktywacji 2FA
Command Injection i RCE w Rocket.Chat Desktop via openInternalVideoChatWindow