CVE-2026-76838
WysokieCVSS 8.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 23 - wyżej niż 23% wszystkich znanych CVE
Streszczenie
Hi.Events weryfikuje miejsce docelowe webhooka tylko podczas rejestracji, nigdy podczas użycia. Reguła NoInternalUrlRule rozwiązuje nazwę hosta za pomocą gethostbyname() i odrzuca prywatne i zastrzeżone zakresy, ale każda publiczna nazwa hosta przechodzi. Podczas wysyłki WebhookDispatchService wywołuje zapisany adres URL bez ponownego sprawdzania, a przekierowania są domyślnie włączone. Miejsce docelowe, które odpowiada przekierowaniem do adresu loopback, prywatnego lub metadanych chmury, powoduje, że serwer wysyła takie żądanie, a zmiana rekordu DNS po rejestracji daje ten sam efekt. Odpowiedź nie jest odrzucana: WebhookResponseHandlerService przechowuje treść w logu webhooka, a WebhookLogResource zwraca ją z punktu końcowego logów, więc żądający odczytuje odpowiedź wewnętrznego serwisu. Wersja 1.11.1-beta ponownie weryfikuje przy wysyłce, przypina zweryfikowany adres, sprawdza każdy przeskok przekierowania i dekoduje adresy przejściowe IPv6, które wcześniej omijały filtr.
Ocena ryzyka
Ryzyko obejmuje możliwość wysyłania żądań do wewnętrznych usług, takich jak metadane chmury, co może prowadzić do ujawnienia wrażliwych danych lub eskalacji uprawnień.
Rekomendacja
Zaleca się natychmiastową aktualizację Hi.Events do wersji 1.11.1-beta lub nowszej oraz wdrożenie dodatkowych kontroli bezpieczeństwa dla webhooków.
Inne podatności w Hi.Events
Zobacz wszystkie- CVE-2026-60119Średnie
Podatność XSS w Hi.Events przed wersją 1.11.0 pozwala uwierzytelnionym atakującym z uprawnieniami do tworzenia lub edycji wydarzeń na wstrzyknięcie dowolnego kodu HTML i JavaScript poprzez osadzenie złośliwego tytułu wydarzenia zawierającego sekwencję </script>, która nie jest poprawnie escapowana przez JSON.stringify() w osadzonych skryptach inline. Atakujący może stworzyć tytuł wydarzenia, który wychodzi poza kontekst skryptu w bloku danych strukturalnych application/ld+json lub stanie odtworzonym po stronie serwera, powodując wykonanie ładunku w przeglądarce każdego użytkownika odwiedzającego publiczną stronę wydarzenia, w tym nieuwierzytelnionych gości i uwierzytelnionych administratorów.
- CVE-2026-60118Średnie
Podatność w systemie Hi.Events przed wersją 1.11.0 umożliwia nieuwierzytelnionym atakującym zakup ukrytych biletów poprzez odwołanie się do ich identyfikatorów w żądaniach tworzenia zamówień. Brak kontroli dostępu po stronie serwera pozwala na enumerację sekwencyjnych identyfikatorów ukrytych biletów i zakup biletów VIP, na zaproszenie lub z rabatem, które nie były przeznaczone do publicznej sprzedaży.
- CVE-2026-57960Średnie
Podatność w systemie Hi.Events do wersji 1.9.0 umożliwia nieautoryzowany dostęp do list uczestników poprzez publiczne endpointy list kontrolnych. Wykorzystując jedynie identyfikator short_id, atakujący może odczytać pełne dane uczestników, w tym adresy e-mail i informacje osobiste, a także tworzyć lub usuwać rekordy kontrolne bez uwierzytelnienia.
- CVE-2026-57959Średnie
Podatność w systemie Hi.Events do wersji 1.9.0 umożliwia wielokrotne użycie ograniczonych kodów promocyjnych. Walidacja kodu sprawdza licznik użyć przed jego asynchronicznym zwiększeniem przez zadanie UpdateEventStatisticsJob, co pozwala atakującym na sekwencyjne rezerwowanie wielu zamówień z tym samym kodem, każde z licznikiem użyć równym 0, a następnie realizację wszystkich po obniżonej cenie.
Oryginalny opis (angielski, źródło NVD)
Hi.Events validates a webhook destination only when it is registered, never when it is used. NoInternalUrlRule in backend/app/Validators/Rules/NoInternalUrlRule.php resolves the hostname with gethostbyname() and rejects private and reserved ranges, which any public hostname passes. At dispatch, WebhookDispatchService takes the stored URL and calls it through spatie/laravel-webhook-server without repeating the check, and backend/config/webhook-server.php sets no Guzzle options, so redirect following remains enabled by default. A destination that answers with a redirect to a loopback, private or cloud metadata address therefore causes the server to issue that request, and changing the hostname's DNS record after registration reaches the same result because no resolution is repeated. The response is not discarded: WebhookResponseHandlerService stores the body on the webhook log and WebhookLogResource returns it from the webhook logs endpoint, so the requester reads what the internal service replied rather than inferring it. Both event and organizer webhooks share the rule and the dispatch path. Version 1.11.1-beta revalidates at dispatch, pins the validated address, checks every redirect hop, and decodes IPv6 transition addresses that previously bypassed the filter.

