Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister webhook with crafted NAT64/6to4 hostname
-
DeliveryDNS resolves to IPv6 transition address
-
Exploitis_global check passes (IANA-routable prefix)
-
ExecutionApplication fires webhook on vulnerability event
-
PersistNAT64 gateway translates to embedded private IPv4
-
ImpactInternal endpoint response exfiltrated to attacker
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 must be running the unreleased HEAD version of vulnerability-lookup; no tagged release is vulnerable. The attacker must be able to register a webhook in the application - the CVSS 4.0 vector specifies PR:N (no privileges required), but whether anonymous webhook registration is permitted in a given deployment depends on site-specific access control configuration not described in the advisory; this should be verified against the actual deployment. The network path from the application server must support IPv6 or have a NAT64/6to4 gateway for the transition address to successfully forward to the intended private IPv4 target; on IPv4-only networks with no transition infrastructure, the embedded IPv4 may not be reachable, limiting practical exploitation. The target internal service must be reachable and return exploitable data via HTTP(S) from the application server. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N, score 6.9) signals a low-complexity, network-reachable, unauthenticated path with limited confidentiality impact on both the vulnerable system and reachable subsequent systems. In practice, real-world risk is substantially bounded by the deployment constraint: only organizations running the untagged HEAD branch are exposed, which is a small subset of an already niche user base. The SC:L metric reflects the SSRF's ability to reach internal services - a particularly sensitive concern for vulnerability-lookup deployments co-located with internal infrastructure or cloud services that expose metadata at 169.254.169.254. This is not in CISA KEV and no public exploit code has been identified, consistent with its narrow blast radius. EPSS data was not provided in the input and cannot be cited. The risk calculus for HEAD-running operators is elevated relative to the raw score because internal vulnerability data and cloud credentials are plausible exfiltration targets; for everyone else, this is a non-issue. |
| Exploit ScenarioDerived | An attacker with access to webhook registration crafts a hostname under their control configured to resolve to the NAT64 address |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 10, 2026
SSRF guard bypass in Vulnerability Lookup's webhook notification subsystem allows a network attacker to register a webhook URL whose hostname resolves to an IPv6 transition address (NAT64, 6to4, Teredo, or IPv4-mapped), causing the application to issue server-side requests to private, loopback, or cloud metadata endpoints that should be blocked. The flaw stems from relying solely on Python's is_global property, which correctly returns True for IANA-routable transition prefixes but fails to inspect the private IPv4 address embedded within them. Exposure is strictly limited to organizations running the unreleased HEAD version of the application; no tagged release is affected, no public exploit has been identified, and the upstream fix has already landed.
RemediationAI
Organizations running the HEAD version of vulnerability-lookup should update to the latest HEAD commit, which incorporates the upstream fix at https://github.com/vulnerability-lookup/vulnerability-lookup/commit/f3e0c6899c5b3823dcfd860fc6cb3edbedc9bf65. The patch adds an _embedded_ipv4() helper and a post-resolution check that extracts the IPv4 address embedded in NAT64, 6to4, Teredo, and IPv4-mapped IPv6 addresses and rejects those embedding non-global IPv4 targets. As a compensating control before patching, administrators can disable webhook functionality entirely, eliminating the attack surface with no impact on core vulnerability-lookup query features. Alternatively, network-level egress ACLs that block the application server from reaching RFC 1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback (127.0.0.0/8), and link-local (169.254.0.0/16) ranges will limit what an attacker can reach via a successful SSRF, though this is a defense-in-depth measure and not a fix for the bypass itself.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerable code resides in website/notifications/webhooks.py within the vulnerability-lookup application (CPE: cpe:2.3:a:vulnerability-lookup:vulnerability-lookup:*:*:*:*:*:*:*:*), a CIRCL-maintained open-source platform for aggregating and querying vulnerability intelligence. The root cause is CWE-918 (Server-Side Request Forgery): the validate_url() function resolves the webhook hostname via socket.getaddrinfo and then evaluates ipaddress.ip_address(resolved).is_global to screen out internal targets. Python's is_global faithfully reflects IANA routing policy - NAT64 (64:ff9b::/96), 6to4 (2002::/16), Teredo (2001:0000::/32), and IPv4-mapped (::ffff:0:0/96) prefixes are all globally routable at the IPv6 layer - but on NAT64- or 6to4-capable networks the underlying transport unwraps the embedded IPv4 and forwards the packet to whichever private, loopback, or link-local address is encoded in the low-order bits. The fix, committed at f3e0c6899c5b3823dcfd860fc6cb3edbedc9bf65, introduces an _embedded_ipv4() helper that extracts the embedded IPv4 from all four transition families and applies a second is_global check to each extracted address before allowing the webhook to proceed.
Know when Vulnerability Lookup 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:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N
Network-reachable SSRF with no privileges per provided vector; scope changes to internal systems (S:C), with confidentiality-only impact from reading internal HTTP responses.
Primary rating from Vendor (CIRCL).
CVSS VectorVendor: CIRCL
DescriptionCVE.org
The webhook URL validator in website/notifications/webhooks.py uses ip.is_global to reject non-public addresses after DNS resolution. IPv6 transition addresses (NAT64 64:ff9b::/96, 6to4 2002::/16, Teredo 2001:0000::/32) are classified as globally routable by IANA, so is_global returns True even when the embedded IPv4 targets a private, loopback, or cloud metadata destination. An attacker can register a webhook pointing at a hostname that resolves to a transition address to bypass the SSRF guard and exfiltrate vulnerability data to an internal endpoint.
The vulnerability was introduced on a non-release version. The fix was already done on HEAD. It only affects
organisation running the HEAD.
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.
Affected Products (CPE)CVE.org
More in Vulnerability Lookup
View allToken replay in Vulnerability-Lookup's account activation and password-recovery mechanism allows an attacker who capture
Time-of-check-to-time-of-use race condition in the account recovery endpoint of vulnerability-lookup (/user/confirm_acco
Stored cross-site scripting in Vulnerability-Lookup's render_tag_badges Jinja filter allows an authenticated user holdin
Inconsistent authorization enforcement in Vulnerability-Lookup's SSE streaming interface allows self-registered but unco
Server-side request forgery in Vulnerability-Lookup's remote-instance synchronization feature enables an authenticated a
EUVD-2026-55637
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB