CVE-2026-76838

Hi.Events before 1.11.1-beta Server-Side Request Forgery via Unvalidated Webhook Redirects

Published Aug 24, 2026 CVSS 4.0 · 8.4 High EPSS < 1% KEV · Not listed
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.

Analysis

AI-generated

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

Remediation

No solution or workaround provided in the CVE record.

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 available
History
Type Values Removed Values Added
Metrics ssvc

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

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'}

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)

Sources

Status
PUBLISHED
Assigner
VulnCheck
Published
Updated
Aug 29, 2026, 11:47 AM
Reserved
Aug 19, 2026, 8:34 PM
Status
Deferred
Published
Aug 24, 2026, 6:17 PM
Modified
Oct 12, 2026, 3:10 PM