---
id: CVE-2026-80350
title: >-
  OneUptime's webhook target check rejects private and loopback addresses given
  in IPv4 form and a small set of IPv6 forms, but has no case for the
  IPv4-mapped IPv6 range
summary: >-
  OneUptime's webhook target check rejects private and loopback addresses given
  in IPv4 form and a small set of IPv6 forms, but has no case for the
  IPv4-mapped IPv6 range. The webhook delivery path calls
  SSRFProtection.validateWebhookTarge…
severity: high
cvss: 7.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N'
cwe:
  - CWE-918
published: '2026-08-26'
updated: '2026-09-16'
sourceUpdated: '2026-09-16T13:42:45.393'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-80350'
references:
  - url: 'https://github.com/OneUptime/oneuptime'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/OneUptime/oneuptime/blob/12.0.6/Common/Server/Utils/SSRFProtection.ts
    label: disclosure@vulncheck.com
  - url: 'https://github.com/OneUptime/oneuptime/issues/2578'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/OneUptime/oneuptime/security/advisories/GHSA-9g3w-r349-3vvw
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/oneuptime-before-12.0.7-server-side-request-forgery-via-ipv4-mapped-ipv6-webhook-url
    label: disclosure@vulncheck.com
  - url: 'https://github.com/OneUptime/oneuptime/issues/2578'
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
  - url: >-
      https://github.com/OneUptime/oneuptime/security/advisories/GHSA-9g3w-r349-3vvw
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
tags:
  - nvd
epss: 0.00401
epssPercentile: 0.31647
ingestedAt: '2026-09-16T13:56:12.598Z'
---

## Overview

OneUptime's webhook target check rejects private and loopback addresses given in IPv4 form and a small set of IPv6 forms, but has no case for the IPv4-mapped IPv6 range. The webhook delivery path calls SSRFProtection.validateWebhookTargetIsSafe, and the host-literal screening inside Common/Server/Utils/SSRFProtection.ts, performed by isBlockedHostnameLiteral, rejects private and loopback IPv4 ranges and tests an IPv6 value against the unspecified address, the loopback, the link-local prefix and the unique-local prefixes. A value such as [::ffff:127.0.0.1] matches none of them. The value is also recognised as an address literal rather than a name, so the path that re-checks addresses obtained from resolution is not taken. The HTTP client treats the mapped form as the embedded IPv4 address and connects to it, so an authenticated project member who can configure a webhook can direct the server at loopback services, private network ranges and link-local metadata endpoints, and the response is recorded where the webhook result can be read. Version 12.0.7 adds handling for the mapped range.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
