CVE-2026-48071
ŚrednieCVSS 5.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 31 - wyżej niż 31% wszystkich znanych CVE
Streszczenie
Przed wersją 1.0.4 mechanizm ograniczania prób dla wyzwań PIN używa `emailHash` jako jedynego klucza, a tabela `challenge_throttle` jest współdzielona między wszystkimi dzierżawcami. Atakujący, znając adres e-mail pacjenta, może zablokować tego pacjenta w innym dzierżawcy, wysyłając nieudane odpowiedzi na wyzwania w jednym dzierżawcy. Blokada eskaluje z powtarzającymi się niepowodzeniami, prowadząc do długotrwałego ataku DoS. Wersja 1.0.4 naprawia ten problem.
Ocena ryzyka
Atakujący może celowo zablokować dostęp pacjenta do systemu, powodując niedostępność usługi i potencjalne zakłócenia w opiece zdrowotnej.
Rekomendacja
Zaktualizuj OpenReception do wersji 1.0.4 lub nowszej, aby poprawić mechanizm ograniczania prób, aby uwzględniał kontekst dzierżawcy.
Inne podatności w OpenReception
Zobacz wszystkie- CVE-2026-48088Krytyczne
Przed wersją 1.0.4 oprogramowania OpenReception do rezerwacji wizyt, nieuwierzytelniony atakujący mógł przechowywać własne klucze publiczne ML-KEM-768 dla dowolnego najemcy, bez logowania. Nawet bez ciasteczka sesji lub rejestracji, żądanie POST do /api/tenants/{tenantId}/staff/{staffId}/crypto zapisywało klucz, a wariant z pominięciem pola email całkowicie ukrywał ostrzeżenie o nieautoryzowanej próbie. To łamie deklarację szyfrowania end-to-end, ponieważ atakujący staje się dodatkowym odbiorcą szyfrowania przyszłych wizyt pacjentów.
- CVE-2026-48087Krytyczne
Podatność w OpenReception (przed wersją 1.0.2) w rejestracji WebAuthn pozwala nieuwierzytelnionemu atakującemu na przypisanie własnego poświadczenia do konta ofiary poprzez manipulację parametrem userId w URL. Walidacja nie sprawdza, czy userId należy do adresu email z ciasteczka.
- CVE-2026-48086Krytyczne
Podatność w oprogramowaniu do rezerwacji wizyt OpenReception pozwala administratorowi dzierżawy (TENANT_ADMIN) na awansowanie siebie lub innego pracownika do roli globalnego administratora (GLOBAL_ADMIN) poprzez pojedyncze żądanie PUT. Brakuje kontroli uprawnień, która wymagałaby, aby tylko istniejący GLOBAL_ADMIN mógł nadawać tę rolę. Po ponownym zalogowaniu administrator dzierżawy uzyskuje pełny dostęp do wszystkich innych dzierżaw na platformie.
- CVE-2026-48085Krytyczne
Oprogramowanie do rezerwacji wizyt OpenReception przed wersją 1.0.1 pozwala nieuwierzytelnionemu atakującemu na utworzenie konta GLOBAL_ADMIN poprzez wysłanie żądania POST do `/setup/create-admin-account`, bez weryfikacji, czy administrator już istnieje. Atakujący może uzyskać pełną kontrolę administracyjną nad platformą, a nowe konto jest aktywne i nie wymaga potwierdzenia e-mail.
- CVE-2026-48084Wysokie
OpenReception przed wersją 1.0.2 nie ogranicza liczby nieudanych prób logowania hasłem. Atakujący może wysyłać nieograniczoną liczbę błędnych haseł dla znanego adresu e-mail, z szybkością około 10 prób na sekundę. Brak throttlingu w gałęzi hasła, podczas gdy endpoint WebAuthn ma throttling, umożliwia ataki brute-force i słownikowe na konta użytkowników. Problem naprawiono w wersji 1.0.2.
- CVE-2026-48083Średnie
Oprogramowanie do rezerwacji wizyt OpenReception przed wersją 1.0.2 ma podatność w punkcie końcowym `/api/log`, który akceptuje nieuwierzytelnione żądania POST, nie stosuje walidacji schematu do treści wiadomości, zapisuje treść kontrolowaną przez atakującego bezpośrednio do dziennika stdout aplikacji, interpretuje znaki nowej linii jako rzeczywiste przerwy linii i nie egzekwuje limitów rozmiaru ani szybkości. Istnieją trzy tryby nadużycia: wstrzykiwanie logów (fałszowanie wpisów logów), DoS przez zalanie logów (setki żądań na sekundę) oraz przesyłanie bardzo dużych danych (100 KB). Najbardziej szkodliwy jest wstrzykiwanie logów, umożliwiające atakującemu wstrzyknięcie fałszywych wpisów, które operator może pomylić z prawdziwymi błędami systemowymi, maskując własną aktywność lub zanieczyszczając reguły alertów SIEM. Wersja 1.0.2 naprawia problem.
- CVE-2026-48082Niskie
OpenReception przed wersją 1.0.6 ma zbyt słaby proof-of-work (16 bitów) w endpointcie bootstrap-challenge, co pozwala na łatwe obejście rate-limitu i automatyzację ataków na proces rezerwacji.
- CVE-2026-48081Wysokie
Przed wersją 1.0.2 oprogramowania OpenReception do rezerwacji wizyt, administrator dzierżawy (TENANT_ADMIN) może zapisać adresy URL `javascript:` w konfiguracji linków (`website`, `imprint`, `privacyStatement`). Te wartości są zwracane na stronę pacjenta przez `/api/public`, osadzane w komponencie SvelteKit Button i renderowane jako `<a href="javascript:...">` bez filtrowania schematu URL. Kliknięcie takiego linku przez pacjenta powoduje wykonanie skryptu atakującego w przeglądarce pacjenta, gdzie dane formularza są odczytywane przed szyfrowaniem po stronie klienta.
- CVE-2026-48080Wysokie
Podatność w OpenReception przed wersją 1.0.2 ujawnia pełny rekord dzierżawcy (tenant) przez endpoint `GET /api/tenants/{id}` każdemu uwierzytelnionemu administratorowi tego dzierżawcy, w tym pole `databaseUrl` zawierające string połączenia z bazą PostgreSQL. W domyślnym wdrożeniu docker-compose string zawiera użytkownika `postgres` z uprawnieniami superusera i hasło w plaintext, co pozwala na pełny dostęp do wszystkich baz danych w instancji PostgreSQL.
- CVE-2026-48079Wysokie
Przed wersją 1.0.2 OpenReception, podczas nawigacji do strony `/logout`, handler ładowania po stronie serwera usuwa ciasteczko `access_token` przed wywołaniem `/api/auth/logout` przez wewnętrzny `event.fetch()`. Wewnętrzne żądanie jest wykonywane bez ciasteczka uwierzytelniającego, więc `apiAuthHandle` odrzuca je, handler wylogowania nie wykonuje się, a `SessionService.revokeSession()` nie jest wywoływany dla bieżącej sesji. Sesja w bazie danych pozostaje ważna do naturalnego wygaśnięcia (domyślnie tydzień). Użytkownik widzi poprawne wylogowanie (ciasteczko usunięte, UI wraca do logowania), ale każda strona posiadająca kopię usuniętego tokena może kontynuować uwierzytelnione wywołania API do naturalnego wygaśnięcia sesji.
Oryginalny opis (angielski, źródło NVD)
OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Prior to version 1.0.4, the PIN-type challenge throttle uses `emailHash` as the only key. The throttle rows live in the central `challenge_throttle` table, which is shared across all tenants. Every tenant's `/api/tenants/{id}/appointments/verify-challenge` endpoint increments the same row when a PIN response fails, and every tenant's `/api/tenants/{id}/appointments/challenge` endpoint reads the same row when deciding whether to issue a new challenge. When the same `emailHash` exists in multiple tenants on the same OpenReception instance (the same patient holding tunnels in two different clinics that share the platform), an attacker who knows the patient's email can lock out that patient on tenant B by issuing failed challenge responses against tenant A. The attacker needs no relationship to tenant B; the lockout propagates through the shared throttle row. The lockout escalates with repeated failures. The first lockout triggers at 4 failed attempts and lasts approximately 60 seconds. Subsequent failures escalate the lockout duration to 5 minutes, 30 minutes, and 60 minutes per the throttle service's escalation logic. Repeated bursts produce sustained denial of service against the targeted email. Version 1.0.4 patches the issue.

