Katalog CVE

CVE-2026-76838

WysokieCVSS 8.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.31%

Percentyl 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
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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS