CVE-2026-76838

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

No configuration.

History

12 Oct 2026, 15:10

Type Values Removed Values Added
Summary
  • (es) Hi.Events valida un destino de webhook solo cuyo se registra, nunca cuyo se usa. NoInternalUrlRule en backend/app/Validators/Rules/NoInternalUrlRule.php resuelve el nombre de host con gethostbyname() y rechaza rangos privados y reservados, lo que cualquier nombre de host público pasa. En el envío, WebhookDispatchService toma la URL almacenada y la llama a través de spatie/laravel-webhook-server sin repetir la verificación, y backend/config/webhook-server.php no establece opciones de Guzzle, por lo que el seguimiento de redirecciones permanece habilitado por defecto. Un destino que responde con una redirección a una dirección de loopback, privada o de metadatos en la nube, por lo tanto, hace que el servidor emita esa solicitud, y cambiar el registro DNS del nombre de host después del registro alcanza el mismo resultado porque no se repite ninguna resolución. La respuesta no se descarta: WebhookResponseHylerService almacena el cuerpo en el registro del webhook y WebhookLogResource lo devuelve desde el endpoint de registros de webhook, por lo que el solicitante lee lo que respondió el servicio interno en lugar de inferirlo. Tanto los webhooks de eventos como los de organizadores comparten la regla y la ruta de envío. La versión 1.11.1-beta revalida en el envío, fija la dirección validada, verifica cada salto de redirección y decodifica direcciones de transición IPv6 que previamente eludieron el filtro.

Information

Published : 2026-08-24 18:17

Updated : 2026-10-12 15:10


NVD link : CVE-2026-76838

Mitre link : CVE-2026-76838

CVE.ORG link : CVE-2026-76838


JSON object : View

Products Affected

No product.

CWE
CWE-918

Server-Side Request Forgery (SSRF)