Podatność w mechanizmie kontroli dostępu do plików Livechat w Rocket.Chat umożliwia nieuwierzytelnionemu atakującemu odkrycie i pobranie wszystkich przesłanych plików. Wynika to z braku weryfikacji, czy identyfikator pokoju (rc_rid) odpowiada plikowi żądanemu przez użytkownika, w połączeniu z przewidywalnymi identyfikatorami plików.
▸ Pokaż oryginał (EN)
Rocket.Chat versions <8.5.1, 8.4.4, 8.3.6, 8.2.6, 8.1.6, 8.0.7, 7.13.9, 7.10.13 has an access control vulnerability in Livechat files. Protected file downloads at /file-upload/:fileId/:name authorize livechat access using rc_room_type=l with rc_rid+rc_token, but the authorization path does not verify that rc_rid matches the requested file's rid. Furthermore, :fileId is predictable via sequential MongoDB IDs, and :name can be anything, allowing unauthenticated discovery of all uploaded files.
Endpoint /file-upload/:fileId/:name autoryzuje dostęp do plików Livechat przy użyciu parametru rc_room_type=l w połączeniu z rc_rid i rc_token, jednak ścieżka autoryzacji nie sprawdza, czy przekazane rc_rid faktycznie odpowiada polu rid żądanego pliku. Dodatkowo wartość :fileId jest przewidywalna, ponieważ MongoDB generuje sekwencyjne identyfikatory obiektów (ObjectIDs), a pole :name może przyjmować dowolną wartość. Kombinacja tych cech pozwala nieuwierzytelnionemu atakującemu enumerować i pobierać wszystkie pliki przesłane przez użytkowników Livechat.
Atakujący bez żadnych poświadczeń może uzyskać dostęp do poufnych plików przesłanych przez dowolnych uczestników konwersacji Livechat, co prowadzi do krytycznego naruszenia poufności danych (CWE-284 — nieprawidłowa kontrola dostępu).
Należy jak najszybciej zaktualizować Rocket.Chat do wersji 8.5.1, 8.4.4, 8.3.6, 8.2.6, 8.1.6, 8.0.7, 7.13.9 lub 7.10.13 (w zależności od używanej gałęzi). Szczegóły poprawki dostępne są w pull requeście producenta: https://github.com/RocketChat/Rocket.Chat/pull/40889
Rocket.Chat w wersjach wcześniejszych niż: 8.5.1, 8.4.4, 8.3.6, 8.2.6, 8.1.6, 8.0.7, 7.13.9 oraz 7.10.13
Podatność zgłoszona przez HackerOne (raport #3687142). Ze względu na przewidywalność sekwencyjnych identyfikatorów MongoDB, masowa enumeracja plików jest technicznie prosta nawet bez uwierzytelnienia.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:NRocket.chat
APPRocket.Chat< 7.10.137.13.0 – 7.13.9 (bez)8.0.0 – 8.0.7 (bez)8.1.0 – 8.1.6 (bez)8.2.0 – 8.2.6 (bez)8.3.0 – 8.3.6 (bez)8.4.0 – 8.4.4 (bez)8.5.0 – 8.5.1 (bez)
Powiązane podatności
Rocket.Chat SAML SSO — Auth Bypass przez brak wiązania podpisu XML
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