Description
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.
Published: 2026-08-24
Score: 8.4 High
EPSS: < 1% Very Low
KEV: No
Impact: Internal Resource Exposure via SSRF
Action: Patch Immediately
AI Analysis

Impact

Hi.Events verifies a webhook destination only when the webhook is first registered. The validation routine resolves the hostname and rejects private or reserved ranges, but the resolution is performed only once and any public hostname passes. When the webhook is later dispatched, the stored URL is called through the spatie/laravel-webhook-server library without repeating the host check, and Guzzle’s default configuration allows redirects to be followed. If the destination URL or one of its redirect hops points to a loopback, private, or cloud metadata address, the server will issue a request to that internal host. The response from the internal service is not discarded; it is logged by the WebhookResponseHandlerService and made available through the webhook logs endpoint, effectively leaking the internal content to the entity that requested the logs.

Affected Systems

Hi.Events is compromised in all releases before 1.11.1-beta; both event and organizer webhook routes use the same validation and dispatch logic. The affected vendor is HiEventsDev, and the mechanism is implemented across all webhook endpoints that rely on the spatie/laravel-webhook-server library.

Risk and Exploitability

The CVSS score of 8.4 classifies this flaw as high severity, although no EPSS score is published and it is not listed in the CISA KEV catalog. The likelihood of exploitation depends on an attacker’s ability to register or modify a webhook destination; the vendor’s documentation implies that authenticated users can create or update webhooks, so the likely attack surface is through such authenticated access, which is an inference based on the description. Once a malicious URL is registered, the server will perform the internal request, log the response, and expose it via the logs endpoint. The vendor’s 1.11.1-beta release revalidates URLs at dispatch, pins the validated address, checks each redirect hop, and disables unsafe IPv6 transition addresses, thereby eliminating the attack path.

Generated by OpenCVE AI on August 24, 2026 at 20:49 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Hi.Events to version 1.11.1-beta or newer, which revalidates webhook destinations at dispatch and blocks unsafe redirects
  • If an upgrade is not immediately possible, configure the webhook server or the Guzzle client to disable redirect following or to restrict accepted destinations to trusted external domains
  • Continuously monitor webhook logs for unexpected internal requests or responses to detect potential misuse

Generated by OpenCVE AI on August 24, 2026 at 20:49 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 27 Aug 2026 14:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 24 Aug 2026 18:00:00 +0000

Type Values Removed Values Added
Description 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.
Title Hi.Events before 1.11.1-beta Server-Side Request Forgery via Unvalidated Webhook Redirects
First Time appeared Hi.events
Hi.events hi.events
Weaknesses CWE-918
CPEs cpe:2.3:a:hi.events:hi.events:*:*:*:*:*:*:*:*
Vendors & Products Hi.events
Hi.events hi.events
References
Metrics cvssV3_1

{'score': 8.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N'}

cvssV4_0

{'score': 8.4, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N'}


Subscriptions

Hi.events Hi.events
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-29T11:47:50.490Z

Reserved: 2026-08-19T20:34:00.155Z

Link: CVE-2026-76838

cve-icon Vulnrichment

Updated: 2026-08-27T13:54:38.391Z

cve-icon NVD

Status : Deferred

Published: 2026-08-24T18:17:22.363

Modified: 2026-09-08T20:23:49.880

Link: CVE-2026-76838

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-24T21:00:13Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)