Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate to Memos with low-privilege account
-
DeliveryRegister attacker-controlled domain with 1-second TTL pointing to public IP
-
ExploitCreate Memos webhook targeting attacker domain
-
InstallDNS TTL expires; update DNS record to internal target IP
-
C2Trigger webhook dispatch event
-
ExecutesafeDialContext() validates public IP, DialContext() re-resolves to internal IP
-
ImpactMemos connects to internal host, exfiltrating response
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
|
| Exploitation Conditions | Exploitation requires the attacker to hold a low-privilege Memos user account with permission to create or modify webhook configurations (PR:L per CVSS). The webhook feature must be enabled and accessible to the attacker's account - in single-user Memos instances where the only user is also the administrator, the risk surface is limited to self-compromise. The attacker must additionally control a domain with a custom authoritative DNS server capable of serving different responses across two rapid successive queries (a short-TTL DNS rebinding setup). The timing window between safeDialContext()'s LookupHost() call and the subsequent DialContext() DNS re-resolution must be won; this window is implementation-dependent but typically milliseconds to low-second range. Exploitation is limited to Memos instances with multi-user access or where low-trust users can reach the webhook configuration UI. It does not require any specific non-default Memos configuration beyond webhook availability. |
| Impact | The vendor-assigned CVSS 3.1 score of 8.5 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N) accurately captures the network reach, scope change, and high confidentiality impact, but the AC:L designation warrants scrutiny. DNS rebinding attacks are not trivially reproducible - they require the attacker to control a domain with an authoritative DNS server capable of serving short-TTL responses and precise timing to win the TOCTOU race window. In practice, this raises the effective attack complexity above what AC:L implies. An independent assessment of AC:H is more accurate for this vulnerability class. No EPSS data was provided in source intelligence, and no CISA KEV listing exists, indicating no confirmed widespread exploitation at time of analysis. The realistic risk is elevated in Memos deployments that expose the webhook feature to untrusted or semi-trusted users (e.g., multi-tenant or team instances), since PR:L means any Memos account with webhook creation access is a potential attacker. Single-user or isolated deployments are significantly less exposed. The S:C flag correctly reflects that a successful exploit extends impact beyond the Memos process itself to internal network hosts. |
| Exploit ScenarioDerived | An attacker with a Memos account registers an internet-facing domain (e.g., attacker.example) with a very short DNS TTL (e.g., 1 second) pointing to a legitimate public IP. They configure a Memos webhook pointing to this domain, which passes safeDialContext()'s validation since the resolved IP is non-reserved. Immediately before the webhook fires, the attacker updates the DNS record to resolve to an internal address (e.g., 192.168.1.1 - a router or internal API server). When net.Dialer.DialContext() performs its own lookup, it receives the internal IP and Memos connects to the internal target, allowing the attacker to probe or interact with internal services. No public POC was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 05, 2026
DNS rebinding bypass of SSRF protection in Memos' webhook dispatcher allows a low-privileged authenticated attacker to reach internal network resources by exploiting a time-of-check/time-of-use race in hostname resolution. The safeDialContext() function in internal/webhook/webhook.go validates the resolved IP against reserved ranges but then re-dials using the original hostname, allowing the underlying net.Dialer.DialContext() to perform a second, independent DNS lookup that the attacker controls. By setting a short TTL on an attacker-controlled domain and swapping the DNS response between validation and dial, an attacker can cause Memos to connect to arbitrary internal addresses. No public exploit or CISA KEV listing has been identified at time of analysis, but the scope change (S:C) and high confidentiality impact reflect the risk of internal service enumeration and data exfiltration.
RemediationAI
The definitive fix requires that after the initial DNS validation resolves a hostname to an approved IP, the application must dial that specific validated IP address directly rather than re-passing the original hostname to the dialer. In Go, this means substituting the validated IP for the hostname in the dial target (e.g., using net.JoinHostPort(validatedIP, port) rather than net.JoinHostPort(host, port)) so that net.Dialer.DialContext() cannot perform an independent DNS lookup. No patched release version was confirmed in the available references - the upstream fix status should be tracked at https://github.com/usememos/memos. As a compensating control pending a patch, operators can restrict webhook creation permissions to fully trusted administrators only, reducing the PR:L attack surface. Additionally, deploying Memos behind a network egress filter (e.g., an HTTP proxy with an allowlist or an iptables rule blocking outbound connections to RFC-1918 ranges from the Memos process) would limit what internal resources are reachable even if the SSRF bypass is triggered. Note that egress filtering at the network layer is a defense-in-depth measure and does not address the root cause.
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
Memos is an open-source, self-hosted note and memo application (cpe:2.3:a:usememos:memos:*:*:*:*:*:*:*:*). Its webhook feature dispatches HTTP requests to user-configured URLs via a Go function safeDialContext() located at internal/webhook/webhook.go. The function attempts to enforce an SSRF safeguard by calling net.DefaultResolver.LookupHost() on the target hostname and comparing the returned IPs against RFC-1918 and other reserved ranges. However, after validation, it reconstructs the dial target using net.JoinHostPort(host, port) - the original hostname string - and passes this to net.Dialer.DialContext(), which performs its own fresh DNS resolution. This constitutes a classic CWE-367 (Time-of-Check Time-of-Use) race condition: the DNS answer used for the security check is not guaranteed to match the answer used at dial time. An attacker controlling a domain's DNS (e.g., via a short TTL and a custom authoritative nameserver) can exploit this gap to cause Memos to connect to an internal address that was never validated.
Know when Memos 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
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N
DNS rebinding requires controlling authoritative DNS and winning a timing race, justifying AC:H over the vendor's AC:L; PR:L retained as webhook creation requires authentication.
Primary rating from Vendor (TuranSec).
CVSS VectorVendor: TuranSec
DescriptionCVE.org
Memos' webhook dispatch function safeDialContext() (internal/webhook/webhook.go) resolves the target hostname via net.DefaultResolver.LookupHost() and validates the resulting IPs against reserved ranges, but then dials net.JoinHostPort(host, port) using the original hostname rather than the already-validated IP address. Because net.Dialer.DialContext() performs its own independent DNS resolution, an attacker controlling DNS for the webhook's hostname (e.g. via a short TTL) can return a public, allowed IP during validation and a different, internal IP at dial time - a classic time-of-check/time-of-use DNS-rebinding bypass of the SSRF protection.
Executive ViewAI
Memos webhook dispatcher contains a DNS rebinding vulnerability (CVE-2026-71272) enabling authenticated users to bypass SSRF protections and access internal network resources. Attackers could enumerate sensitive internal systems and exfiltrate data without requiring elevated privileges. This threatens organizations using Memos that have network connectivity to critical infrastructure.
Restrict Memos outbound network access via firewall rules to whitelisted destinations; disable webhook functionality if operationally feasible; implement DNS pinning or DNSSEC validation; segment Memos network access from sensitive systems; establish alerting on suspicious webhook dispatcher activity.
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.
elestio memos v0.23.0 is vulnerable to Server-Side Request Forgery (SSRF) due to insufficient validation of user-supplie
Authorization Bypass Through User-Controlled Key in GitHub repository usememos/memos prior to 0.9.0. Rated critical seve
Cross-site Scripting (XSS) - Stored in GitHub repository usememos/memos prior to 0.9.1. Rated critical severity (CVSS 9.
Cross-site Scripting (XSS) - Stored in GitHub repository usememos/memos prior to 0.9.1. Rated critical severity (CVSS 9.
Cross-Site Request Forgery (CSRF) in GitHub repository usememos/memos prior to 0.15.1. Rated high severity (CVSS 8.8), t
Improper Privilege Management in GitHub repository usememos/memos prior to 0.13.2. Rated high severity (CVSS 8.8), this
Cross-Site Request Forgery (CSRF) in GitHub repository usememos/memos prior to 0.9.1. Rated high severity (CVSS 8.8), th
Improper Access Control in GitHub repository usememos/memos prior to 0.9.1. Rated high severity (CVSS 8.8), this vulnera
Improper Privilege Management in GitHub repository usememos/memos prior to 0.9.1. Rated high severity (CVSS 8.8), this v
Authorization Bypass Through User-Controlled Key in GitHub repository usememos/memos prior to 0.9.1. Rated high severity
Improper Access Control in GitHub repository usememos/memos prior to 0.9.0. Rated high severity (CVSS 8.8), this vulnera
Improper Authorization in GitHub repository usememos/memos prior to 0.9.0. Rated high severity (CVSS 8.8), this vulnerab
EUVD-2026-53357
GHSA-w8cc-xr9f-mrh7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB