Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify app using lancet SSRF guard
-
DeliveryCraft hostname resolving to IPv6 transition/private address
-
ExploitSubmit URL bypassing IsInternalIP check
-
ExecutionServer fetches internal/metadata endpoint
-
ImpactExfiltrate internal data or cloud credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The target application must (a) use lancet netutil.IsInternalIP (vulnerable versions 1.3.1-1.4.6 or 2.1.2-2.3.9) as its SSRF allow/deny decision, and (b) accept attacker-controlled hostnames or URLs and fetch them server-side. Exploitation specifically requires supplying addresses the pre-patch logic misclassifies as external: IPv6 ULA private (fd00::/8), link-local (fe80::/10), RFC 6598 CGNAT (100.64.0.0/10), or transition encodings embedding internal IPv4 - NAT64 (64:ff9b::/96), 6to4 (2002::/16), or Teredo (2001:0::/32). Limiting factors: exploitation is bounded by the consuming app actually relying on this function (a library dependency, not a standalone service), the need for the internal/metadata target to be reachable over the chosen address form, and SSVC Automatable=no, indicating it is not reliably scriptable at scale. |
| Impact | Signals point to a genuine but moderate-priority issue rather than an emergency. The vendor CVSS 4.0 score is 6.3 (MEDIUM) with AV:N/AC:L/AT:P/PR:N/UI:N, meaning network-reachable and unauthenticated, but the AT:P (Attack Requirements: Present) flag signals that exploitation depends on specific preconditions - namely that the consuming application uses lancet's netutil.IsInternalIP as its SSRF guard and processes attacker-controlled IPv6/transition hostnames. The vulnerable library itself takes no direct impact (VC:N/VI:N/VA:N); the scored harm is to the subsequent/internal system (SC:L/SI:L), which is exactly the SSRF pivot behavior. SSVC corroborates a measured risk profile: Exploitation=poc (proof-of-concept exists, not confirmed in-the-wild), Automatable=no (not suitable for mass/scripted exploitation), Technical Impact=partial. This is NOT in CISA KEV, so there is no evidence of active exploitation. No EPSS score was provided, so exploitation probability cannot be quantified from the input. Net assessment: this is a real defense-in-depth bypass worth patching promptly in any service that relies on lancet for SSRF filtering, but the Automatable=no rating and the library-dependency precondition argue against treating it as a widespread, drive-by-exploitable CVE. |
| Exploit ScenarioDerived | A web application uses lancet's netutil.IsInternalIP to block SSRF by rejecting user-supplied URLs that resolve to internal addresses. An attacker submits a hostname resolving to an IPv6 transition address such as a NAT64 (64:ff9b::a9fe:a9fe) or 6to4/Teredo form embedding an internal IPv4, which the flawed check misclassifies as external and allows. The server then connects to the internal target - for example 169.254.169.254 cloud metadata - returning credentials or internal data. Proof-of-concept exploit code exists (per SSVC poc rating and the VulnCheck advisory). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
SSRF protection bypass in the Lancet Go library's netutil.IsInternalIP allows applications that use this helper as their allow/deny filter to fetch internal services and cloud metadata endpoints via IPv6 and transition address forms the function misclassifies as external. Affected releases are Lancet 1.3.1 through 1.4.6 and 2.1.2 through 2.3.9; the function must be consumed by a server-side fetch path that accepts attacker-controlled hostnames, which is why the issue is assessed as moderate priority rather than emergency (CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N, CVSS 4.0 base 6.3). Publicly available exploit code exists (SSVC Exploitation: poc) and an unauthenticated, remote attacker providing hostnames that resolve to fd00::/8, fe80::/10, 100.64.0.0/10, or NAT64/6to4/Teredo encodings of internal IPv4 can reach otherwise unreachable targets; exploitation is not reliably automatable at scale (SSVC Automatable: no) and no confirmed active exploitation (CISA KEV) has been reported.
RemediationAI
Upstream fix available (commit 835111c832939a85416d686a1e99d5fe7060c9b4 and PR #357, tracked in issue #356); released patched version not independently confirmed, so the safest action is to update to the first Lancet release that contains this commit or, until that tag is published, pin the fixed commit explicitly or replace netutil.IsInternalIP with your own hardened check. Source references: https://github.com/duke-git/lancet/commit/835111c832939a85416d686a1e99d5fe7060c9b4, https://github.com/duke-git/lancet/pull/357, https://github.com/duke-git/lancet/issues/356, https://www.vulncheck.com/advisories/lancet-through-2.3.9-ssrf-protection-bypass-via-netutil-isinternalip. Where upgrading is not immediately possible, replace the library call with a deny-list that rejects fd00::/8, fe80::/10, ::ffff:0:0/96 IPv4-mapped addresses, 100.64.0.0/10 CGNAT, and the transition prefixes 64:ff9b::/96 (NAT64), 2002::/16 (6to4) and 2001:0::/32 (Teredo) after extracting any embedded IPv4 and re-testing it; the trade-off is that a strict deny-list will also block legitimate IPv6 or carrier-grade-NAT destinations, so pair it with an explicit outbound allow-list. Additional layered controls: resolve the hostname first and validate every returned address immediately before connecting (defeats DNS rebinding and TOCTOU gaps), force IMDSv2 or otherwise disable instance metadata access and explicitly block 169.254.169.254 and fd00:ec2::254 at the network layer (this may break cloud SDK features that legitimately use metadata), and restrict egress from the fetching service to only the required external hosts, accepting the added maintenance and potential breakage of unlisted integrations.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Lancet is a general-purpose Go utility library, and its netutil package exposes IsInternalIP/IsPublicIP as a convenience check that developers commonly wire into SSRF guards before making outbound HTTP requests. The pre-patch implementation (netutil/net.go lines 158-170 in v1.4.6 and 192-205 in v2.3.9) only tested IP.IsLoopback() plus a hand-rolled IPv4 deny-list covering 10/8, 172.16/12, 169.254/16 and 192.168/16, leaving a large blind spot mapped to CWE-918 (Server-Side Request Forgery). It never consulted Go's net.IP.IsPrivate()/IsLinkLocalUnicast(), so IPv6 unique-local (fd00::/8), IPv6 link-local (fe80::/10) and IPv4-mapped-IPv6 (::ffff:a.b.c.d) addresses passed as 'external'; it also omitted RFC 6598 carrier-grade NAT space (100.64.0.0/10, including the AWS metadata equivalent of 169.254.169.254) and IPv4-in-IPv6 transition encodings - NAT64 64:ff9b::/96, 6to4 2002::/16, and Teredo 2001:0::/32 which XORs the embedded IPv4 with 0xff. The upstream fix (commit 835111c832939a85416d686a1e99d5fe7060c9b4, PR #357, issue #356) extends the check to IsPrivate/IsLinkLocalUnicast, adds the RFC 6598 range via the 100.64/10 bitmask test, and introduces a helper that extracts and re-tests the embedded IPv4 for each transition prefix, with regression tests covering fd12:3456:789a::1, fe80::1, 100.64.0.1/100.127.255.255, ::ffff:192.168.0.1, 64:ff9b::a9fe:a9fe, 2002:7f00:1::1 and 2001::80ff:fffe while correctly leaving 100.63.255.255, 100.128.0.1, 64:ff9b::808:808, 2002:808:808::1 and 2001:db8::1 as public.
Know when Golang gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Network-reachable and unauthenticated, but AC:H because it depends on the app using this guard and crafting valid transition addresses; S:C with C:L/I:L reflects the SSRF pivot to internal systems, A:N as no availability impact.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
Lancet through 2.3.9 contains an SSRF protection bypass vulnerability in netutil.IsInternalIP that misclassifies IPv6 private, link-local, CGNAT and transition addresses as external. Attackers can supply hostnames resolving to these address forms, including NAT64, 6to4 or Teredo embedding internal IPv4, to reach internal services or cloud metadata endpoints.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot
The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there
Erugo file-sharing platform up to version 0.2.14 has a CVSS 10.0 path traversal allowing authenticated users to read any
Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu
WAGO PFC200 G2 PLC (firmware affected) allows privilege escalation through cookie manipulation. Users can modify cookie
Authentication bypass in WeGIA charitable institution management system before 3.6.5. The adicionar_tipo_docs_atendido.p
CGI path splitting vulnerability in FrankenPHP before 1.11.2 — Unicode characters bypass path validation during CGI proc
net/url in Go before 1.11.13 and 1.12.x before 1.12.8 mishandles malformed hosts in URLs, leading to an authorization by
Free5gc NRF 1.4.0 has an authorization bypass in access token generation that allows authenticated users to request toke
Algo 8028 Control Panel version 3.3.3 contains a command injection vulnerability in the fm-data.lua endpoint that allows
Denial of service in PocketBase versions prior to 0.22.48 (0.22.x branch) and 0.23.0 through 0.39.6 (0.23.0+ branch) all
EUVD-2026-99024
GHSA-q6h5-5jp8-6c7q
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB