CRITICAL🇬🇧 English

CVE-2026-45688

Rocket.Chat — NoSQL injection w obsłudze CAS login umożliwia Auth Bypass

CVSS 9.1v3.1pub. 2026-06-24upd. 2026-06-26

Podatność w mechanizmie logowania CAS platformy Rocket.Chat pozwala nieuwierzytelnionemu atakującemu na wstrzyknięcie operatora zapytania MongoDB zamiast oczekiwanego tokenu biletu CAS, całkowicie omijając weryfikację tożsamości. Skutkiem jest przejęcie sesji dowolnego użytkownika — w tym administratora — co może prowadzić do pełnego przejęcia instancji.

Pokaż oryginał (EN)

Rocket.Chat is an open-source, secure, fully customizable communications platform. Prior to 8.5.0, 8.4.1, 8.3.3, 8.2.3, 8.1.4, 8.0.5, 7.13.7, and 7.10.11, Rocket.Chat's CAS login handler forwards the client-supplied options.cas.credentialToken value straight into a MongoDB findOne({_id: ...}) query without any runtime type check. TypeScript's string parameter annotation is erased at runtime, so an unauthenticated attacker can substitute a MongoDB query operator ({"$gt": ""}, {"$ne": null}, etc.) for what the server expects to be an opaque ticket string. The injected operator matches the first unexpired document in the credential_tokens collection, bypassing the CAS ticket check entirely. When any legitimate CAS or SAML SSO login is in flight, the attacker's next DDP login call matches the same credential-token row via the NoSQL operator and is issued a full Meteor auth token (userId + token) bound to the victim. The token is immediately usable against the complete REST and DDP surface as that user. If the victim is an administrator, this escalates to full instance compromise via Apps-Engine app install. This vulnerability is fixed in 8.5.0, 8.4.1, 8.3.3, 8.2.3, 8.1.4, 8.0.5, 7.13.7, and 7.10.11.

🤖 Analiza AI
Jak działa

Obsługa logowania CAS przekazuje wartość parametru options.cas.credentialToken bezpośrednio do zapytania MongoDB findOne({_id: ...}) bez żadnej weryfikacji typu w czasie działania programu. Adnotacja TypeScript dotycząca typu string jest usuwana podczas kompilacji i nie zapewnia ochrony w środowisku uruchomieniowym. Atakujący może podstawić operator zapytania MongoDB (np. {"$gt": ""} lub {"$ne": null}) zamiast oczekiwanego ciągu tekstowego biletu. Wstrzyknięty operator dopasowuje pierwszy nieważny (nieistotny) dokument w kolekcji credential_tokens, a jeśli w tym samym czasie trwa legalne logowanie CAS lub SAML innego użytkownika, kolejne wywołanie DDP login przez atakującego dopasowuje ten sam rekord i uzyskuje pełny token uwierzytelniający Meteor (userId + token) powiązany z ofiarą.

Skutki

Atakujący uzyskuje pełny token uwierzytelniający Meteor przypisany do konta ofiary, co daje mu dostęp do całego interfejsu REST i DDP jako ten użytkownik. W przypadku przejęcia konta administratora możliwa jest pełna kompromitacja instancji, w tym instalacja złośliwych aplikacji za pośrednictwem Apps-Engine.

Mitygacja

Należy zaktualizować Rocket.Chat do jednej z następujących wersji zawierających poprawkę: 8.5.0, 8.4.1, 8.3.3, 8.2.3, 8.1.4, 8.0.5, 7.13.7 lub 7.10.11. Do czasu aktualizacji zaleca się rozważenie tymczasowego wyłączenia integracji CAS/SAML SSO, jeśli jest to operacyjnie możliwe.

Kogo dotyczy

Rocket.Chat w wersjach wcześniejszych niż 8.5.0, 8.4.1, 8.3.3, 8.2.3, 8.1.4, 8.0.5, 7.13.7 oraz 7.10.11, korzystających z mechanizmu logowania CAS.

Uwagi

Podatność wymaga, aby w momencie ataku trwało aktywne logowanie innego użytkownika przez CAS lub SAML SSO — atakujący musi trafić w okno czasowe ważności credential_token. Szczegóły techniczne opublikowane zostały w ramach GitHub Security Advisory GHSA-rr54-jf4h-6cj9.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Auth Bypass
CWE
Referencje